Node.js:如何使用underscore和ejs一起渲染HTML

7

我目前使用EJS模板引擎来渲染我的HTML页面,但我想添加underscore以简化预处理。现在我这样做就可以了:

var _ = require("underscore");

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

现在我可以使用underscore来呈现HTML:
<% _.each(people, function(person){ %>
    <div><%= person.name %></div>
<% }); %>

然而,我必须为每个路由注入下划线,是否有一种方式可以始终注入下划线?(也许在app.engine设置中?)

1个回答

11

你可以将_绑定到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之间的区别

我只是在名称“john”和“marry”周围添加了引号


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接