普通视图

发现新文章,点击刷新页面。
昨天以前首页

Hugo 简明教程 01

2024年6月27日 18:39

首先就是如果你不是没有域名和服务器,我完全不推荐你使用静态网页生成器,简单点说,静态博客能干的动态博客都能干,反过来就差太多了。如果你酷爱使用 markdown 写作,那也有很多支持 markdown 写作的程序和平台。一般来说,使用静态博客的原因:

  1. 不想花钱购买服务器
  2. 不想维护服务器
  3. 抗拒国内内容审查
  4. 折腾的快感

其他的理由什么速度快、方便管理都是扯蛋,对普通用户来说,可视化界面才是王道。至于内容审查那就是不能使用国内服务器,一般没有了国内服务器的速度优势,那其实还不如直接找个托管平台省事。没有可视化界面都绝大部分人来说都是灾难,这也是为什么使用静态网页编译器的都是程序员居多。

动态博客

wordpress/typecho/ghost 为代表,有可视化界面,方便管理,但需要一台服务器,选择国内云服务器的话一年可能需要几百块。这些程序都是可视化操作,上手及其简单。

静态网页生成器

一般来说所谓意义上的静态博客都是把 markdown 文件转化为 html,虽然可以使用其他服务实现花里胡哨的各种功能,但那其实和静态网页生成器没任何关系了,因为这些功能放在任何页面都可以使用。而不同程序的区别也仅仅是编译速度和 html 模版引擎的区别而已。我相信绝大多数折腾这玩意的人都只会关系主题长啥样,绝对不会关注 markdown 是怎么转成 html 的。

优势

我真的说不出来这玩意有啥优势,唯一的优势就是可以省下服务器的钱。如果你想要好的体验,再弄个不错的图床啥的,还是要花钱。

缺点

  1. 没有可视化管理界面
  2. 不搭载三方服务无法实现评论等基础功能
  3. 图片等媒体管理极其不方便
  4. 文档差劲,模版语言非程序员难以理解
  5. 想要顺畅使用需要 git 基础知识,使用 github 还需破解网络问题

虽然各种自动部署教程很多,也有可视化 git 客户端,也有专门的 markdown 写作工具,但是显然是需要多个地方配合起来使用,我相信除了折腾的成就感,写作体验真的算是差的了。

hugo

为啥选择 hugo,仅仅是比较火而已,和其他静态网页生成器并没有本质区别。再次强调我不推荐任何使用传统动态博客程序如 WordPress 的博主转到 hugo,对于个人博客来说,我觉得什么程序都一样,wordpress 臃肿之类的也只是大部分人的心理作用罢了。

使用 Hugo 最好搭配一些简单的计算机知识,终端,git 等,这样能极大程度帮助你更好的管理博客。静态博客本质上是 Markdown 文件转 html,长期维护自然就需要管理 md 文件,当然一些写作软件也是支持的。本地调试需要使用终端执行一些命令,需要使用命令行工具。在默认情况下,图片需要手动管理并插入到文章中,和可视化编辑器那种上传插入有很大区别,一些写作软件在配置之后可以实现突破自动上传的功能。

另外就是自动部署一般都是使用 Github 仓库,需要解决网络问题,托管平台的网络可能有问题,需要额外优化。

如果你克服了上面的困难,自动部署成功,那么你后面的使用就比较轻松了,只需要管理你的 markdown 文件,其他的应该都已经是自动的了。如果你追求个性,需要修改主题,那么你需要一点计算机知识,如果你想定制一些功能,那么恭喜你,你进入了一个大坑,hugo 的文档写的很差。

安装

我推荐 mac 用户使用,直接使用 brew 安装即可。

brew install hugo

如果是 windows 平台,可以去官网下载构建好好的二进制包,或者使用包管理工具Chocolatey 等,这里就不介绍了,安装好之后使用下面的命令就可以创建站点了。

hugo new site blog

主题

主题就是决定你的网页长什么样子,hugo 安装主题需要把主题放在themes 文件夹下,并在 hugo 配置文件中启用。

以下是安装主题的三种方法:

  • 直接放在 themes 文件夹下
  • git add submodule
  • go module

如果自定义主题,建议使用 git submodule,然后利用 hugo 的联合文件系统根目录下自定义,如果不想折腾,那么就随意了。主题安装好之后要在 hugo 配置文件中启用

内容

内容也就是content 目录下的markdown 文件,构建后 hugo 会把这些文件转化为html文件。

一般来说,新增内容有以下方法:

  1. 使用 hugo new conent 命令
  2. 直接复制已有 markdown 文件并修改文件名和内容
  3. 使用第三方写作工具维护 markdown 文件夹

发布

发布就是编译后的html文件可以在浏览器中访问了,一般有以下几种方法:

  1. 使用 hugo build 命令转换为 html 手动上传
  2. 使用 github actions 自动构建
  3. 使用 hugo 作为 web 服务器

以上就是简单介绍,深入了解可以围观我后面的文章。

Hugo 简明教程 05

2024年6月27日 16:05

本文主要讲解 hugo 目录结构和主题目录结构的基本逻辑。Hugo 中有一些概念如 UnionFS,Hugo pipes 对普通用户来说很难理解,我这里尽量用白话来解释,可能不是很准确,但能让你大致理解 hugo 的文件逻辑。

联合文件系统

首先要理解一个概念就是 Union file system(联合文件系统),简单来说就是可以多个目录挂载到同一个位置。当两个或多个文件具有相同路径的时候,优先级的顺序遵循挂载的顺序。比如可以将任意目录挂载到content文件夹下。
配置文件如下hugo.yaml用白话来讲就是合并多个文件夹,路径相同的时候前面的优先

module:
  mounts:
  - source: content
    target: content
  - source: /home/rich/shared-content
    target: content

这样/home/rich/shared-content 下的 markdown 文件也会被视为content下的内容,一般情况下普通用户不会这么操作。但是我们修改主题的时候,可以通过在项目目录的相同位置放置一个副本来覆盖主题的模板。这也是我推荐的修改主题的方法,可以做到不污染原主题文件,以免更新主题的时候修改的部分被覆盖。

主题目录

下面介绍一下 hugo 主题的目录结构,使用 hugo new theme 命令创建的初始目录如下。

farallon/
├── archetypes/
├── assets/
├── data/
├── i18n/
├── layouts/
├── static/
├── LICENSE
├── README.md
├── hugo.toml
└── theme.toml

archetypes

原型文件,前面的文章已经讲过。

assets 和 static

static 目录下的文件在构建后会被原样复制到public 文件夹下,assets则可以用来存放一些编译前的文件如 scsstypescript 等,assets 文件夹下的文件可以使用resources.Get 来调用。

data

用来存储一些特别的数据,实现效果,不过不是特别复杂我还是推荐使用 markdownfront meta 来存储。

i18n

国际化也就是翻译文件,适合多语言站点。

layouts

这个就是主题的模版文件了,除了layouts/_defaultlayouts/patialslayouts/shortcodes 这三个文件夹,其他 layouts 下的文件夹均可以理解为和 section 对应,这里又分设置为 taxonomy 和普通 section

taxonomy

  1. list.html 分类列表
  2. term.html 文章列表
  3. xxx.html 文章列表模版 xxx 可定义为 layout

模版样式使用方法,content/taxonomy/\_index.md

layout: xxx

具体可以参考我主题里的 travel 分类样式。

普通 section

  1. list.html 列表
  2. single.html 详情页
  3. xxx.html 自定义详情页 xxx 可定义为 layout

模版样式使用方法,content/page/movie.md

layout: xxx

具体可以参考我主题里的自定义页面样式。

partilas 下的文件可以理解为可复用的文件,可以使用{{ partial "post.html" . }}来调用。

shortcode 则为一些自定义短代码。

一些自定义短代码文件。

_default

此文件夹是优先级最低的,只有没有任何匹配才会使用此文件夹下的文件。

  1. baseof.html 基础框架
  2. list.html 文章列表
  3. single.html 文章详情页
  4. _markup 文件夹则可以对 hugo 默认渲染逻辑进行修改,render-link.html 可对超链接进行修改,我的主题也是通过此文件实现了豆瓣条目的embed功能。

还有一些其他文件如首页index.html 404 页面404.html就非常好理解了,不单独介绍了。

❌
❌