在yourapp.js中:
var engines = require('consolidate');
app.engine('jade', engines.jade);
app.engine('handlebars', engines.handlebars);
更多信息请参见here。
app.set('view engine', ...)
指定引擎,则应用程序将崩溃。如果您指定了一个引擎,则另一个引擎将被忽略。 - ChrisExpress 4.0及以上版本的解决方案(直到再次更改)
NPM安装您所需的引擎。
// some examples
npm install ejs
npm install pug
npm install handlebars
在你的app.js
文件中设置要使用的引擎。
app.set('view engine', 'pug');
app.set('view engine', 'ejs');
渲染您的模板时,请确保设置文件扩展名。
// forces usage of the respective render engine by setting the file extension explicitly.
res.render( 'about.ejs', { title: 'About' } );
res.render( 'about.pug', { title: 'About' } );
有关更多使用示例的文档。
编辑
在与Amol M Kulkarni讨论了下面的评论后,我回来重新分析了这些内容。
结果证明,这比我想象的要容易得多,我必须回到这里分享我的解决方案。使用整合,可以像这样完成:
首先执行require操作。
var engines = require('consolidate');
然后你可以删除或设置引擎和视图引擎...
我尝试过删除所有的app.engine
和app.set('view engine', '...');
,它确实起作用了。但是,将其设置为除'html'
以外的其他值只适用于一个引擎。所以我只需设置它以确保正确性。
我是这样设置的:
app.engine('html', engines.swig); // take note, using 'html', not 'ejs' or 'pug'..
app.set('view engine', 'html'); // also 'html' here.
稍后当您执行app.render
时,请确保它具有文件扩展名,这样它就可以正常工作。
res.render( 'theme.ejs', {}); // will render with ejs
res.render( 'theme.pug', {}); // will render with pug
请确保已安装这些引擎(pug、ejs等),consolidate 将会处理其余部分。
旧回答.
关于 @Sergii 的回答,它对我来说并不完全有效。有时我在使用的模板中会出现错误。但错误信息是错误的,提示无法在目录中查找此模板。
我尝试了 @azariah 的解决方案,但仍然没有用。
app.set('view engine', 'pug'); // does not make sense.
app.set('view engine', 'ejs'); // overriding the last .set()
我发现使用consolodate.js非常有效。
像往常一样,添加app.set('view engine', 'pug');
。
然后,在每次调用render时,都要设置'view engine'
。
就像这样:
req.app.set('view engine', 'ejs');
res.render( 'theme', theme );
我担心的是,当有更多不同引擎的同时用户访问页面时,是否会发生冲突并出现我遇到的错误查找。
但我猜测,渲染速度非常快,另一个req.app.set
调用时应该已经完成了。
app.set('view engine', 'pug');
这就是你的视图引擎... - Reigel Gallarde我认为这种做法更准确,也是我的个人实践。 我们应该设置一个默认的模板引擎,以便所有视图都至少经过一个模板引擎处理,这样可以避免文件暴露给最终用户,尤其是当你将HTML作为默认引擎时。
因此,首先要安装consolidate.js到目录中。
npm install consolidate
var consoengines = require('consolidate');
现在设置默认的视图引擎,选择pug是因为它很受欢迎。
app.set('view engine', 'pug');
在设置默认模板引擎之后,现在我需要安装额外的模板引擎。对于我的情况,我大多数时候需要使用EJS,因为它几乎允许所有的Javascript,在模板中制作任何东西都很方便。但你可以选择任何模板引擎。 你所需要做的就是安装你的模板引擎。
npm install ejs
现在将其添加到合并实例中,然后放回主模板引擎列表。
app.engine('ejs', engines.ejs);
cons.hogan
来使用hogan.js,使用cons.jade
来使用jade等。使用console.log(cons)来获取完整的标识符列表。" - Amol M Kulkarni