Node / Express.js – 重写查找每个请求的“视图”文件夹的位置

在我的Node / Express.js项目中,我可以像这样全局设置视图文件夹:

app.configure(function() { app.set('views', __dirname + '/views'); .... snip .... }); 

…和我所有的视图模板进入视图文件夹。

是否有可能重写快速查找请求的请求的意见? 比如,像下面这样的东西:

 app.get('/', function(req, res) { res.render('index', { viewFolder: 'otherViews' }); }); 

我问的原因是我试图复制Microsoft ASP.NET MVC的地区function,其中每个区域获取它自己的视图文件夹。

'views'设置是根目录,所以你应该能够在层次结构中指定一个子文件夹:

 app.get('/', function(req, res) { res.render('areaName/viewName'); }); 

这意味着你的“区域”需要是子文件夹,但它可以让你完成你正在寻找的分离。

作为一个更模块化的解决scheme,我在sails.js中做了这样的事情。 只需在中间件中覆盖给定请求的渲染函数即可。 🙂

 var curRender = res.render; res.render = function(path, locals, func) { var args = [res.locals.explicitPath + '/' + path, locals, func]; curRender.apply(this, args); }; 

全path也起作用

 app.get('/', function(req, res) { res.render(path.join(__dirname, 'view.jade')); });