在 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 模板语法,可参考官方文档:Hugo 模板指南