Solitude 4.0 是一次面向现代浏览器的重大版本升级,重点重构主题 JavaScript 运行时,并整合 3.0.20 之后的页面与交互改进。
主要更新
- 采用原生 ES 模块,以
main.js作为核心入口,搜索、音乐、友链、右键菜单、翻译、文章 AI 与封面色按配置动态加载。 - 新增统一 PJAX 生命周期,通过
AbortController和 disposer 清理事件、观察器、定时器及第三方实例,降低多次导航后的资源累积。 - 页面配置迁移为 JSON 数据节点,并提供统一的
window.Solitude扩展入口。 - 统一脚本和样式资源加载器,缓存加载中的 Promise,避免评论、搜索和图集资源重复请求。
- 合并 API、Average Color 与本地封面色实现中的缓存、颜色转换、CSS 变量和错误回退逻辑。
- 模板交互迁移到
data-solitude-action事件委托,移除一方模板中的内联点击、输入和错误处理。 - 优化滚动、resize、瀑布流、tooltip、图片懒加载、音乐控制和归档分页逻辑。
- 友链支持统一 JSON 数据源与异步渲染,随机友链不再逐页注入脚本。
- 改进首页推荐、分类栏、归档页、关于页、文章元信息、分页、侧栏、控制台与音乐胶囊的布局和交互。
Breaking Changes
- 浏览器基线调整为当前 Chrome、Edge、Firefox 和 Safari 的近两个主要版本,不再支持 IE。
- 旧的
sco、utils、rm、ai、coverColor等松散全局接口不再作为主题扩展入口;自定义集成应迁移至window.Solitude。 - 使用外部 CDN 或自托管主题脚本时,必须保留
source/js/下 ES 模块的相对目录结构。 - 自定义模板应使用
data-solitude-action或window.SolitudeAPI,避免直接注入功能性内联事件。
Public API
Solitude.navigate(url)Solitude.refresh()Solitude.copy(text)Solitude.toggleTheme()Solitude.loadScript(url, options)Solitude.loadStyle(url, options)Solitude.on(event, handler)
可订阅事件:ready、beforeNavigate、afterNavigate、themeChange。
升级建议
- 将主题更新到
v4.0.0并清理 Hexo 缓存后重新生成站点。 - 检查自定义脚本是否引用已移除的旧全局变量。
- 使用 CDN 时确认模块入口及其相对导入文件来自同一版本和同一目录树。
- 对评论、搜索、音乐、友链及自定义模板执行一次完整 PJAX 导航回归。
验证
- Hexo 侧 CommonJS 与浏览器 ES 模块语法检查通过。
pnpm build通过,无 Hexo 警告。- 24 个生成页面中的 220 段内联脚本通过语法解析。
- 首页、文章、归档、友链和音乐页面配置及按需模块断言通过。
- jsDelivr、unpkg 与自定义 CDN 路径验证通过。
完整变更:v3.0.20...v4.0.0