我可以为您服务并返回一个没有指定扩展名的HTML文件。是否有任何方法可以在不定义路由的情况下实现这一点?例如,而不是使用:
/helloworld.html
我只想做
/helloworld
你可以在express.static方法中使用扩展选项。
app.use(express.static(path.join(__dirname, 'public'),{index:false,extensions:['html']}));
.html
附加到那些没有点号且公共目录中存在HTML文件的请求上:var fs = require('fs');
var publicdir = __dirname + '/public';
app.use(function(req, res, next) {
if (req.path.indexOf('.') === -1) {
var file = publicdir + req.path + '.html';
fs.exists(file, function(exists) {
if (exists)
req.url += '.html';
next();
});
}
else
next();
});
app.use(express.static(publicdir));
app.use(express.static('public',{extensions:['html']}));
index.html
文件。/hello
上服务于名为hello.html
的文件,那么我将创建一个名为hello
的文件夹,并在其中放置一个index.html文件。现在当'/hello'被调用时,express将自动提供此文件而无需扩展名。var express = require('express');
var app = express();
app.use(function(req, res, next) {
if (req.path.indexOf('.') === -1) {
res.setHeader('Content-Type', 'text/html');
}
next();
});
app.use('/', express.static(__dirname + '/public'));
app.listen(8080, function () {
console.log('App listening on port 8080!');
})
app.use(express.static(<public dir>,{extensions:['html']}))
就足够了,否则你需要访问example.com/index.html
作为example.com/index
。 - wolfram77/
提供服务的index.html后第一时间就亲身体验到了这一点,这非常出乎意料。 - Dawson B