我试图创建节点(或表达?我仍然是一个菜鸟,所以我不知道哪些是在这里做实际的工作)从多个文件夹渲染视图。因此,如果我有一个登录页面,那么有一个单独的文件夹,其中index.ejs用于登录,其他文件用于登录。对于我的主页面,还有一个带索引的其他文件夹...
我发现此链接很有用https://strongloop.com/strongblog/bypassing-express-view-rendering-for-speed-and-modularity/但是它们提供了玉渲染引擎和marko的示例。我正在使用ejs
而我正在尝试他们拥有的示例但他们无法正常工作。例如:
我试过这个:
var templatePath = require.resolve('./template.jade');
var templateFn = require('jade').compileFile(templatePath);
app.get('/', function (req, res) {
res.write(templateFn({name: 'Frank'});
res.end();
});
但我将require('jade')
替换为require('ejs')
,但我在compileFile(templatePath)
上收到错误:
undefined不是函数
我还用marko
尝试了另一个例子var templatePath = require.resolve('./template.marko');
var template = require('marko').load(templatePath);
app.get('/', function (req, res) {
template.render({name: 'Frank'}, res);
});
但在load(templatePath)
上遇到了同样的错误。我无法弄清楚如何从根views
文件夹以外的位置创建节点渲染视图
答案 0 :(得分:1)
ejs
只有一个compile()
函数,它将模板的字符串版本作为参数。因此,您需要先手动从磁盘加载模板:
var fs = require('fs');
var templatePath = require.resolve('./template.ejs');
var template = require('ejs').compile(fs.readFileSync(templatePath, 'utf8'));
app.get('/', function (req, res) {
res.end(template({name: 'Frank'}));
});