在 Hugo 模板中,变量作用域分为三种类型:全局作用域、局部作用域 和 模板作用域。不同作用域的变量在模板渲染时的优先级和生命周期各不相同。
1. 全局作用域 🌍
全局变量在 config.toml
中定义,可通过 .
操作符访问。
示例:
# config.toml
title = "我的博客"
author = "Hugo 用户"
在模板中:
<p>{{ .Site.Params.title }}</p>
<p>{{ .Site.Params.author }}</p>
2. 局部作用域 🧾
局部变量通过 {{ with }}
或 {{ range }}
等控制结构定义,作用域仅限当前块。
示例:
{{ with .Params }}
<p>{{ .title }}</p>
{{ end }}
⚠️ 局部变量会覆盖同名的全局变量,需注意优先级问题。
3. 模板作用域 🧩
模板作用域变量通过 {{ . }}
访问,通常指当前页面或内容对象。
示例:
<p>{{ .Title }}</p> <!-- 访问当前页面标题 -->
<p>{{ .Params.description }}</p> <!-- 访问内容参数 -->
📌 注意事项
- 使用
{{-
和-}}
可去除变量周围的空白字符 - 避免在模板中定义同名的全局变量
- 作用域嵌套时,优先级从内到外递减
如需深入学习 Hugo 模板语法,可参考官方文档:Hugo 模板指南