实现一个类似于hexo的简单的博客生成工具

448 阅读1分钟

首先对hexo源码进行分析,重点梳理方法
hexo简洁、强大的功能来自于自身优雅的系统设计:
1.hexo进程启动、hexo核心对象封装、插件系统分别独立
2.自身采用插件驱动,生来就具备高可扩展性

hexo的功能实现:
1.hexo-cli脚手架的集成
2.hexo是怎么将我们写好的markdown转换成html的
3.hexo插件是如何工作的

hexo-cli脚手架的集成:
命令行集成init、help、version功能
通过entry函数解析命令行参数执行init / version / help功能。

markdown转换成html的,主要是实现以下功能:
markdown解析引擎
js模板引擎
从markdown到html的旅程
简单来说,hexo中,从markdown到html的generate过程中做了两次渲染
第一次渲染:读取souce文件夹下的数据,根据md模版编译成一个article对象。
第二次渲染:article对象根据themes下的配置信息通过js模版引擎编译生产html页面。

hexo插件是如何工作的:
Hexo 有强大的插件系统,核心实现了如hexo init,new, publish, generate等。类似webpack的插件驱动理念,先实现一套插件扩展系统,然后可以通过添加插件扩展自身的功能。
具体实现:
hexo初始化过程中先加载内部插件,再加载外部插件
hexo.extend这个对象的每个属性都是一个用来绑定(特定)插件的对象。当我们想自己动手写插件时,调用某个对象的register方法,如hexo.extend.console.register。