-->

有没有办法使用与快递+ Node.js的多个视图引擎(Is there any way to use

2019-07-20 11:16发布

场景 :我已经开发使用一些交易页面的Node.js , 快递 + 把手的视图引擎和MongoDB的 。

现在的问题是模块集成我得到了一些上构建的网页时快速 + 翡翠作为视图引擎。

:如何整合建立在车把和一些关于翡翠的网页?

Answer 1:

  1. 添加两台发动机和consolidate.js在你的package.json
  2. yourapp.js

    VAR =发动机要求( '巩固');

    app.engine( '玉',engines.jade);

    app.engine( '车把',engines.handlebars);

更多信息点击这里



Answer 2:

快递4.0及以上的解决方案(直到它再次改变)

  1. NPM安装所需的引擎。

     // some examples npm install ejs npm install pug npm install handlebars 
  2. 将发动机在使用app.js

     app.set('view engine', 'pug'); app.set('view engine', 'ejs'); 
  3. 渲染你的模板,一定要设置文件扩展名。

     // 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' } ); 
  4. 文档获取更多应用实例。

    • https://expressjs.com/en/guide/using-template-engines.html


Answer 3:

编辑

下面的评论与阿莫尔中号库尔卡尼讨论后,我回来了,再次分析了这些。

而事实证明,它比我还以为我得回去这里和大家分享我的解决办法相当简单。 使用巩固,像这样做:

先做需要。

var engines = require('consolidate');

然后,你可以删除或设置引擎和视图引擎...
我曾尝试删除所有app.engineapp.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

只要确保有这些引擎(哈巴狗,EJS等。)安装和巩固将做休息。


旧的答案
与有关@Sergii答案,也没有为我100%的努力。 还有当我使用模板是引发错误的时间。 但是,与说无法查找这个模板在此目录中一个错误的错误消息。

我试图@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'); 照常。
然后,在每一个时间我会打电话渲染,我设置的'view engine'

像这样:

req.app.set('view engine', 'ejs');
res.render( 'theme', theme );

我的这种担忧是,当多个用户同时将访问页面与不同的发动机,不知道这是否会发生碰撞,回来与错误查找那我有。

但我猜测,渲染是如此之快,它应该由其他的时间来完成req.app.set被调用。



文章来源: Is there any way to use multiple view engines with Express + Node.js