道破——Hugo
1. 快速上手
- 下载 Hugo 对应系统版本并安装。
Windows
将hugo.exe放到任意目录,并将该目录添加到系统-高级系统设置-环境变量
Linux
将hugo放到/usr/local/bin下
Mac
通过homebrew安装
| |
检查安装是否成功
| |
- 创建新站点
| |
- 添加主题
| |
- 添加内容
| |
- 启动服务器
| |
如果需要外部访问,执行命令时指定绑定IP:0.0.0.0
| |
2. 配置
2.1. .toml和.yml
学习配置之前必须掌握toml和yaml的用法,以免遇到不必要的报错。
TOML详细用法查看 TOML教程
YAML详细用法查看 YAML教程
3. 部署
GitHub Pages的部署方法请参考 道破——GitHub Pages
4. 主题
官方文档中用例是 Ananke 。
如果不喜欢这款主题,可以去 Hugo Themes 挑选一款最近仍在更新的主题。
一定要注意主题作者提供的使用文档,我在试了几个主题之后,发现需要修改太多以前写作的md文本Front-matter,如果不按照作者提供的关键字修改, 服务根本跑不起来,所以我选择了从Hexo-NexT移植的 hugo-theme-next 主题,可以参考作者提供的文档进行配置。
4.1. NexT快速上手
| |
执行完以上命令后,访问 http://localhost:1313/
后续更新主题只需要在你的站点目录中,执行如下命令:
| |
作者非常贴心,把已实现的和计划实现的功能配置都写在
config.yml中了,注释直观清晰,有需要的功能直接改。
4.2. 创建新篇
使用Hugo快速创建新篇。
| |
关于文章头部那些参数作用的说明参考如下:
| |
4.3. 主题支持语法
4.3.1. 块引用
在引用一些经典名言名句时,可以采用此短语,语法参考如下:
| |
实际效果:
希望是无所谓有,无所谓无的,这正如地上的路。
其实地上本没有路,走的人多了,也便成了路。
鲁迅
4.3.2. 信息块
支持 default,info,success,warning,danger 等五种不同效果的展示,语法参考如下:
| |
实际效果:
4.3.4. Default Header
Welcome to Hugo NexT!
4.3.5. Info Header
Welcome to Hugo NexT!
4.3.6. Success Header
Welcome to Hugo NexT!
4.3.7. Warning Header
Welcome to Hugo NexT!
4.3.8. Danger Header
Welcome to Hugo NexT!
5. Emoji
Emoji 可以通过多种方式在 Hugo 项目中启用。
emojify
方法可以直接在模板中调用, 或者使用
行内 Shortcodes
.
要全局使用 emoji, 需要在你的
网站配置
中设置 enableEmoji 为 true,
然后你就可以直接在文章中输入 emoji 的代码。
它们以冒号开头和结尾,并且包含 emoji 的 代码:
| |
呈现的输出效果如下:
去露营啦! ⛺ 很快就回来。
真开心! 😂
以下符号清单是 emoji 代码的非常有用的参考。
5.1. 表情与情感
5.1.1. 笑脸表情
| 图标 | 代码 | 图标 | 代码 |
|---|---|---|---|
| 😀 | grinning | 😃 | smiley |
| 😄 | smile | 😁 | grin |
| 😆 | laughingsatisfied | 😅 | sweat_smile |
| 🤣 | rofl | 😂 | joy |
| 🙂 | slightly_smiling_face | 🙃 | upside_down_face |
| 😉 | wink | 😊 | blush |
| 😇 | innocent |
5.1.2. 爱意表情
| 图标 | 代码 | 图标 | 代码 |
|---|---|---|---|
| 😍 | heart_eyes | 😘 | kissing_heart |
| 😗 | kissing | ☺️ | relaxed |
| 😚 | kissing_closed_eyes | 😙 | kissing_smiling_eyes |
5.1.3. 吐舌头表情
| 图标 | 代码 | 图标 | 代码 |
|---|---|---|---|
| 😋 | yum | 😛 | stuck_out_tongue |
| 😜 | stuck_out_tongue_winking_eye | 😝 | stuck_out_tongue_closed_eyes |
| 🤑 | money_mouth_face |
5.1.4. 国家和地区旗帜
| 图标 | 代码 | 图标 | 代码 |
|---|---|---|---|
| 🇦🇩 | andorra | 🇦🇪 | united_arab_emirates |
| 🇦🇫 | afghanistan | 🇦🇬 | antigua_barbuda |
| 🇦🇮 | anguilla | 🇦🇱 | albania |
| 🇦🇲 | armenia | 🇦🇴 | angola |
| 🇦🇶 | antarctica | 🇦🇷 | argentina |
| 🇦🇸 | american_samoa | 🇦🇹 | austria |
| 🇦🇺 | australia | 🇦🇼 | aruba |
| 🇦🇽 | aland_islands | 🇦🇿 | azerbaijan |
| 🇧🇦 | bosnia_herzegovina | 🇧🇧 | barbados |
| 🇧🇩 | bangladesh | 🇧🇪 | belgium |
| 🇧🇫 | burkina_faso | 🇧🇬 | bulgaria |
| 🇧🇭 | bahrain | 🇧🇮 | burundi |
| 🇧🇯 | benin | 🇧🇱 | st_barthelemy |
| 🇧🇲 | bermuda | 🇧🇳 | brunei |
| 🇧🇴 | bolivia | 🇧🇶 | caribbean_netherlands |
| 🇧🇷 | brazil | 🇧🇸 | bahamas |
| 🇧🇹 | bhutan | 🇧🇼 | botswana |
| 🇧🇾 | belarus | 🇧🇿 | belize |
| 🇨🇦 | canada | 🇨🇨 | cocos_islands |
| 🇨🇩 | congo_kinshasa | 🇨🇫 | central_african_republic |
| 🇨🇬 | congo_brazzaville | 🇨🇭 | switzerland |
| 🇨🇮 | cote_divoire | 🇨🇰 | cook_islands |
| 🇨🇱 | chile | 🇨🇲 | cameroon |
| 🇨🇳 | cn | 🇨🇴 | colombia |
| 🇨🇷 | costa_rica | 🇨🇺 | cuba |
| 🇨🇻 | cape_verde | 🇨🇼 | curacao |
| 🇨🇽 | christmas_island | 🇨🇾 | cyprus |
| 🇨🇿 | czech_republic | 🇩🇪 | de |
| 🇩🇯 | djibouti | 🇩🇰 | denmark |
| 🇩🇲 | dominica | 🇩🇴 | dominican_republic |
| 🇩🇿 | algeria | 🇪🇨 | ecuador |
| 🇪🇪 | estonia | 🇪🇬 | egypt |
| 🇪🇭 | western_sahara | 🇪🇷 | eritrea |
| 🇪🇸 | es | 🇪🇹 | ethiopia |
| 🇪🇺 | eueuropean_union | 🇫🇮 | finland |
| 🇫🇯 | fiji | 🇫🇰 | falkland_islands |
| 🇫🇲 | micronesia | 🇫🇴 | faroe_islands |
| 🇫🇷 | fr | 🇬🇦 | gabon |
| 🇬🇧 | gbuk | 🇬🇩 | grenada |
| 🇬🇪 | georgia | 🇬🇫 | french_guiana |
| 🇬🇬 | guernsey | 🇬🇭 | ghana |
| 🇬🇮 | gibraltar | 🇬🇱 | greenland |
| 🇬🇲 | gambia | 🇬🇳 | guinea |
| 🇬🇵 | guadeloupe | 🇬🇶 | equatorial_guinea |
| 🇬🇷 | greece | 🇬🇸 | south_georgia_south_sandwich_islands |
| 🇬🇹 | guatemala | 🇬🇺 | guam |
| 🇬🇼 | guinea_bissau | 🇬🇾 | guyana |
| 🇭🇰 | hong_kong | 🇭🇳 | honduras |
| 🇭🇷 | croatia | 🇭🇹 | haiti |
| 🇭🇺 | hungary | 🇮🇨 | canary_islands |
| 🇮🇩 | indonesia | 🇮🇪 | ireland |
| 🇮🇱 | israel | 🇮🇲 | isle_of_man |
| 🇮🇳 | india | 🇮🇴 | british_indian_ocean_territory |
| 🇮🇶 | iraq | 🇮🇷 | iran |
| 🇮🇸 | iceland | 🇮🇹 | it |
| 🇯🇪 | jersey | 🇯🇲 | jamaica |
| 🇯🇴 | jordan | 🇯🇵 | jp |
| 🇰🇪 | kenya | 🇰🇬 | kyrgyzstan |
| 🇰🇭 | cambodia | 🇰🇮 | kiribati |
| 🇰🇲 | comoros | 🇰🇳 | st_kitts_nevis |
| 🇰🇵 | north_korea | 🇰🇷 | kr |
| 🇰🇼 | kuwait | 🇰🇾 | cayman_islands |
| 🇰🇿 | kazakhstan | 🇱🇦 | laos |
| 🇱🇧 | lebanon | 🇱🇨 | st_lucia |
| 🇱🇮 | liechtenstein | 🇱🇰 | sri_lanka |
| 🇱🇷 | liberia | 🇱🇸 | lesotho |
| 🇱🇹 | lithuania | 🇱🇺 | luxembourg |
| 🇱🇻 | latvia | 🇱🇾 | libya |
| 🇲🇦 | morocco | 🇲🇨 | monaco |
| 🇲🇩 | moldova | 🇲🇪 | montenegro |
| 🇲🇬 | madagascar | 🇲🇭 | marshall_islands |
| 🇲🇰 | macedonia | 🇲🇱 | mali |
| 🇲🇲 | myanmar | 🇲🇳 | mongolia |
| 🇲🇴 | macau | 🇲🇵 | northern_mariana_islands |
| 🇲🇶 | martinique | 🇲🇷 | mauritania |
| 🇲🇸 | montserrat | 🇲🇹 | malta |
| 🇲🇺 | mauritius | 🇲🇻 | maldives |
| 🇲🇼 | malawi | 🇲🇽 | mexico |
| 🇲🇾 | malaysia | 🇲🇿 | mozambique |
| 🇳🇦 | namibia | 🇳🇨 | new_caledonia |
| 🇳🇪 | niger | 🇳🇫 | norfolk_island |
| 🇳🇬 | nigeria | 🇳🇮 | nicaragua |
| 🇳🇱 | netherlands | 🇳🇴 | norway |
| 🇳🇵 | nepal | 🇳🇷 | nauru |
| 🇳🇺 | niue | 🇳🇿 | new_zealand |
| 🇴🇲 | oman | 🇵🇦 | panama |
| 🇵🇪 | peru | 🇵🇫 | french_polynesia |
| 🇵🇬 | papua_new_guinea | 🇵🇭 | philippines |
| 🇵🇰 | pakistan | 🇵🇱 | poland |
| 🇵🇲 | st_pierre_miquelon | 🇵🇳 | pitcairn_islands |
| 🇵🇷 | puerto_rico | 🇵🇸 | palestinian_territories |
| 🇵🇹 | portugal | 🇵🇼 | palau |
| 🇵🇾 | paraguay | 🇶🇦 | qatar |
| 🇷🇪 | reunion | 🇷🇴 | romania |
| 🇷🇸 | serbia | 🇷🇺 | ru |
| 🇷🇼 | rwanda | 🇸🇦 | saudi_arabia |
| 🇸🇧 | solomon_islands | 🇸🇨 | seychelles |
| 🇸🇩 | sudan | 🇸🇪 | sweden |
| 🇸🇬 | singapore | 🇸🇭 | st_helena |
| 🇸🇮 | slovenia | 🇸🇰 | slovakia |
| 🇸🇱 | sierra_leone | 🇸🇲 | san_marino |
| 🇸🇳 | senegal | 🇸🇴 | somalia |
| 🇸🇷 | suriname | 🇸🇸 | south_sudan |
| 🇸🇹 | sao_tome_principe | 🇸🇻 | el_salvador |
| 🇸🇽 | sint_maarten | 🇸🇾 | syria |
| 🇸🇿 | swaziland | 🇹🇨 | turks_caicos_islands |
| 🇹🇩 | chad | 🇹🇫 | french_southern_territories |
| 🇹🇬 | togo | 🇹🇭 | thailand |
| 🇹🇯 | tajikistan | 🇹🇰 | tokelau |
| 🇹🇱 | timor_leste | 🇹🇲 | turkmenistan |
| 🇹🇳 | tunisia | 🇹🇴 | tonga |
| 🇹🇷 | tr | 🇹🇹 | trinidad_tobago |
| 🇹🇻 | tuvalu | 🇹🇼 | taiwan |
| 🇹🇿 | tanzania | 🇺🇦 | ukraine |
| 🇺🇬 | uganda | 🇺🇸 | us |
| 🇺🇾 | uruguay | 🇺🇿 | uzbekistan |
| 🇻🇦 | vatican_city | 🇻🇨 | st_vincent_grenadines |
| 🇻🇪 | venezuela | 🇻🇬 | british_virgin_islands |
| 🇻🇮 | us_virgin_islands | 🇻🇳 | vietnam |
| 🇻🇺 | vanuatu | 🇼🇫 | wallis_futuna |
| 🇼🇸 | samoa | 🇽🇰 | kosovo |
| 🇾🇪 | yemen | 🇾🇹 | mayotte |
| 🇿🇦 | south_africa | 🇿🇲 | zambia |
| 🇿🇼 | zimbabwe |
6. Markdown
以下内容是在 NexT 主题中测试是否支持 Markdown 的各种语法,并展示实际效果。
查看MarkDown原生语法请移步 Markdown Reference
6.1. 标题样式
让我们从所有可能的标题开始,在 HTML 中 <h1>-<h6>元素分别表示六个不同级别的标题样式,其中 <h1> 为最大标题,<h6>为最小标题,效果如下:
| |
6.2. 段落格式
根据
W3C
定义的
HTML5 规范
,HTML 文档由元素和文本组成。每个元素的组成都由一个
开始标记
表示,例如: <body> ,和
结束标记
表示,例如: </body> 。(某些开始标记和结束标记在某些情况下可以省略,并由其他标记暗示。)
元素可以具有属性,这些属性控制元素的工作方式。例如:超链接是使用 a 元素及其 href 属性形成的。
6.2.1. Markdown 语法
| |

6.2.2. HTML IMG 标签
| |

6.2.3. SVG 格式
| |
6.3. 列表类型
6.3.1. 有序列表
- 第一个元素
- 第二个元素
- 第三个元素
6.3.2. 无序列表
- 列表元素
- 另一个元素
- 和其它元素
6.3.3. 嵌套列表
借助 HTML 的 ul 元素来实现。
- 第一项
- 第二项
- 第二项第一个子项目
- 第二项第二个子项目
- 第二项第二分项第一分项
- 第二项第二分项第二分项
- 第二项第二分项第三分项
- 第二项第三个子项目
- 第二项第三分项第一分项
- 第二项第三分项第二分项
- 第二项第三分项第三分项
- 第三项
6.3.4. 自定义列表
通过 HTML 的 dl 元素还支持自定义列表(表格列表)。
- Hugo 目录结构
- assets
- config.toml
- content
- data
- theme
- static
- Hugo 模板
- 基础模板
- 列表模板
- 单页模板
6.4. 块引用
blockquote 元素表示从另一个源引用的内容,可以选择引用必须在 footer 或 cite 元素中,也可以选择使用注释和缩写等行内更改。
引用文本 这一行也是同样的引用 同样你也在
blockquote中使用 Markdown 语法书写
带有引文的 Blockquote 元素效果。
我的目标不是赚大钱,是为了制造好的电脑。当我意识到我可以永远当工程师时,我才创办了这家公司。
根据 Mozilla 的网站记录,Firefox 1.0 于 2004 年发布,并取得了巨大成功。
6.5. 表格
表格并不算是 Markdown 的核心要素,但 Hugo 同样支持它。
| ID | 创建者 | 模型 | 年份 |
|---|---|---|---|
| 1 | Honda | Accord | 2009 |
| 2 | Toyota | Camry | 2012 |
| 3 | Hyundai | Elantra | 2010 |
可以使用 : (英文格式冒号)来对表格内容进行对齐。
| 表格 | 可以是 | 很酷 |
|---|---|---|
| 左对齐 | 居中 | 右对齐 |
| 左对齐 | 居中 | 右对齐 |
| 左对齐 | 居中 | 右对齐 |
同样也可以在表格中使用 Markdown 语法。
| 表格 | 中 | 使用 | Markdown 语法 |
|---|---|---|---|
| 斜体 | 粗体 | 代码块 |
6.6. Code
| |
| |
6.7. 其它元素: abbr、sub、sup、kbd等等
GIF 是位图图像格式。
H2O
C6H12O6
Xn + Yn = Zn
按X获胜。或按CTRL+ALT+F显示 FPS 计数器。
比特作为信息论中的信息单位,也被称为 shannon ,以信息论领域的创始人 Claude shannon 的名字命名。
参考:
- 来自 Mainroad 主题的 Basic Elements 内容
Hugo 通过 Chroma 提供非常快速的语法高亮显示,现 Hugo 中使用 Chroma 作为代码块高亮支持,它内置在 Go 语言当中,速度是真的非常、非常快,而且最为重要的是它也兼容之前我们使用的 Pygments 方式。
以下通过 Hugo 内置短代码 highlight 和 Markdown 代码块方式分别验证不同语言的代码块渲染效果并能正确高亮显示,有关优化语法突出显示的更多信息,请参阅
Hugo 文档
。
7. 高亮
7.1. 编程语言
7.1.1. GO
| |
7.1.2. Java
| |
7.1.3. Python
| |
7.1.4. Git 对比
| |
*** /path/to/original ''timestamp''
--- /path/to/new ''timestamp''
***************
*** 1 ****
! This is a line.
--- 1 ---
! This is a replacement line.
It is important to spell
-removed line
+new line
7.2. 文件
7.2.1. Make 文件
CC=gcc
CFLAGS=-I.
hellomake: hellomake.o hellofunc.o
$(CC) -o hellomake hellomake.o hellofunc.o -I.
7.2.2. Markdown 文档
| |
7.3. 数据内容
7.3.1. JSON 数据
| |
7.3.2. XML 内容
| |
7.3.3. SQL 查询
| |
除以上列举的代码高亮显示外,还支持诸如:C 语言、C++、HTML、CSS、Shell脚本等各主流的代码语言高亮显示,可自行测试效果。