我的问题与this stackoverflow问题非常相似。
我的目录结构为:
|-static
|---css
|---img
|---js
|-views
|---login.ejs
|---pure.html
|---dash
|-----dashboard.ejs
|-----alsopure.html
我的配置:
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/static'));
我还将路线定义为:
app.get('/login', function(req,res){
//some locals
res.render('login.ejs', locals);
});
app.get('/dash', function(req,res){
locals.date = new Date().toLocaleDateString();
res.render('dash/dashboard.ejs', locals);
});
在views文件夹中,我保留了纯静态html和动态ejs
文件。
现在,我如何从views目录中提供静态html?因为如果我要添加/ views文件夹作为静态,用户也可以看到我的ejs文件,如果他们点击了正确的URL。
由于有多个html文件,我不想为每个新页面添加新路由。
另外,有没有办法让我向我的视图引擎指出这是一个静态HTML,而且不需要“处理”这个页面?
谢谢!
答案 0 :(得分:0)
因此,您可以使用nodejs
fs
,然后路由如下:
app.get(/.*/, function(req, res, next) {
var path = __dirname + '/views/' + req.path + '.html';
if(fs.existsSync(path)) {
// Consolidate function to load html with path
}
else {
next();
}
}
或者您可以将它用作中间件:
app.use(function(req, res, next) {
var path = __dirname + '/views/' + req.path + '.html';
if(fs.existsSync(path)) {
// Consolidate function to load html with path
}
else {
next();
}
}
但我认为它会成为你的程序的膨胀:)。因为对于每个响应,它都会搜索html文件。