节点-将变量渲染为部分布局ejs-locals

时间:2018-08-17 18:13:58

标签: node.js ejs passport-local

我使用的是护照,我需要在布局(使用ejs-locals 'partial')中呈现用户名变量。

app.use(function(req, res, next) {
    res.locals = 
        {
            what : 'MyProject',
            who : req.user.username 
        }
    next();
});

我认识到'req.user.username'仅在'isAuthenticated'返回true时可用。以下代码可以工作,但是我确定有一种简便的方法,而不是为每条路线编写变量。

app.get('/dashboard',isAuthenticated, function(req, res) {
    res.render('template/index', {who:req.user.username});
});

然后,这是我的布局:

<div id="wrapper">
    <!-- Navigation -->
    <nav style="margin-bottom: 0">

        <%- partial('header.ejs') %>
        <%- partial('left.ejs') %>

     </nav>

        <%- body %>
</div>

最后是我的header.ejs

<span style='padding-left:18px'>Hi, <%=who%></span>

1 个答案:

答案 0 :(得分:0)

尝试改用<% include header.ejs %>

这在ejs中有效,不确定ejs-locals是否相同。在header.ejs中,您应该有权访问who。值得尝试。