Pug模板条件代码始终执行:是Bug还是语法使用错误?
问题分析与解决方案
问题根源
你的Pug代码存在两个核心问题:
- 缩进与语法错误:第二个
if (b === 2)后多余的.符号,加上错误的缩进层级,导致var x = true;脱离了条件判断的作用域,完全不受b === 2的控制。 - include作用域错误:
include script.js没有嵌套在if (a === 5)的代码块内,所以无论a的值是多少,都会强制引入该文件。
修正后的代码
- var a = 5; - var b = 3; script if (a === 5) if (b === 2) | var x = true; include script.js
关键语法说明(翻译自Pug官方文档)
在Pug的<script>标签内使用include时,需注意以下规则:
include是编译期指令,会直接将目标文件内容插入到当前位置,必须通过缩进绑定到对应的条件代码块中,才能实现条件性引入。- 在
<script>标签内编写原生JS代码时,单行内容需要用|标记;如果是多行代码,可以使用script.开启纯文本模式,避免Pug解析语法冲突。
内容的提问来源于stack exchange,提问作者AGamePlayer
相关产品推荐
相关产品推荐

