Express js 设置视图模板选项

Express js set view template options

在Express.js注册模板引擎的申请中ejs你只需添加一行

app.set('view engine', 'ejs');

如何指定 ejs https://github.com/mde/ejs#options 支持的附加选项(例如我想要 rmWhitespace: true)以便每个 res.render() 都可以使用它们?

更新: 当前设置:

...
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.locals.rmWhitespace = true;

app.get('/', function (req, res) {
    res.render('root', { name: 'Test' });
});

并在`./views/root.ejs'

<html>
<body>
    Hello, <%= name -%>
    <br/>
</body>
</html>

我在使用 swig(ejs 的替代品)时遇到了同样的问题。 我认为您可以直接要求 ejs 并设置其选项。例如:

var ejs = require('ejs');    

...
app.set('view engine', 'ejs');
ejs.rmWhitespace = true;
...

你可以设置一个中间件

app.use(function(req, res, next){
 res.locals.rmWhitespace = true;
 next();
});

将本地设置为 res.locals

在此处设置文档here

来自文档:ejs.render(str, data, options);

app.get('/', function (req, res) {
    res.render('root', { name: 'Test' }, rmWhitespace);
});

http://ejs.co/

您的原始语法现在可以使用了:

app.set('view engine', 'ejs');
app.locals.rmWhitespace = true;

由于 v2.3.4 中已修复的错误,在您提出问题时它不起作用:https://github.com/mde/ejs/commit/ea0fa32e27a13b9b77970b312699ff117aa56e59

如果没有此修复,rmWhitespace 不会被识别为 "option",因此不会被 data 拉出 opts cbOptsInData方法。