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

从Pug编译Twig文件时,无法在标签中用{%...%}添加条件属性求助

我之前也踩过这个坑!Pug的属性解析逻辑和Twig的模板标签混用时确实容易冲突,你原来的写法会被Pug当成无效语法处理,所以没法得到想要的Twig输出。给你几个亲测有效的解决方案:

方案1:用Pug的未转义后缀直接注入Twig代码

这是最简洁的方法,利用Pug的!=语法告诉编译器直接输出后面的字符串,不做任何解析,这样Twig的条件代码就能原封不动保留:

input!= ' {% if required %}required{% endif %}'

编译后生成的Twig代码就是你想要的:

<input {% if required %}required{% endif %} />

方案2:处理多个条件属性

如果需要同时控制多个属性,直接把所有Twig条件拼在同一个字符串里就行:

input!= ' {% if required %}required{% endif %} {% if disabled %}disabled{% endif %}'

对应的Twig输出:

<input {% if required %}required{% endif %} {% if disabled %}disabled{% endif %} />

方案3:直接写原始HTML(适合复杂场景)

如果觉得上面的写法不够直观,也可以直接在Pug里插入原始的HTML片段,用|前缀标记:

|<input {% if required %}required{% endif %} />

这种方式虽然简单,但会失去Pug的缩进语法优势,适合偶尔处理特殊标签的情况。

为什么原来的写法不行?

Pug会解析属性括号()里的内容,把Twig的{%...%}当成非法语法,所以要么报错,要么输出不符合预期的内容。而!=语法会绕过Pug的属性解析逻辑,直接把字符串输出到标签中,完美适配Twig的模板语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:56:00