我想使用 Nunjucks 模板,但想传入我自己的 JSON 数据以在模板上使用。
这里的文档非常稀少。
https://mozilla.github.io/nunjucks/templating.html
谢谢你。
我想使用 Nunjucks 模板,但想传入我自己的 JSON 数据以在模板上使用。
这里的文档非常稀少。
https://mozilla.github.io/nunjucks/templating.html
谢谢你。
您可以使用gulp-data ,它允许您将 json 文件传递给用于渲染 Nunjucks 的任务运行器。
gulp.task('nunjucks', function() {
return gulp.src('app/pages/**/*.+(html|nunjucks)')
// Adding data to Nunjucks
.pipe(data(function() {
return require('./app/data.json')
}))
.pipe(nunjucksRender({
path: ['app/templates']
}))
.pipe(gulp.dest('app'))
});
只需结合使用dump
和safe
过滤器:
<script>
const choices = {{ yourJsonVar | dump | safe }};
</script>
2019 年在这里找到了这颗宝石,但认为它对像我这样搜索过但没有找到任何东西的人会有所帮助。
首先,在宏中创建一个带有预期参数的模板部分
{% macro render(secTitle, secSubtitle) %}
<h4 class="heading">
{{ secTitle | safe }}, {{ secSubtitle | safe }}
</h4>
{% endmacro %}
另存为[yourname].tpl
- 在这种情况下heading.tpl
然后,导入这个块并使用上面宏中指定的函数(render()
在这种情况下)
{% block heading %}
{% import "components/heading.tpl" as heading with context %}
{{ heading.render(
secTitle='Hello there',
secSubtitle='General Kenobi'
) }}
{% endblock %}
这将导致:
<h4 class="heading">
Hello there, General Kenobi
</h4>
请注意| safe
组件中的字符串之后 - 这意味着它将以 HTML 格式输出字符串(例如,<br>
将创建一个新行而不是输出<br>
文本)。
您可以使用他们的异步渲染来实现这一点。
https://mozilla.github.io/nunjucks/api.html#render
$.getJSON('/path/to/file.json', function (result) {
nunjucks.render('path/to/template/file.html', { result : result }, function (err, res) {
// do something
});
});