如何在一个节点js中使用ejs和jade;表达项目?

时间:2013-05-28 03:23:56

标签: node.js express pug ejs

我想将 ejs 用于部分页面,并将 jade 用于各个页面,如何在一个nodejs&中使用它们。表达项目?

2 个答案:

答案 0 :(得分:10)

expressjs api docsconsolidate.js github上找到方法很容易

请参考下面的express.js doc片段,


app.engine(分机,回拨)

将给定的模板引擎回调注册为ext默认情况下,将根据文件扩展名要求()引擎。例如,如果您尝试呈现“foo.jade”文件,Express将在内部调用以下内容,并在后续调用中缓存require()以提高性能。

app.engine('jade', require('jade').__express);

对于不提供.__表示开箱即用的引擎 - 或者如果您希望“映射”不同的扩展名到模板引擎,您可以使用此方法。例如,将EJS模板引擎映射到“.html”文件:

app.engine('html', require('ejs').renderFile);

在这种情况下,EJS提供了一个.renderFile()方法,其具有与Express期望的相同的签名:(路径,选项,回调),但请注意,它将此方法别名为ejs .__ express in internal,如果您正在使用“。 ejs“你不需要做任何事情的扩展。

某些模板引擎不遵循此约定,创建了consolidate.js库以映射所有节点的流行模板引擎以遵循此约定,从而允许它们在Express中无缝地工作。

var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);

答案 1 :(得分:4)

这适用于我:

  1. pug ejs 添加为渲染
  2. <强> index.js

    const express = require('express');
    const path = require('path');
    const app = express();
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'pug');
    app.set('view engine', 'ejs');
    
    1. 使用filename.fileext调用render。
    2. <强>路由/用户

      const express = require('express');
      const router = express.Router();
      router.get('/', function (req, res, next) {
        res.render('users.ejs');
      });
      module.exports = router;
      

      <强>路由/约

      const express = require('express');
      const router = express.Router();
      router.get('/', function (req, res, next) {
        res.render('about.pug');
      });
      module.exports = router;