自动向Express部分视图提供数据

时间:2016-02-24 20:15:51

标签: node.js express partials

我正在撰写Express 4应用,目前正在使用twig.js作为视图引擎,因为我觉得它很舒服,但我可以说服我改变这个引擎。

我已经使用PHP / Laravel进行了大量的开发,并且已经习惯了他们称之为view composers的那个阵营。使用这些我可以为特定视图编写一个作曲家,无论它是主页面视图,其他视图扩展的布局,还是部分其他视图包括。作曲家做任何必要的逻辑来准备视图所需的任何数据,然后将其附加到视图的上下文中,以便在渲染过程中可用。

例如,我可能有部分显示当前用户状态,因此如果他们已注销,则可能只有一个登录按钮,如果他们已经登录并且#39;将有他们的图标,用户名和菜单让他们注销等。相应的作曲家将检查用户是否登录,如果是,则将关于用户的相关数据附加到视图中。的背景。然后,哪个页面包含这个部分并不重要;数据将始终可用,我不必记住将特定数据添加到传递到页面主视图的上下文中。

快递中是否有一些等价物?或者它取决于我使用的模板引擎?

3 个答案:

答案 0 :(得分:1)

目前,使用mentioned in the docs呈现的视图需要在每个res.render()上传入数据。如果视图使用需要某些数据点的部分模板,则使用该模板的视图需要通过len(second)传入该值。简而言之,无论是否可能共享的部分模板需要数据点,您始终都需要传递数据。使用视图引擎时,视图不会自动提供任何内容。

答案 1 :(得分:1)

你问是否有可能有一些视图A,包括部分P_A,并能够将一些数据传递给不依赖于路由的部分,即无论你在网站/应用程序的哪个位置都有数据绑定到它(完全独立于路线/网址和视图)可用于您的登录状态?

如果是,那么创建你的部分,让我们使用导航/菜单部分: 请注意,此示例使用ejs进行模板化

<nav>
    <ul>
    <!-- pass the data upon call / include-->
    <% for(var i = 0, len=navigation.length;i < len;i++) {%>
        <li><a href="<%=navigation[i].href%>"><%=navigation[i].Text%></a></li>
    <%}%>
    </ul>
</nav>

在视图上调用/包含您的资料

view.ejs

<%- include('nav', { navigation : [{Text : 'Items' ,href : '/' },{Text : 'People' ,href : '/names' }] } )%>

答案 2 :(得分:0)

据我所知,在expressjs中没有类似的东西。