关于Hexo搭建博客(一)
作为第一篇博客,简单谈谈创建博客过程中的一些心得体会。
1. Why HEXO ?
现在市面上现成的可以写博客的平台有很多,像CSDN、博客园、简书等,优点是可以直接在上面发表,用户无需花费很多精力去折腾,写的文章百度也能搜到,当然缺点也很明显:毕竟依托平台,自由度会受到限制,很多想法并不好实现,同时各种广告导致博客环境并不好,所以并不适用于长期使用的个人博客。
对于我最初创建博客的定位而言主要有以下几点:
- 博客界面美观易用,可以自己DIY
- 仅用于记录一些学习过程和心得体会
- 成本低,部署容易,后期不需要太多精力去维护
基于这个定位,对比了几款比较热门的博客框架像WordPress,Hexo,Jekyll,HUGO等,我最终选择了HEXO。
区分这几种博客框架,首先得区分静态网页和动态网页的区别:
- 静态网页是标准的
HTML
文件,相比较于动态网页,它没有后台数据库,不能与用户进行交互,每个网页都是一个真实存放在服务器上的文件,由于其内容相对稳定,页面浏览速度更快,更容易被搜索引擎检索,成本较低,适合个人低成本、功能需求不多的情况下使用。 - 动态网页通常是
.asp .jsp .php
类型的文件,当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后再发送给浏览器,网页生成是动态的,所以访问速度较慢。它的设计以数据库为基础可以存储更多的数据,降低后期维护的成本,同时便于实现各种功能需求,适合商用。
- 静态网页是标准的
这里简单介绍一下上面提到的几个博客框架:
- WordPress:基于PHP开发的动态博客框架,需要用户自己搭建服务器。
- Jekyll:静态博客框架,需要
Ruby
、RubyGems
、Node.js
、Python
环境。 - HUGO:基于
Go
语言的静态网站生成器。 - Hexo:基于
Node.js
的静态博客框架,下面会详细介绍。
博客想要一步到位很难,而且成本也不低,所以找准自己定位才是关键。当你选择了服务器的方式进行搭建,很多时候就会很尴尬:一年几百几千的服务器都租了,总得弄个哇塞点的域名吧,上xx云一看,好点的域名第一年显示几十,乍一看很便宜,等到你续费的时候直接给你干到几百,这时候你一咬牙,买!买了以后还要备案,搞SSL证书告诉别人这网站不是以小博大紧张刺激的乐园而是你的博客。折腾这么一圈,终于可以写博客了吧,还不行,像WordPress这种基于PHP开发的动态博客框架,得在服务器上配置一大堆环境像LNMP(Linux+Nginx+MySQL+PHP)/ LAMP(Apache),就算用宝塔面板,不熟悉PHP没几天根本搞不定。经过无数次尝试,你的博客终于搭建好了,但是你已经精疲力尽,丝毫没有写博客的欲望了,硬着头皮写了一篇,发现网站又404了,于是你开始看服务器日志,找帖子解决……以上这些过程当然也可以采用Docker进行安装便于后期自动化部署,但是总体来说太过复杂且完全不能专注于内容创作。
HEXO是一款基于
Node.js
开发的快速、简洁且高效的静态博客框架,它天然可以部署到github page上,通过https://username.github.io
的方式可以直接进行访问(默认支持SSL),而且由于是静态网页,加载速度很快,同时还有丰富的主题可供选择,用户数量也多,所以HEXO可以说是搭建个人博客的首选。
2. Working Principle
- 要了解Hexo的原理,首先得了解一下它的文件结构,即博客文件夹的结构:
1
2
3
4
5
6
7
8
9
10
11.
├── _config.yml # 整个博客的配置文件。
├── node_modules # 依赖包,安装的插件以及Hexo所需的Node.js模块。
├── scaffolds # 模板文件夹,新建文章时根据对应模版类型生成文件。
├── source # 资源文件夹,存放博客资源。
| └── _posts # 博客文章目录。
└── themes # 主题文件夹,Hexo根据主题生成静态页面。
├── public # 最终得到的网页内容。
├── db.json # source解析所得到的缓存文件。
├── package.json # 应用程序信息,Hexo运行需要的js包。
- Hexo博客文章的编写支持
markdown
语法,简单易用,不需要过多关注文章的排版格式,文章是.md
类型的文件。 - Hexo的配置文件采用
yaml
语言编写,后缀为.yml
,这种语言专门用来写配置文件,主题文件夹下也有一个_config.yml
文件,是你使用该主题的配置文件。区别在于Hexo的配置文件是全局的,主要是站点的基本信息,文章的布局,写作的格式,部署到github上的参数等等,而主题的配置文件仅用于对该主题的一些界面及插件设置。 - 当我们编写好博客文章以后,Hexo通过模版引擎进行渲染,模版引擎默认使用
ejs
编写(由使用的主题而定,还有jade
,swig
等),它是一种简单高效的模板语言,通过数据和模板,可以生成HTML页面。模版引擎的作用就是将界面与数据分离,将模板内容中指定的地方替换成数据,实现业务代码与逻辑代码分离。这里source文件夹就是数据,即博客的文章,theme文件夹就是界面,即博客的主题。 - 当我们执行
hexo g
命令后,Hexo首先解析.md
文件建立索引,然后根据theme/layout的布局类型,通过模版引擎最终渲染为html、css、js
等文件到public文件夹下,生成可供浏览器显示的静态文章。 - 执行
hexo d
命令后,Hexo会把public文件夹的内容部署上去,如果使用github托管的话可以发现此时仓库里的文件就是public文件夹下的内容,并没有博客的源码。