我目前正在我的app.js / server.js文件中提供所有html,如下所示:
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');
});
我想如果我有15个以上的html页面,这可能不是调用它们的最好方法。有没有更好的方法从另一个文件或位置提供服务,并使用导出或其他东西只能在app.js上调用一个函数或其他东西。它可能是路由的用途,但也许我不太了解它。
(添加了同一文件中的更多代码)
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')));
答案 0 :(得分:75)
您可以使用static
中间件:
app.use("/", express.static(__dirname));
服务器示例:
var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/public'));
app.listen(3000, function() { console.log('listening')});
这是文件结构:
.
├── public
│ ├── a.html
│ ├── b.html
│ └── c.html
└── server.js
文档:
答案 1 :(得分:6)
一个想法是使用一种包罗万象的路线作为最后一条路线,如下所示:
app.get('/:page', function(req, res) {
res.sendfile(path.join(__dirname, 'public', 'pages', path.basename(req.params.page) + '.html'));
});
这需要您将.html文件放入public / pages / about.html等。
您可能希望切换静态文件路由器的顺序,以便静态文件也优先于路由,除非您希望该路由捕获公共文件夹中的内容,如下所示:
应用
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);