Articles of nunjucks

为什么我需要编写JSON.parse(JSON.stringify(data))?

我正在写一个Node.js的Web应用程序,它使用Express作为框架和Nunjucks作为模板引擎。 应用程序的一部分是发送表单数据作为电子邮件。 一个带有表格数据的Nunjucks模板在这个过程中被编译,然后被发送到电子邮件服务器。 表单数据是一个JSON对象( req.body ),但是由于一些奇怪的原因,我需要像这样提交表单数据: const renderer = nunjucks.configure('/path/to/template'); renderer.render('template.html', JSON.parse(JSON.stringify(req.body))); 只需编写renderer.render('template.html', req.body); 不工作,它会抛出一个错误: TypeError: ctx.hasOwnProperty is not a function at Obj.extend.init (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:338:20) at new new_cls (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\object.js:46:28) at Obj.extend.render (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:473:23) at D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:311:35 at createTemplate (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:234:25) at handle (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:249:25) at D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:263:21 at next (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\lib.js:207:13) at Object.exports.asyncIter (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\lib.js:214:5) at Obj.extend.getTemplate (D:\Projects\vcs.vitra.com\node_modules\nunjucks\src\environment.js:242:17) 有人有一个想法,为什么我需要在Nunjucks工作之前对表单数据进行串联和parsing? 似乎没有任何意义? 编辑 下面是整个function的更好的解释: function […]

Nunjucks控制台日志不能作为节点js模板引擎工作

我在节点js新“nunjucks”模板,我已经得到了nunjucks文档中的大部分信息,但我不知道如何控制variablesinit? 我试图跟随,但没有为我工作: {{ console.log(varible) }}

如何在浏览器客户端使用nunjucksmacros?

我能够使用客户端模板为nunjucks,我从node.js预编译和公开JS模板文件。 我称之为客户端模板: nunjucks.render('partials/some-template.html', { abc: 123 }) 并返回一个string。 我怎样才能调用macros,但我做错了。 macros首先在node.js的页面上声明,然后在Node.js中连续调用: {% include 'macros/checkbox.html' %} … {{ checkbox('you cool?', 'cool', false) }} {{ checkbox('you collected?', 'collected', false) }} 但不知道如何获得macros,然后再次在客户端调用它。 我确实努力通过控制台的检查到目前为止,但没有运气。

Nunjucks nl2br不存在?

我需要像Jinja“nl2br”这样的filter,但是在Nunjucks中。 在文档中提到( https://mozilla.github.io/nunjucks/templating.html ),但我在nunjucks代码( https://github.com/mozilla/nunjucks/blob/master/src /filters.js ),它不存在。 有人知道如何用等效的filter或其他解决scheme来解决它? 或者我需要创buildfilter?

用Nunjucks模板循环整数值

我对nunjuck很陌生,从我读到的这个是不可能的,但是我想知道是否有人想出了一个这样做的方法。 我基本上正在寻找在nunjucks模板基于值而不是对象的大小执行for循环。 假设您将以下数据传递给模板。 假设房间数值是从<select>元素中select的选项的值: data : { numberOfRooms : 4 } 在传统的JS中,我可以写一个for循环,并根据numberOfRooms值限制循环: for (var i = 0; i < data.numberOfRooms; i ++) { // do something… } 我的最终目标是在一个Nunjucks模板中编写一个循环,这个模板将复制一个标记X块,其中X是numberOfRooms值。 那么,如果这是可能的话,那么如何才能和Nunjuck做到呢? 如果这完全击败了Nunjucks的目的,那么请说,任何替代build议将不胜感激。

最简单的node.js + nunjucks例子

可能不会使用node.js和Nunjucks进行任何实际的开发,但是现在由于某种原因需要: 预编译一些简单的模板与Nunjucks JavaScript 运行node.js下的预编译模板 我已经做好了: 安装node.js和npm (例如有node和npm命令) mkdir njtest && cd njtest 安装nunjucks npm install nunjucks (有一个node_modules/nunjucks目录) mkdir templates 在模板中,我创build了两个文件index.html和layout.html与以下jinja2/nunjucks内容 layout.html <!doctype html> <head> <title>simple example</title> </head> <body> <h1>Simple example</h1> {% block body %}{% endblock %} </body> index.html {% extends "layout.html" %} {% block body %} hello world {% endblock %} 我预编了模板 ./node_modules/nunjucks/bin/precompile templates >templates.js […]