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

如何在Pug父模板中为引入的子模板传递参数?

在Pug父模板中给子模板传参的方法

当然可以给Pug的子模板传递参数!而且有两种非常实用的方式,完美匹配你多次引入子模板传不同值的需求,我给你详细拆解一下:

方法一:直接通过include传递局部变量

这种方式最直接,适合简单的参数传递场景。你的子模板example.pug已经定义了#{name}变量,只需要在父模板引入时直接给这个变量赋值即可:

子模板(example.pug)

p #{name}'s Pug source code!

父模板(parent.pug)

h1 Hello world
//- 直接传递字符串值
include example.pug name="name1"
//- 也可以传递父模板中定义的变量
- let userName = "name2"
include example.pug name=userName

渲染后的HTML结果:

<h1>Hello world</h1>
<p>name1's Pug source code!</p>
<p>name2's Pug source code!</p>

这里要注意:传递的name变量是局部作用域,只会在当前引入的子模板中生效,不会干扰父模板或其他子模板的变量。

方法二:使用Mixin(混合宏)实现更灵活的复用

如果你的子模板需要多次复用、传递多个参数,或者需要默认值,用Mixin会更合适。我们先把子模板改造成Mixin:

子模板(example.pug)

//- 定义一个接受name参数的Mixin
mixin example(name)
  p #{name}'s Pug source code!

//- 也可以给参数加默认值,调用时不传参就会用默认值
// mixin example(name = "默认用户")
//   p #{name}'s Pug source code!

父模板(parent.pug)

h1 Hello world
//- 先引入包含Mixin的子模板
include example.pug
//- 调用Mixin并传递参数
+example("name1")
+example("name2")

//- 也可以用变量调用
- let newUser = "自定义用户"
+example(newUser)

渲染后的HTML和方法一一致,但Mixin的扩展性更强——比如你可以给它加多个参数,甚至支持嵌套内容,非常适合复杂的组件复用场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:24:57