
Hugo模板中的{{ }}内并非Handlebars语法,而是Go模板语法;支持的函数分为Go内置函数和Hugo扩展函数两类,均需查阅官方文档确认可用性,不可直接调用任意Go代码。
hugo模板中的`{{ }}`内并非handlebars语法,而是go模板语法;支持的函数分为go内置函数和hugo扩展函数两类,均需查阅官方文档确认可用性,不可直接调用任意go代码。
Hugo 使用 Go 的 text/template 引擎进行模板渲染,因此其模板语法(如 {{ range .Data.Pages }})完全遵循 Go 模板规范,而非 JavaScript 的 Handlebars。所谓“range”,是 Go 模板的内置动作(action),用于遍历切片、数组、映射或通道,并为每个元素执行嵌套模板。例如:
{{ range .Site.Pages }}
<h2>{{ .Title }}</h2>
<p>{{ .Summary }}</p>
{{ end }}
该代码等价于循环遍历站点所有页面,依次渲染标题与摘要。
需要注意的是:
✅ 可用函数有严格限制:仅限 Go 模板内置函数(如 len, first, print, printf, eq, and, or 等)和 Hugo 显式注册的扩展函数(如 where, sort, dateFormat, absURL, resources.Get 等);
❌ 不可直接使用任意 Go 标准库函数(如 strings.ToUpper 或 time.Now()),除非 Hugo 已将其封装为模板函数;
❌ 不支持 Handlebars 特性(如 {{#if}}, {{! comment}}, {{> partial}}),这些在 Hugo 中均无效。
官方权威文档来源如下:
- ? Go 模板内置语法与函数:https://www.php.cn/link/b9824e30cdd549d8a5d1ec681a91e378
- ? Hugo 专属模板函数(含示例与参数说明):https://www.php.cn/link/5afced399b51294d26cdeb046b221347
建议开发时优先查阅 Hugo 函数文档——它按类别组织(字符串、日期、资源、数据结构等),并提供可直接复用的代码片段。同时,启用 Hugo 的调试模式(hugo server --debug)可帮助捕获模板错误,如调用未定义函数时会明确提示 "function 'xxx' not defined",便于快速定位问题。










