博客搭建

博客二

2017-12-13  本文已影响0人  我为峰2014

前言

hexo_logo.png

现在我们的blog是基于Hexo生成了,同时我下载了现在最为流行的主题nextyilia

当然Hexo的主题不仅仅是这两个,之所以看它们是因为使用它们的人数最多,而且主题也在持续更新中,功能也非常齐全,如果不是特别爱折腾直接挑选他们就ok了,

但是,恰恰我喜欢折腾,用着别人开发好的主题,总是觉得少了那么一点意思,虽然我现在写不出Hexo这样的静态页面生成框架,但是主题就是页面显示总得自己弄一个了吧。而且用他们的主题感觉很多东西都不能让我更好的表达我自己。

思考

想制作一个主题,基本知识就应该具备咯,HTML,CSS,JavaScript,这些是最基本,不然一个基本页面都做不出来,然后高级一些就是使用框架,使用一些库。只要基础扎实些,剩下的可以慢慢磨,一边做一边学习。

现在我们来分析一下Hexo的具体工作机制。

image.png

hexo可以粗略分为三个子项目,分别是:

其中hexo plugins不是指某一个单独的项目,而是泛指所有的hexo plugin项目。
请看下图:

image.png

让我们结合这张图来大致看看这三个项目的作用(下面的链接均是指向Github中相关的源码):

从markdown到html的旅程

简单来说,hexo中,从markdown到html的generate过程中做了两件事:

模板渲染
模板渲染
是的,就是这样,就是两次模板渲染。只不过两次渲染的输入、渲染模板的引擎、输出不一样。此处应该有一个表格:

image.png

还得有一张图:

image.png

对上面表格和图的说明:

hexo插件是如何工作的

hexo和webpack还有一点类似的地方就是插件驱动理念。即hexo(和webpack)是先实现一套(插件)扩展系统,然后再往扩展系统中添加插件来实现自身的功能。即我们日常使用的hexo init, hexo new,hexo generate等等功能都是通过一个个插件(其实就是一个个function)实现的。

具体来讲就是:

  1. hexo.extend这个对象的每个属性都是一个用来绑定(特定)插件的对象。(所谓”绑定”,其实就是对象的register方法)
  2. hexo初始化过程中先加载内部插件,再加载外部插件

而这些插件的功能分为两大类: 命令行插件和generate过程相关功能,例如:

所以,当我们想自己动手写插件时,就是像hexo官网给出的这样,调用某个对象的register方法,如hexo.extend.console.register。

image.png

如上图,(用户通过浏览器访问到的)git page上的博客网站其实是hexo generate之后生成的public目录下的内容。

所以,一个hexo博客项目应该有两个仓库:

先介绍一下Hexo的工作原理,待续。。。。。。。。。。。。。。。。。。。。。。。。

上一篇 下一篇

猜你喜欢

热点阅读