Next主题的初始化
在source\js\config.js
文件中,定义了一个全局的NexT
对象,用以挂载该主题的所有变量。内部也定义了一个全局配置变量。这应该就是全局变量的初始化了。
if (!window.NexT) window.NexT = {};
...
window.CONFIG = ...
...
根据情况来看,config.js
应该就是最初始的文件,next-boot.js
启动文件,用以执行js,config.js
位于layout\_partials\head\head.njk
,
next-boot.js
位于layout\_scripts\index.njk
。两者都是每个页面都加载的。
在next-boot.js
中可以看到如下代码:
...
NexT.boot.motion = function() {
// Define Motion Sequence & Bootstrap Motion.
if (CONFIG.motion.enable) {
NexT.motion.integrator
.add(NexT.motion.middleWares.header)
.add(NexT.motion.middleWares.postList)
.add(NexT.motion.middleWares.sidebar)
.add(NexT.motion.middleWares.footer)
.bootstrap();
}
NexT.utils.updateSidebarPosition();
};
document.addEventListener('DOMContentLoaded', () => {
NexT.boot.registerEvents();
NexT.boot.refresh();
NexT.boot.motion();
});
可以看到动画模块加载的方式,是在DOMContentLoaded
中触发,通过NexT.motion.integrator
加载一系列插件,最后bootstrap
运行。此块代码位于motion.js
中。
motion.js
的原理大致如下:
header等存放的都是一些anima.js的参数,代码十分简单,有时间用一下。