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')); });