特性
Hugo 的功能集:框架、内容创作、内容管理、资源管道与性能。
框架
- 跨平台
- 在 Linux、macOS、Windows 等系统上安装单个可执行文件即可使用。
- 多语言
- 为每种语言和地区本地化项目,包括翻译、图片、日期、货币、数字与排序规则;支持单主机与多主机配置。
- 输出格式
- 把页面渲染为一种或多种输出格式,可按页面类型、section 和路径控制;HTML 为默认格式,还可添加 JSON、RSS、CSV 等。
- 模板
- 用变量、函数和方法编写模板,把内容、资源和数据转换成发布的页面;也可为任何输出格式创建模板。
- 主题
- 使用社区贡献的数百个主题减少开发时间和成本;主题覆盖企业站点、文档项目、作品集、落地页、博客、简历等。可从 themes.gohugo.io 获取。
- 模块
- 创建或导入打包好的原型、资源、内容、数据、模板、翻译表、静态文件或配置;模块可作为新项目的基础,也可增强已有项目。
- 隐私
- 通过配置项目,帮助符合各地区的隐私法规。
- 安全
- 安全模型假定模板与配置作者可信、内容作者不可信,可生成防范代码注入的 HTML;其他保护可阻止调用任意应用、限制环境变量访问、阻止连接任意远程数据源。
内容创作
- 内容格式
- 支持 Markdown、HTML、AsciiDoc、Emacs Org Mode、Pandoc 与 reStructuredText;默认的 Markdown 遵循 CommonMark 与 GitHub Flavored Markdown 规范。
- Markdown 属性
- 为 Markdown 图片和块级元素(引用块、代码块、标题、分隔线、列表、段落、表格)添加
class、id等属性。 - Markdown 扩展
- 利用内置扩展创建表格、定义列表、脚注、任务列表、插入文本、标记文本、下标、上标等。
- Markdown 渲染钩子
- 渲染引用块、代码块、标题、图片、链接和表格时,可覆盖 Markdown 到 HTML 的转换,例如把独立图片渲染为
figure元素。 - 图表
- 用围栏代码块和渲染钩子在内容中加入图表。
- 数学公式
- 用 LaTeX 标记在 Markdown 中加入数学公式和表达式。
- 语法高亮
- 用内置高亮器高亮代码,Markdown 围栏代码块默认启用;支持数百种语言和数十种样式。
- 短代码
- 使用内置短代码或自行创建,插入复杂内容,例如
audio、video元素、从数据源渲染表格、插入其他页面的片段。
内容管理
- 多维内容模型
- 从单一来源按语言、版本和角色的任意组合生成页面,同一份内容可发布到项目内的多个站点,无需复制文件。
- 内容适配器
- 在构建时动态添加内容,例如从 JSON、TOML、YAML 或 XML 等远程数据源生成页面。
- 分类法
- 对内容分类,在页面之间建立逻辑关系,例如建立作者分类法并指派作者;分类系统还提供带权重的倒排索引,按相关度渲染相关页面列表。
- 数据
- 用 CSV、JSON、TOML、YAML 和 XML 等本地或远程数据源扩充内容,例如用短代码从远程 CSV 渲染表格。
- 菜单
- 通过菜单系统快速访问内容,可全局、自动或逐页配置,是 Hugo 多语言架构的关键部分。
- URL 管理
- 通过全局或逐页配置,从任意路径提供任意页面。
资源管道
- CSS 处理
- 打包、转换、压缩、生成 source map、SRI 哈希,并集成 PostCSS。
- 图像处理
- 转换、缩放、裁剪、旋转、调整颜色、应用滤镜、叠加文字和图片,以及提取元数据。
- JavaScript 打包
- 把 TypeScript 与 JSX 转译为 JavaScript,并打包、tree shake、压缩、生成 source map、SRI 哈希。
- Sass 处理
- 把 Sass 转译为 CSS,并打包、tree shake、压缩、生成 source map、SRI 哈希,可集成 PostCSS。
- Tailwind CSS 处理
- 把 Tailwind CSS 工具类编译为标准 CSS,并打包、tree shake、优化、压缩、SRI 哈希,可集成 PostCSS。
性能
- 缓存
- 把局部模板渲染一次后缓存结果(全局或指定上下文),减少构建时间和成本,例如避免资源管道结果在每页重复处理。
- 分段
- 把站点划分为多个分段以减少构建时间和成本,例如每小时渲染首页和新闻区块、每周渲染整个项目。
- 压缩
- 压缩 HTML、CSS 和 JavaScript,减小文件体积、带宽占用和加载时间。