我想在调用res.render()时更改Express的视图文件夹.
例如,如果我在/folder/file中调用res.render(viewName).js,我想快速查找/folder/views中的视图.
如果文件位于/folder1/folder2/file中.js,我想快速查看/folder1/folder2/views中的视图
可能吗?
我想在调用res.render()时更改Express的视图文件夹.
例如,如果我在/folder/file中调用res.render(viewName).js,我想快速查找/folder/views中的视图.
如果文件位于/folder1/folder2/file中.js,我想快速查看/folder1/folder2/views中的视图
可能吗?
可以使用方法set()
重新定义express的默认设置.
app.set('views', path.join(__dirname, '/yourViewDirectory'));
对于动态路径更改,可以执行以下操作:
var express = require('express');
var path = require('path');
var app = express();
app.engine('jade', require('jade').__express);
app.set('view engine','jade');
app.customRender = function (root,name,fn) {
var engines = app.engines;
var cache = app.cache;
view = cache[root+'-'+name];
if (!view) {
view = new (app.get('view'))(name, {
defaultEngine: app.get('view engine'),
root: root,
engines: engines
});
if (!view.path) {
var err = new Error('Failed to lookup view "' + name + '" in views directory "' + root + '"');
err.view = view;
return fn(err);
}
cache[root+'-'+name] = view;
}
try {
view.render(opts, fn);
} catch (err) {
fn(err);
}
}
app.get('/', function(req, res) {
app.customRender(path.join(__dirname, '/path/to/user/'),'index',function (err,html) {
if (err)
res.send(404);
else
res.send(200,html);
});
});
app.listen(3000);