Articles of partials

Dust.js在同一页面上多次使用相同的部分

我有一个父模板接收以下上下文: { users: [ { userId: "18288128", group: "User 1 Group Name", userVideos: [{ id: 1, name: "Video1"}, { id: 2, name: "Video2"}, { id: 3, name: "Video3"}] }, { userId: "1232412", group: "User 2 Group Name", userVideos: [{ id: 4, name: "Video93"}, { id: 5, name: "Video384"}, { id: 6, name: "Video483"}] }, { […]

有没有办法创build一个由服务器处理产生的dynamic部分?

我已经开始使用NodeJS几个月了,我遇到了部分渲染的一个小问题。 我想在一些模板中包含部分视图,但是我希望这个部分是从服务器dynamic生成的(因为它取决于从数据库和其他东西中获取的数据)。 我试图创build一个模板助手做到这一点,但由于处理需要asynchronous完成,我不能得到一个HTML返回写在我的模板。 基本上最适合我的是类似的东西(这段代码显然不起作用): template_file.js … <div> <%- generatePartial(data) %> </div> … helper_middleware.js module.exports = function registerAppHelpers(request, response, next) { var appHelpers = {}; appHelpers.generatePartial = function generatePartial(data) { if (request.isAuthenticated()) { DB.findOne({ id: request.user.id }, function found(error, obj) { if (error) … if (obj) { return generatePartial1(data); } else { return generatePartial2(data); } }); […]

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

我正在写一个Express 4应用程序,目前我使用twig.js作为视图引擎,因为我觉得很舒服,尽pipe我可以被说服改变这个引擎。 我已经用PHP / Laravel做了很多开发,并且已经习惯了他们称之为视图composer php的阵营。 使用这些我可以为特定的视图编写一个composer php,无论是主页面视图,其他视图扩展的布局,还是其他视图都包含的视图。 作曲者会做任何必要的逻辑来准备视图需要的任何数据,然后将其附加到视图的上下文,以便在渲染过程中可用。 例如,我可能有一个显示当前用户状态的部分,所以如果他们注销,它可能只有一个loginbutton,如果他们login,它会有他们的图标,用户名和一个让他们注销的菜单等等。相应的composer php将检查用户是否login,如果是的话,将关于用户的相关数据附加到视图的上下文中。 那么哪个页面包含这个部分并不重要; 数据将始终可用,而不必记住将该特定数据添加到传递给页面主视图的上下文中。 Express有没有一些等价物? 还是取决于我使用的模板引擎?

Jade / Pug中带有dynamic数据的部分模板

我正在尝试创build两个块的视图。 每个块有不同的实时数据源。 当我在主视图中使用Jade的时候, extends ../layout block content link(rel='stylesheet', type='text/css', href='/stylesheets/people.css') include ../store/peopleTemplate.pug 我得到错误 Cannot read property 'people' of undefined. 原因是因为数据仍在加载。 如果不包括在复用function中复用数据使用 res.render(template, { data:localData }); 该模板未添加到视图中。 如何添加2个或更多的部分视图与dynamic数据从不同的来源到1视图? 谢谢

Nodejs头部脚本的EJS partials

我正在使用EJS来从Nodejs服务器呈现和服务器HTML页面。 我所包含的一些部分在头部引用了脚本和样式表,但这会导致客户端对同一个文件发出多个请求(例如,如果父视图也包含该文件) 例如: <!– file: parent.ejs –> <html> <head> <link rel="stylesheet" href="public/mystylesheet.css"> <script src="public/myscript.js"> </head> <body> <%- partial("partial.ejs") %> </body> </html> 而在部分: <!– file: partial.ejs –> <html> <head> <link rel="stylesheet" href="public/mystylesheet.css"> <script src="public/myscript.js"> </head> <body> This is an EJS partial! </body> </html> 在这种情况下,“mystylesheet.css”被客户端加载两次(不必要的),“myscript.js” 有一种简单的方法(最好使用EJS)确保部分需要时包含样式表或脚本,但是如果父视图已经包含了资源,则不能使用样式表或脚本?

在Jade视图中使用JavaScript代码 – 如果(variables)显示未定义,而不是传递

所以这是一个反复出现的问题,我还没有find另一个例子,所以在这里: 在渲染Jade模板时,即使在模板中使用-if(variableName) ,我也会得到'variableName' undefined 。 示例(我正在使用这个作为'info'flash消息的部分): -if(info) – if(info.length){ ul -info.forEach(function(info){ li= info -}) -} 这个返回'info'没有被定义,而不是在没有flash / info消息的时候渲染任何东西。 有谁知道我在做什么错? 我知道typeof(variable) != 'undefined选项,如上所述。 如果我想做一些像-if (typeof(req.session.user) != 'undefined')我将不得不做3个嵌套的if(typeof(req)!='undefined')这是我唯一的select吗?

在Express / EJS模板中,什么是最简洁的方式来循环数组?

我有一个使用EJS模板设置的Express.js应用程序。 我用经典的JS语法成功地遍历了一个数组: <% for (var i = 0; i < myArray.length; i++) { this = myArray[i]; // display properties of this } %> 但是我想知道,有没有更干净的方法来做到这一点? 具体来说,我可以使用Underscore或Lodash循环与.each? 谢谢