问题标签 [nunjucks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
17794 浏览

javascript - 使用 Nunjucks 模板循环整数值

我对 nunjucks 很陌生,从我读过的内容来看这是不可能的,但我想知道是否有人想出了这样做的方法。

我基本上希望根据值而不是对象的大小在 nunjucks 模板中执行 for 循环。

假设您将以下数据传递给模板。假设房间数量值是<select>元素中选定选项的值:

在传统的 JS 中,我可以编写一个 for 循环并根据numberOfRooms值限制循环:

我的最终目标是在 Nunjucks 模板中编写一个循环,该循环将复制一个标记块 X 次,其中 X 是 numberOfRooms 值。

那么,如果这是可能的,如何使用 Nunjucks 实现这一目标?如果这完全违背了 Nunjucks 的目的,那么请说,任何替代建议将不胜感激。

0 投票
2 回答
2650 浏览

gulp - Gulp Front Matter +Markdown through Nunjucks

I'm working on adding some simple Markdown processing to my Gulp process, but I can't quite get the pieces to work together. I seem to be missing the step between getting the front matter content, and determining which Nunjuck template to apply.

Here's the section in my Gulp file:

The markdown file looks like this:

I feel like it's going the right direction but being able to visualise where that front matter data has gone, and how to expose it to the Nunjucks rendering, is not clear. Any help?

0 投票
1 回答
163 浏览

angularjs - 如何配置标签的语法标记

我目前正在使用带有 ejs 模板的sails.js,但希望切换到 nunjucks。我已经做到了,没有任何问题。

但是我发现 nunjucks 的标签与 angularjs 的标签相同,并希望更改它们。

我在这里查看了文档:https ://mozilla.github.io/nunjucks/api.html#customizing-syntax

我不知道如何在sails.js 上下文中执行此操作。

我尝试将“标签”设置添加到 config/view.js。

我试过在 bootstrap.js 中运行配置命令。

有人可以帮我解决这个问题吗?

0 投票
1 回答
2293 浏览

javascript - nunjucks 函数参数到达未定义

我已经使用 nunjucks 几个月了,发现它是一个很棒的模板引擎。但是,今天早上我遇到了一个看似简单的问题,但我根本无法弄清楚。我希望另一双眼睛可以帮助指出解决方案。

问题:如果我将函数传递给模板,则传递给该函数的任何参数在函数体内都是未定义的。

值和对象可以毫无问题地传递给模板,如果我传递一个函数,我可以从函数内部登录到控制台(所以我知道函数本身就在那里),但参数都是未定义的。

这最初似乎可以通过闭包来解决,但是 1)我在我能找到的任何示例中都没有看到闭包,以及 2)当我尝试闭包时,我发现它们也收到了未定义的参数。

在这一天的过程中,我已经将我的代码缩减为几乎最简单的情况,但仍然无法解决这个问题:

模板:

呈现模板的代码(这是在 requirejs 定义中,未显示):

呈现的 HTML 如下所示:

所以,一个值是好的。该对象也可以正常工作,甚至在通过“漂亮”过滤器后看起来也不错。

但是,传递给“func”的值在函数体中变得未定义,并且在函数内部使用 arguments 变量没有帮助。此外,将函数直接传递到模板上下文(本地)也不起作用。

过滤器(基本上只是函数)工作正常,但常规函数不能,无论它们是作为模板上下文的一部分还是作为全局传递。

一些可能有帮助的注意事项:

  • 我正在使用 requirejs 虽然(除了导入 nunjucks 本身)我试图从等式中消除它。

  • 此示例使用 nunjucks v1.3.4。通过调试过程,我试图在 v2.1 中验证这种行为,但似乎 v2.x 可能破坏了 requirejs 的兼容性,我不想同时解决两个问题。

  • 我正在使用 grunt-nunjucks 预编译我的模板,然后对结果进行丑化。我的 Gruntfile 的相关部分如下:

    /li>

测试模板(如上所示)是编译成 common.js 的几个模板之一,然后使用上面的设置 uglified 成 common.min.js。请注意,我尝试编译模板而不进行丑化,但得到相同的结果。

这是非常基本的功能,所以如果这是一个错误,我希望在 SE 和问题日志中看到很多参考,但我几乎找不到任何参考。我想我错过了一些非常明显的东西,但似乎找不到它。

有什么想法吗?

0 投票
0 回答
2036 浏览

koa - 当我在 koa 中使用带有 co-views 的 nunjucks 基本布局时出现找不到模板错误

我正在尝试使用 koa 做一个基本的 nunjucks 示例,当它引用基本模板时出现未找到错误

Error: template not found: layout.html

索引.html

布局.html

渲染.js

服务器.js

我有点好奇的另一件事是传入的 nunjucks 库引用在哪里?我应该以某种方式在 render.js 中注入它吗?

0 投票
3 回答
5001 浏览

javascript - 如何在 nunjucks 中为不同页面的正文添加更改类?

我正在将 Mozilla Nunjucks 模板系统用于具有多个页面的静态网站。出于某种目的,我想body为每个不同的页面添加一个类来标记

关于我们页面 ><body class="about">

主页 ><body class="home">

如果我将标签保留在每个页面中,我可以很容易地做到这一点,body但我想将body标签保留在我将用于所有页面的模板中。

我想有条件地改变课程。

0 投票
0 回答
144 浏览

node.js - 用于 CMS 的 Nunjucks 异步 DB 调用

我的项目最初是使用 Handlebars 建立的,但由于 Nunjucks 能够执行异步逻辑,所以我正在迁移到它。我一直在阅读文档,但我不确定如何执行此操作。如果我理解正确,您不能使用 Express 的渲染引擎,而必须自己实现自定义模板加载器。您将如何从自定义帮助程序执行 db 调用,然后使用获取的数据呈现模板?

0 投票
2 回答
10135 浏览

intellij-idea - 将 Nunjucks 与 IntelliJ IDEA / Webstorm 集成

如何在 IntelliJ IDEA / Webstorm 中向Nunjucks模板文件添加语法突出显示?

没有明显的插件可用。也许有一个类似的模板引擎可以工作?

0 投票
0 回答
123 浏览

javascript - Javascript:node.js HTML 文件中的变量声明

Node.js:我正在使用 for 循环遍历 title2 的内容。但是为了使 div 标签唯一,我使用{{var i=0;}}它会给出以下错误expected variable end。我也尝试过{% var i = 0; %},但这似乎也不起作用我已经放置了结束标签,但它似乎不起作用。我可能大部分都放了错误的结束标签,但我无法找出正确的结束标签。我可以知道这是否是声明变量并结束它的正确方法吗?此外,如果这是在 HTML 文件中增加变量的正确方法?

0 投票
1 回答
1799 浏览

node.js - 打破 Nunjucks 循环

我已经在各个方向绞尽脑汁,但仍然没有解决方案。也许有人有一些建议?

我在使用 Nunjucks 作为模板引擎的 ExpressJS 应用程序中有以下块。

我的问题:当条件证明为真时,我需要break内部report.courses循环。基本上,在我打印非空<li>行的那一刻,我需要跳转到courses循环的下一次迭代。

我知道 Nunjucks 没有break像 Jinja2 这样的 for 循环,Nunjucks 的变量是有范围的(所以我不能设置在if/else语句中修改的类似哨兵的变量),我也不能附加到数组以便我可以用作array.length确定我是否应该打印该<li></li>行的一种方式。

也许有人有一个聪明的解决方案?