banner
My Posts

Hexo-1

Scroll down

关于Hexo搭建博客(一)

作为第一篇博客,简单谈谈创建博客过程中的一些心得体会。

1. Why HEXO ?

  • 现在市面上现成的可以写博客的平台有很多,像CSDN、博客园、简书等,优点是可以直接在上面发表,用户无需花费很多精力去折腾,写的文章百度也能搜到,当然缺点也很明显:毕竟依托平台,自由度会受到限制,很多想法并不好实现,同时各种广告导致博客环境并不好,所以并不适用于长期使用的个人博客。

  • 对于我最初创建博客的定位而言主要有以下几点:

    • 博客界面美观易用,可以自己DIY
    • 仅用于记录一些学习过程和心得体会
    • 成本低,部署容易,后期不需要太多精力去维护

    基于这个定位,对比了几款比较热门的博客框架像WordPressHexoJekyllHUGO等,我最终选择了HEXO

  • 区分这几种博客框架,首先得区分静态网页和动态网页的区别:

    • 静态网页是标准的HTML文件,相比较于动态网页,它没有后台数据库,不能与用户进行交互,每个网页都是一个真实存放在服务器上的文件,由于其内容相对稳定,页面浏览速度更快,更容易被搜索引擎检索,成本较低,适合个人低成本、功能需求不多的情况下使用。
    • 动态网页通常是.asp .jsp .php类型的文件,当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后再发送给浏览器,网页生成是动态的,所以访问速度较慢。它的设计以数据库为基础可以存储更多的数据,降低后期维护的成本,同时便于实现各种功能需求,适合商用。
  • 这里简单介绍一下上面提到的几个博客框架:

    • WordPress:基于PHP开发的动态博客框架,需要用户自己搭建服务器。
    • Jekyll:静态博客框架,需要RubyRubyGemsNode.jsPython环境。
    • 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编写(由使用的主题而定,还有jadeswig等),它是一种简单高效的模板语言,通过数据和模板,可以生成HTML页面。模版引擎的作用就是将界面与数据分离,将模板内容中指定的地方替换成数据,实现业务代码与逻辑代码分离。这里source文件夹就是数据,即博客的文章,theme文件夹就是界面,即博客的主题。
  • 当我们执行hexo g命令后,Hexo首先解析.md文件建立索引,然后根据theme/layout的布局类型,通过模版引擎最终渲染为html、css、js等文件到public文件夹下,生成可供浏览器显示的静态文章。
  • 执行hexo d命令后,Hexo会把public文件夹的内容部署上去,如果使用github托管的话可以发现此时仓库里的文件就是public文件夹下的内容,并没有博客的源码。
Other Articles