Hexo 注入器实践

本文最后更新于:2023年4月5日 下午

Hexo 注入器实践

前言

我博客首页飘的那个樱花看着花里胡哨,但是非常占用资源……而且因为是直接引进来的 js ,所以每个页面都有这玩意,但是毕竟花里胡哨,也就对性能问题睁一只眼闭一只眼,刚才翻别人博客突然发现了注入器这个神奇玩意,于是问题解决了:只在首页显示樱花飘落的动画。

参考博客

基于hexo的fluid主题的魔改汇总 - GISHAI

进阶用法 | Hexo Fluid 用户手册 (fluid-dev.com)

具体实践

Hexo Fluid 用户手册 中说的比较清楚了:注入器可以将 HTML 片段注入生成页面的 <head><body> 节点中,而且可以选择注入的页面类型(比如我首页的樱花我可以选择只注入首页)。

编写注入代码,需要在博客的根目录下创建 scripts 文件夹,然后在里面任意命名创建一个 js 文件即可。

我创建了一个 /Hexo/scripts/yinghua.js 了一个文件,内容为:

hexo.extend.injector.register(
    'body_end', 
    '<script src="//must.best/assets/js/flower.js"></script>', 
    'home'
);

上述代码会在生成的页面 </body> 注入加载 //must.best/assets/js/flower.js 的代码。

这里发挥作用的是 register 函数。

register 函数

register 函数可接受三个参数。

  1. 第一个参数

    第一个参数是代码片段注入的位置,接受以下值:

    • head_begin: 注入在 <head> 之后(默认)
    • head_end: 注入在 </head> 之前
    • body_begin: 注入在 <body> 之后
    • body_end: 注入在 </body> 之前
  2. 第二个参数

    第二个参数是注入的片段,可以是字符串,也可以是一个返回值为字符串的函数。

  3. 第三个参数

    第三个参数是注入的页面类型,接受以下值:

    • default: 注入到每个页面(默认值)
    • home: 只注入到主页(is_home()true 的页面)
    • post: 只注入到文章页面(is_post()true 的页面)
    • page: 只注入到独立页面(is_page()true 的页面)
    • archive: 只注入到归档页面(is_archive()true 的页面)
    • category: 只注入到分类页面(is_category()true 的页面)
    • tag: 只注入到标签页面(is_tag()true 的页面)
    • 或是其他自定义 layout 名称,例如在Fluid 主题中 about 对应关于页、links 对应友联页

    比如上面我要樱花飘落的动画只在首页显示,所以选择 home 这个参数。


Hexo 注入器实践
https://blog.ksfu.top/posts/5eba/
作者
康师傅
发布于
2023年4月5日
许可协议