Hugo游乐场内容初始化示例详解
来源:脚本之家
时间:2023-02-25 08:29:54 306浏览 收藏
今天golang学习网给大家带来了《Hugo游乐场内容初始化示例详解》,其中涉及到的知识点包括初始化、Hugo游乐场等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~
正文
使用Hugo构建站点的体验很棒。 首先是构建速度快,其次是使用起来简单,一个hugo
命令,我们的站点就已经就绪。
在构建过程中,Hugo提供了丰富的内置功能函数,可以在构建过程中向你提供所需要的几乎任何站点相关的信息。 通过可重用模板,让主题来帮助处理所有展示和布局相关的问题。 让作者更专注在内容的创作上。
Hugo 游乐场
站点构建的就将写好的内容,转化成Web服务器能理解的网站资源。 比如我们写作的时候用的是Markdown格式,生成的网站资源通常是HTML格式。
下面是一个简单的初始化博客内容:
-- config.toml -- theme = "mytheme" contentDir = "mycontent" -- myproject.txt -- Hello project! -- themes/mytheme/mytheme.txt -- Hello theme! -- mycontent/blog/post.md -- --- title: "Post Title" --- ### first blog Hello Blog -- layouts/index.html -- {{ $entries := (readDir ".") }} START:|{{ range $entry := $entries }}{{ if not $entry.IsDir }}{{ $entry.Name }}|{{ end }}{{ end }}:END: -- layouts/_default/single.html -- {{ .Content }} === Static Content ===
可以看到我们自定义了一个主题mytheme,只有一个mytheme.txt文件,并没有实际的模板文件。 这将会在下面的构建流程讲解中,帮助我们理解到主题是如何嵌套和加载的。
我们的内容文件夹是mycontent,在blog目录下有一篇简单博文/blog/post.md。 如果想要独立访问这篇博文,就需要为她生成一个HTML文件,这样我们就可以在浏览器中访问了。
在样例中,为了生成首页和博客,我们还在layouts下创建了两个模板。 一个是首页模板index.html,另一个则是单篇文章会用到的模板_default/single.html。
通过golang tools txtar解析上述文本,方便我们转换成如下结构的磁盘文件:
. ├── config.toml ├── layouts │ ├── _default │ │ └── single.html │ └── index.html ├── mycontent │ └── blog │ └── post.md ├── myproject.txt └── themes └── mytheme └── mytheme.txt
通过Hugo命令进行构建,就能生成如下站点资源:
➜ public tree . ├── blog │ └── index.html ├── index.html └── robots.txt
并包含了我们想要的信息:
站点首页
➜ public cat index.html START:|config.toml|myproject.txt|:END:%
博客页面
➜ public cat blog/index.html <h3 id="first-blog">first blog</h3> <p>Hello Blog</p> === Static Content === %
那Hugo的这个魔术到底是怎么变出来的呢?
为了了解Hugo构建的核心原理,通过对Hugo最新源码进行裁剪,移除当前阶段不必要的"噪音"。 结合我们上面的实例,手动生成了一个最小可工作源码库 - hugo游乐场。 以保证我们在这个游乐场可以尽情地玩耍,专注于核心原理,享受整个源码的学习过程。
通过命令:
git ls-files | grep '.go' | xargs wc -l
分别统计gohugoio/hugo和hugo playground的代码行数。 我们得到的数据分别是 163075 和 33990 行。
整整缩减了近四倍!
相信各位看官也会虎躯一震,信心倍增!看源码原来也可以这么开心。 请准备好瓜子饮料小板凳,各位看官你细听分说。
Show Me The Code
package main import ( "bytes" "fmt" "path/filepath" "golang.org/x/tools/txtar" ) // 文件结构 // 文件名: config.toml // 文件内容:theme = 'mytheme' var files = "-- config.toml --\n" + "theme = 'mytheme'" func main() { // 解析上面的文件结构 data := txtar.Parse([]byte(files)) fmt.Println("File start:") // 遍历解析生成的所有文件,通过File结构体获取文件名和文件数据 // f.Name 获取文件名 // f.Data 获取文件数据 for _, f := range data.Files { filename := filepath.Join("workingDir", f.Name) data := bytes.TrimSuffix(f.Data, []byte("\n")) fmt.Println(filename) fmt.Println(string(data)) } fmt.Println("File end.") }
Output:
# 解析后得到文件config.toml,以及下面的文件内容 # workingDir就是我们的工作目录,通常是要写入的文件目录 File start: workingDir/config.toml theme = 'mytheme' File end.
文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Hugo游乐场内容初始化示例详解》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
118 收藏
-
159 收藏
-
320 收藏
-
206 收藏
-
415 收藏
-
290 收藏
-
239 收藏
-
381 收藏
-
168 收藏
-
500 收藏
-
355 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 魔幻的大象
- 细节满满,码住,感谢作者的这篇技术贴,我会继续支持!
- 2023-05-14 15:05:41
-
- 幸福的面包
- 太全面了,收藏了,感谢大佬的这篇文章,我会继续支持!
- 2023-04-11 11:24:52
-
- 欣慰的紫菜
- 这篇博文太及时了,很详细,很有用,收藏了,关注作者大大了!希望作者大大能多写Golang相关的文章。
- 2023-04-01 04:02:24
-
- 细心的红酒
- 很好,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢楼主分享技术文章!
- 2023-03-28 14:22:41
-
- 贤惠的蜻蜓
- 这篇文章出现的刚刚好,太细致了,很有用,已收藏,关注博主了!希望博主能多写Golang相关的文章。
- 2023-03-23 21:46:28
-
- 酷炫的钥匙
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者分享文章!
- 2023-03-09 06:16:54