摘要
本文介绍如何实现加载自定义的静态文件,如和css,js等。通过本篇,您应该会了解关于HEXO next主题静态文件加载原理。
HEXO-建站系列
HEXO-优化系列
HEXO-进阶系列
前言
在操作前你需要知道,当您的文件编译成功后,网站的根目录为主题下的Source文件,所以在做任何的静态文件加载时,您需要以此目录作为根目录参考点。
如果你只是希望创建自定义的静态文件目录,我建议还是按照主题目录架构标准,将你的静态文件放到对应得目录下,如举例js文件,在vendors目录下。
当然这不是必须的。本文的介绍是在vendors目录下创建个人的静态脚本文件,和实现脚本的加载。
实现过程
创建你的静态脚本目录
在你的主题目录下的Source下的vendors下建立你的静态目录,本例为:Souce/vendors/custom/custom.js
修改主题模板文件vendors.swig
vendors.swig文件在主题目录下的layout\_scripts\
下,修改对应的代码。代码如下:
你需要添加的代码:
1 | {% if theme.customjs %} |
完成代码:
1 | {# Reset `window.Promise` when it was not a function. #} |
如果您有基本的编程基础,你不难发现最后面的代码是一个For
循环,上面的被放到For循环里面的
数组声明。而且数组声明就是一个对静态文件的如JS文件路径的变量赋值,将所有静态变量成为数
组并放到For
循环里面,循环输出加载的脚本路径。其次如果你留意vendors.swig
文件名和FOR
循环
代码,你可以发现,其实这个文件就是针对vendors的目录而生效的。所以我们可以得到一个信息,
你可以在For
循环代码前声明任意多的数组声明,这样你可以添加任意多的个人静态文件加载。
最后你要修改主题配置文件_config.yml
通过代码,我们分析出,vendors.swig文件在对变量进行路径赋值的时候是需要进行判断。经过我的检查发现,判断的方式是
对_config.yml的变量判断。举个例子,即if theme.customjs
,即你需要在_config.yum
声明此变量且赋值为true
所以_config.yml的修改:
添加相关代码
1 | 你的变量: true |
例子:
1 |
|
贴出对应的vendors.swig
的代码:
1 | {% if theme.customjs %} |
通过以上的修改你就实现的个人的静态文件的加载。
结语
如果你还需要了解更多技术文章信息,请继续关注Jory博客