Html 无法使用NUNJUCK从结束文件重写变量值
我使用Nunjucks作为我的项目的模板引擎,我有以下场景 基本文件可以使用布局和页面级别变量并生成最终HTML 基本文件:Base.htmlHtml 无法使用NUNJUCK从结束文件重写变量值,html,jinja2,template-engine,nunjucks,Html,Jinja2,Template Engine,Nunjucks,我使用Nunjucks作为我的项目的模板引擎,我有以下场景 基本文件可以使用布局和页面级别变量并生成最终HTML 基本文件:Base.html <html class="{{htmlClass}}"> .. </html> 页面文件:Page.html ... {% extends "html/_layouts/layout.html" %} {% set htmlClass = "class-2" %} ... 实际生成的HTML文件具有: <html cla
<html class="{{htmlClass}}"> .. </html>
页面文件:Page.html
...
{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}
...
实际生成的HTML文件具有:
<html class="class-1"> .. </html>
。。
预期生成的HTML文件应具有(应附加页面级别变量值):
。。
请考虑我不想使用两个单独的变量。 以前我使用的是PUG,我使用的是
block-htmlClass
,并用变量覆盖valueappend-htmlClass
我曾尝试为Nunjuck找到类似的方法,不幸的是,我找不到append
提前感谢试试看
{% set htmlClass = "class-2" %}
{% extends "html/_layouts/layout.html" %}
而不是:
{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}
设置在扩展之前最后,我找到了下面的解决方案
{% set htmlClass = htmlClass | default('class-2') %}
现在,我可以使用Nunjucks覆盖结束文件中的变量值。不,这不会有帮助,请参阅我的解决方案。请注意,这需要添加到
layout.html
文件中,因此它应该具有'class-1'
,以保持一致。它所做的是检查子模板是否已经设置了变量值,如果已经设置了,那么它将使用该值,而不是覆盖它。
{% extends "html/_layouts/layout.html" %}
{% set htmlClass = "class-2" %}
{% set htmlClass = htmlClass | default('class-2') %}