给本站加功能的流程与自检清单
1. 文件落位
| 性质 | 位置 |
|---|---|
| 站点专属功能 | source/js/ + source/css/ |
| 加载后执行一次 | source/js/inject/ |
| 必须改模板结构 | themes/chengic/ |
优先前两项。动主题意味着后续升级要手动合并。
2. HTML 进入页面
独立页面:source/<名字>/index.md,front-matter 指定 type: page,正文写 HTML。
构建期注入:不改模板,往页面塞脚本。
1 | hexo.extend.injector.register('body_end', '<script src="/js/xxx.js" defer></script>', 'default'); |
运行期插入:脚本自己建节点。注意后插入的 <a> 不被 pjax 拦截,需补绑。
3. 样式作用域
一页一个前缀(.tt-、.mg-、.ab2-)。脚本入口先判锚点,没有就退出:
1 | const root = document.querySelector('.mg-form'); |
4. 生命周期
1 | function init() { /* 绑定 */ } |
只 init 不 teardown,监听器会累积,表现为一次点击触发多次。
5. 版本号
1 | <script defer src="/js/my-feature.js?v=20261105a"></script> |
页面级写在 front-matter 或 md,全站写在 _config.chengic.yml 的 inject 段。
6. 适配
- 颜色用变量(
--glass-bg、--font-color、--ucard-bd),暗色自动跟随 - 手机至少验三件事:宽度溢出、点击区 ≥44px、吸顶遮挡
prefers-reduced-motion下关闭动画
7. 自检清单
- 首页、文章页、新页面均正常
- 从首页 pjax 进入新页面,功能仍可用
- 暗色可读
- 375px 宽无横向滚动
- 重复点击不重复触发
?v=已推- 控制台无报错
- 改过
.pug已重启hexo server
8. 示例:回到顶部
1 | // source/js/inject/back-top.js |
1 | #bt-btn { |
9. 登记
改动写入 docs/站点改动总览.md:症状、根因、文件与行、验证方式、回滚。


