You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nunjucks时11ty为何仍转义HTML代码?已用safe过滤器

问题排查与解决步骤
  • 确认index.html的模板引擎配置
    在index.html的front matter中明确指定使用Nunjucks引擎,避免11ty因默认规则选择其他引擎(如Liquid)导致转义逻辑不符:

    ---
    layout: base
    templateEngineOverride: njk
    ---
    
  • 检查内容写入方式
    若index.html中的HTML代码是直接写在模板内的,不要将其字符串化(比如用引号包裹),直接写入原生HTML代码即可,避免额外转义。

  • 验证layout中的safe过滤器
    确认base.html里的{{ content | safe }}写法无误:过滤器管道符|前后无多余空格,safe拼写正确,没有被其他语法打断。

  • 排查全局自动转义配置(仅用于验证)
    若上述方法无效,可临时在.eleventy.js中关闭Nunjucks全局自动转义,确认是否是全局配置导致的问题:

    module.exports = function(eleventyConfig) {
      eleventyConfig.setNunjucksEnvironmentOptions({
        autoescape: false
      });
    };
    

    注意:全局关闭自动转义存在安全风险,验证完成后建议恢复默认,改用局部safe过滤器处理特定内容。

  • 处理外部数据来源的内容
    若index.html的HTML内容来自front matter变量或外部数据文件,需要在引用该变量时直接添加safe过滤器,而非仅依赖layout中的content过滤器。例如:

    {{ page.data.customHtml | safe }}
    

内容的提问来源于stack exchange,提问作者Keita Yokoyama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:30:51