在我的Node / Express.js项目中,我可以全局设置views文件夹:
app.configure(function() {
app.set('views', __dirname + '/views');
.... snip ....
});
...我的所有视图模板都会进入views文件夹。
是否可以覆盖Express在请求基础上查找请求的位置?例如,如下所示:
app.get('/', function(req, res) {
res.render('index', { viewFolder: 'otherViews' });
});
我问的原因是我正在尝试复制Microsoft ASP.NET MVC的区域功能,其中每个区域都有自己的视图文件夹。
答案 0 :(得分:22)
'views'设置是根目录,因此您应该能够在层次结构中指定子文件夹:
app.get('/', function(req, res) {
res.render('areaName/viewName');
});
这意味着您的“区域”需要是子文件夹,但它允许您完成您正在寻找的分离。
答案 1 :(得分:6)
作为一个更模块化的解决方案,我在sails.js中做了类似的事情。 只需覆盖中间件中给定请求的渲染功能。 :)
var curRender = res.render;
res.render = function(path, locals, func) {
var args = [res.locals.explicitPath + '/' + path, locals, func];
curRender.apply(this, args);
};
答案 2 :(得分:0)
完整路径也适用
app.get('/', function(req, res) {
res.render(path.join(__dirname, 'view.jade'));
});