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.locals
与req.locals
的文档
我刚刚在名字“约翰”和“结婚”