Node.js:使用下划线和ejs来渲染html

Mar*_*ria 6 javascript ejs node.js express underscore.js

我目前正在使用EJS模板引擎来渲染我的HTML页面,但我想添加下划线以简化预处理.现在我这样做,它的工作原理:

var _ = require("underscore");

app.get('/', function(req, res){
    var data = {};
    data.people = [{ name: "john" }, { name: "marry" }];
    data._ = _; // inject underscore.js
    res.render('index', data);
});
Run Code Online (Sandbox Code Playgroud)

现在要呈现HTML,我可以访问下划线:

<% _.each(people, function(person){ %>
    <div><%= person.name %></div>
<% }); %>
Run Code Online (Sandbox Code Playgroud)

但是,我必须为每条路线注入下划线,有没有办法总是注入下划线?(也许在app.engine设置的某个地方?)

rol*_*and 9

你可以绑定_app.locals.

设置后,app.locals属性的值在应用程序的整个生命周期中都会持续存在,而res.locals属性仅在请求的生命周期内有效.

app.locals._ = _;

app.get('/', function(req, res){
    var data = {};
    data.people = [{ name: 'john' }, { name: 'marry' }];
    res.render('index', data);
});
Run Code Online (Sandbox Code Playgroud)

在你看来:

<% _.each(people, function(person){ %>
    <div><%= person.name %></div>
<% }); %>
Run Code Online (Sandbox Code Playgroud)

另一个SO用户有一个很好的答案:在app.locals中访问req和res

请参阅有关vs. 的文档app.localsreq.locals

我只是在名字'john'和'marry'周围加上引号