节点多个视图文件夹



我正在尝试使节点(或表达?我仍然是一个新手,所以我不知道哪一个在这里做实际工作)从多个文件夹呈现视图。如果我有一个登录页面,那么就有一个带索引的单独文件夹。用于登录的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('ejs')代替了require('jade'),但后来我在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文件夹以外的位置使节点呈现视图

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

最新更新