经验贴:从0开始搭建个人主页
Hugo是一个十分好用的、搭建静态网页的框架。所谓的静态网页,在我的理解中就是访问次数远大于编辑次数的网页,此类网页常见于一些介绍性质的主页。因而,Hugo很适合用来搭建个人主页。
在开始阅读本博客之前,您可以按照您的需求完成以下事情:
- 阅读Hugo官方的教程。官方教程会比较简略,且无法满足一些客制化需求。
- 如果您想要深入了解Hugo的工作原理,请访问此连接。了解Hugo的工作原理可以帮助您在定制个人主页时,更方便的按照您的需求来修改代码,这一点是比较重要的!这是因为目前Hugo的相关博客并不多,内容大多鱼龙混杂,有时难以找到有效信息。这种时候,了解hugo的工作原理可能帮助您更准确地完成目标。
hugo官网已经给出了详细的安装方案,这里就不赘述了。安装教程
强烈推荐大家在linux系统上安装hugo并配置环境
安装好hugo之后,我们首先可以通过一行简单的命令hugo new site site_case
来快速创建一个空网站。
此时一个独属于你的个人主页就创建好啦!接下来可以选取一个你喜欢的模板,将模板嵌套在你的个人主页中。
|
|
此时文件的目录树如下:
到这一步,我们就可以启动server,看看目前的效果啦!
服务器上输入:
hugo server --disableFastRender --i18n-warnings --bind localhost -p 23456
本地powershell输入:
ssh -N -L localhost:5942:localhost:23456 {username}@{server_ip} -p {port}
浏览器输入网址:
localhost:5942
样例:
此部分是我对hugo使用的一些理解~
OK,让我们从hugo new site
这里开始解读。
首先我们可以看到,hugo new site site_case
这一行命令生成的文件树如下:
- archetypes:通常情况下这个文件夹是不重要的= =(有时可以保存一些默认的模板,不过对于新手来说了解的越少越容易理解)
- content:此处存储了你要显示的所有文章。在content目录下也可以创建多个文件夹,用来归类各类文章。
- data:暂时用不到~
- layouts:暂时用不到~
- resources:暂时用不到~
- static:此处可以存储要使用的一些图片或者视频等静态资源。例如,我们可以把要使用的图片存储于
static/images/test.png
。注意,存储的图片在使用时使用的路径并不是static/images/test.png
而是images/test.png
,后面会给解释。 - themes:此处存储了你要使用的主题模板。
- config.toml:整个网站的相关配置。
在了解了各个文件夹都是什么作用了之后,我们来说一说hugo是如何把所写的文章转换成网页的(即hugo命令)。首先概括一下流程:
用户撰写文章 -> hugo编译config.toml
和模板中的相关文件为html文件 -> hugo将静态资源(static/
)与用户撰写文章链接起来,并编译成html文件 -> 将以上这些html文件组织起来,形成个人网站
- 用户撰写文章:用户使用markdown及html撰写文章。hugo通过其独特的shortcode理解用户文章,并进行编译。
- hugo编译
config.toml
和模板中的相关文件为html文件:首先,site_case/config.toml
中保存了所搭建网站的各种信息,hugo会根据这些信息来决定所生成网页的一些特性。然后,模板中也会有一些相关文件。例如,themes/even/layouts/index.html
中便写明了even
这个主题在进入主页面时所显示的html结构。hugo会将以上信息组织起来,生成用户定制的主题效果。 - hugo将静态资源(
static/
)与用户撰写文章链接起来,并编译成html文件:使用hugo
命令时,hugo会生成public
文件夹。事实上,仅public
文件夹用于构建主页。上述的两步编译好的结果均会存储到public
文件夹中。而static/
路径下的所有文件夹,都会直接被编译到public
中。例如,static/images/test.png
在编译后的路径就是images/test.png
(以public
为根路径)。因此,我们在文章里引用图片路径时,要使用后者才能正确显示。 - 将以上这些html文件组织起来,形成个人网站:将生成html文件在浏览器打开,以便浏览。
一些简单的客制化需求例如写博客、在config.toml
中修改个人信息等,都已在hugo的官方教程中给出。这里我简单描述一下一些特殊的客制化需求。
大家可以先看一下我的个人主页的menu,和主题中内置的menu是不太一样的,那如何实现这样的效果呢?
首先,我们可以在config.toml
中找到与menu相关的一些配置。
|
|
此处config中,name
即要在menu中所显示的按钮的名称,weight
控制各按钮的排列顺序,而注意url
是以content/
为base url的,/life/
等皆为content
中的文件夹。
在尝试之后朋友们会发现,以这种形式创建的按钮,只能指向一个文章列表。如果我们想制作一个单独的
about
页面来介绍自己,该如何进行呢?
答案很简单,我们只需要在content
下创建一个单独的about.md
文件即可。当然,我们需要加一些设置= =
|
|
如果不想让用户点进主页就是一个最近文章列表,而指向一个单独的页面,该怎么办呢?
一个很自然的想法是,仿照上面About Me
的写法,单独创建一个markdown文件用来控制这个页面。但很可惜,这样做并不行,并且会带来一系列的问题。
此部分可以说比较困难了,我也花了比较多的时间,后续有空再更新这篇文章。大家感兴趣的话可以在About Me页面中添加我的联系方式 0.0
在定制自己的个人主页之后,最激动的时刻来了!我们要将个人主页进行部署,这样就可以通过互联网进行访问。此部分已有很多经验贴,下面列举一个:Hugo部署到Github
我自己撰写了一个部署脚本,希望对大家有帮助:
|
|
HINT: 记得打开github仓库中的action选项哦~