我想将ejs用于局部,将翡翠用于单个页面,如何在一个 nodejs 和 express 项目中同时使用?
问问题
8862 次
2 回答
10
在 github的expressjs api docs和consolidate.js中很容易找到方法
请参考下面的 express.js 文档片段
app.engine(ext, 回调)
将给定的模板引擎回调注册为 ext 默认情况下将 require() 基于文件扩展名的引擎。例如,如果您尝试渲染“foo.jade”文件,Express 将在内部调用以下内容,并在后续调用中缓存 require() 以提高性能。
app.engine('jade', require('jade').__express);
对于不提供 .__express 开箱即用的引擎 - 或者如果您希望将不同的扩展“映射”到模板引擎,您可以使用此方法。例如将 EJS 模板引擎映射到“.html”文件:
app.engine('html', require('ejs').renderFile);
在这种情况下,EJS 提供了一个 .renderFile() 方法,其签名与 Express 期望的相同:(路径、选项、回调),但请注意,它在内部将此方法别名为 ejs.__express,因此如果您使用“.ejs”扩展名你不需要做任何事情。
一些模板引擎不遵循这个约定,创建了 consolidate.js 库来映射所有节点流行的模板引擎以遵循这个约定,从而允许它们在 Express 中无缝工作。
var engines = require('consolidate');
app.engine('haml', engines.haml);
app.engine('html', engines.hogan);
于 2013-08-10T12:16:40.287 回答
4
这适用于我:
- 添加pug和ejs作为渲染
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');
- 使用 filename.fileext 调用 render。
路线/用户
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;
于 2018-02-24T09:09:29.857 回答