深入解析Hexo插件开发10国语言首页隐藏
1、期望目标
- 实现部分文件在首页隐藏,但是通过链接能访问
- 实现多国语言首页
2、计划思考
首先是通过搜索引擎去查找,看看有什么方案,目前看起来都比较难,没有现成的方案,官方文档很少。下面记录几个主要步骤
3、操作步骤
3.1、什么是静态博客
简单来说,一般认为,数据存在数据库中,展示可以很丰富,这在企业领域,在各大系统中都是很常见的,为什么后来发展出静态博客,很有可能是因为传统的模式,需要数据库,需要服务器,需要各类信息。但是对于个人博客,数据量没有那么大,完全可以把 html 内容都生成好,到时候对服务器的依赖就小了很多,这也就是静态博客的由来,html 是生成后的,也就是静态的,访问的时候就直接访问了。
显然它也有自己的局限性,各类服务都很难加了,类似计数,评论之类的,都有赖于其他的方式来处理。
静态博客有很多实现思路,有很多技术栈,也就有了很多静态博客的解决方案,比如 jekyll,hexo,hugo 等等。这里介绍Hexo
3.2、Hexo 和 butterfly 什么关系
Hexo 是基于 Nodejs 的一个静态博客方案,提供了丰富的插件功能,是非常开放的平台,我们知道,博客的门面,也就是展示效果是很重要,也很个性化的,基于此,它在很多环节提供了入口。这里就要提到 theme,也就是主题风格的概念,每个人有自己的想法和审美。它们在 hexo 生成 html 页面的过程中深度参与进来。
butterfly 是其中的佼佼者。也是本博客采用的方案。
3.3、Hexo 的工作原理和 butterfly 什么时候介入
hexo 简单来说,就是把一对 md 文件,转换成 html 文件,中间有超链接对应,为了便于理解,下面是梳理的一个对应关系,我们来看一下
graph TD A[开始 / Start] --> B[加载配置 / Load Configuration] B --> C[加载插件 / Load Plugins] C --> D[加载源文件 / Load Source Files] D --> E[解析前言 / Parse Front-matter] E --> F[处理Markdown / Process Markdown] F --> G[渲染文章 / Render Posts] G --> H[生成页面 / Generate Pages] H --> I[处理布局 / Process Layouts] I --> J[渲染HTML / Render HTML] J --> K[应用后渲染过滤器 / Apply After Render Filters] K --> L[生成静态文件 / Generate Static Files] L --> M[复制资源 / Copy Assets] M --> N[生成RSS和站点地图 / Generate RSS and Sitemap] N --> O[应用最终处理 / Apply Final Processing] O --> P[输出生成的文件 / Output Generated Files] P --> Q[结束 / End] subgraph "插件执行 / Plugin Execution" C1[执行前处理过滤器 / Execute before_process Filters] C2[执行后处理过滤器 / Execute after_process Filters] C3[执行前生成过滤器 / Execute before_generate Filters] C4[执行后生成过滤器 / Execute after_generate Filters] C5[执行退出前过滤器 / Execute before_exit Filters] end subgraph "渲染过程 / Rendering Process" G1[加载模板 / Load Templates] G2[应用前渲染过滤器 / Apply before_render Filters] G3[渲染内容 / Render Content] G4[应用后渲染过滤器 / Apply after_render Filters] end C --> C1 C1 --> D F --> C2 C2 --> G G --> C3 C3 --> H N --> C4 C4 --> O Q --> C5 G --> G1 G1 --> G2 G2 --> G3 G3 --> G4 G4 --> H %% 主题控制和作用注释 B1[主题配置加载 / Theme Configuration Loading] G5[主题模板应用 / Theme Template Application] B --> B1 B1 --> C G1 --> G5 G5 --> G2 style B1 fill:#f9f,stroke:#333,stroke-width:2px style G5 fill:#f9f,stroke:#333,stroke-width:2px %% 添加注释 T1[主题控制主要发生在配置加载和模板应用阶段 / Theme control mainly occurs during configuration loading and template application stages] T1 --> B1 T1 --> G5 style T1 fill:#ff9,stroke:#333,stroke-width:2px
从这里我们可以了解到,hexo 有一个固定的流程,处理文件,转换,渲染等待,在每个环节都能介入进来。
3.4、哪些组件是有用的
多语言会自动引用 butterfly 目录下的 languages,有多国语言的处理模板,因为它还是从 butterflay 来的,
hexo 启动的时候,会先去扫描插件,其中有一个目录是 scripts,它会自动去扫描所有的文件,在合适的时机加载。
关于 Hexo 的官方文档很少,从 api 文档里面看,大概有这样几个环节,比如控制台,捕鼠器,过滤器,生成器,辅助函数,住如期,处理器,渲染引擎和标签等等。
1 | if (gconfig) { |
4、总结
我们调整的时候,尽量通过插件来做,不去修改原始的文件内容
Hexo. Extend. Filter
5、异常记录
如果有兴趣深入了解,留言继续完善