Node.js:使用下划线和ejs一起呈现html

我目前使用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); }); 

现在要呈现HTML我有权访问下划线:

 <% _.each(people, function(person){ %> <div><%= person.name %></div> <% }); %> 

但是,我不得不为每条路线都注入下划线,有没有办法总是注入下划线? (也许在app.engine设置?)

你可以将_绑定到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); }); 

在你看来:

 <% _.each(people, function(person){ %> <div><%= person.name %></div> <% }); %> 

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

请参阅关于app.localsreq.locals 的文档

我刚刚在名字“约翰”和“结婚”