working serve not node images files html node.js express static-files

html - serve - static files in express



¿Cuál es la mejor práctica para servir html en node.js con express.js? (2)

Podría usar el middleware static :

app.use("/", express.static(__dirname));

Un ejemplo de servidor:

var express = require(''express''); var app = express(); app.use(''/'', express.static(__dirname + ''/public'')); app.listen(3000, function() { console.log(''listening'')});

Esta es la estructura del archivo:

. ├── public │   ├── a.html │   ├── b.html │   └── c.html └── server.js

Documentación:

Actualmente estoy publicando todo mi html directamente en mi archivo app.js / server.js como este:

app.get(''/'', function(req, res) { res.render(''index.html''); }); app.get(''/about'', function(req, res) { res.render(''about.html''); }); app.get(''/projects'', function(req, res) { res.render(''projects.html''); });

Me imagino que si tengo más de 15 páginas html, probablemente esta no sea la mejor manera de llamarlas. ¿Hay una mejor manera de servirlos desde otro archivo o ubicación y utilizando exportar o algo para poder llamar a una sola función o algo en app.js. Puede ser para lo que es la ruta pero quizás no la entiendo demasiado bien.

(Se agregó más código que está en el mismo archivo)

app.set(''port'', process.env.PORT || 3000); app.set(''views'', __dirname + ''/public''); // used below code to render html files app.engine(''html'', require(''ejs'').renderFile); app.set(''view engine'', ''ejs''); app.use(express.favicon("public/img/favicon.ico")); app.use(express.logger(''dev'')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, ''public'')));


Una idea sería utilizar un tipo de ruta de catch-all como la última ruta, como la siguiente:

app.get(''/:page'', function(req, res) { res.sendfile(path.join(__dirname, ''public'', ''pages'', path.basename(req.params.page) + ''.html'')); });

Eso requeriría que pusiera sus archivos .html en public / pages / about.html, etc.

Es posible que desee cambiar el orden del enrutador de archivos estáticos para que los archivos estáticos también tengan prioridad sobre las rutas, a menos que desee que esa ruta capture cosas en la carpeta pública, como esta:

aplicación

app.set(''view engine'', ''ejs''); app.use(express.favicon("public/img/favicon.ico")); app.use(express.logger(''dev'')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.static(path.join(__dirname, ''public''))); app.use(app.router);