戴上我的痛苦面具开始研究 Astro……
走马观花的时候觉得:「哇这个新手教程写得好详细好循序渐进啊上手一定会很顺利吧!」实际开始搞的时候发现果然又是:「你已经学会 1+1=2 了,接下来开始证明 1+1=2 吧!」
ʚ ⸸ ɞ
季节性抑郁这个借口已经找过很多遍了我自己都已经开始厌烦了但果然低温对我大脑的影响是不可忽视的,再加上长期的睡眠不足脑子整个是一个冻僵的状态,不管学什么都非常地费劲……哈哈然后又凌晨三点爬起来写代码真有你的
但是又莫名其妙地想和自己怄一口气:在 2025 结束之前整出来一个 Astro!
剩余的时间还有两周多一点,加上圣诞节的假期算起来其实算得上充裕,唯一的问题就是这该死的冬天……!
哎总之先来记录一些概念上的领悟吧……
自定义路由
Hugo 的路由逻辑:先有文件,再查询文件所在的位置,按位置生成相应的 url。
Astro 的自定义路由:可以先按 url 位置创建占位符,再把需要显示在这个 url 下的内容导入进来。
当然 hugo 的基础路由逻辑 Astro 也是支持的,但是看起来后者与其说「内容驱动」不如说「框架驱动」。理解了这个逻辑之后突然有种豁然开朗的感觉……
我真的会写 JS 吗
掐指一算少说也写了至少五六年的 jQuery 了,说要切 Astro 的时候本来是信誓旦旦的:JS 还能难倒我?写不出来查文档总能看懂吧?
结果还真看不懂。
原因是之前写的所有 JS 基本都是只操作前端 dom 的,万变不离一个「查找对象▶执行内容」的其宗(所以我才那么依赖 jQuery 的选择器),最深入的优化手段无非是把相似的执行动作封装成 function 调用。
简而言之还是那个「面向对象编程」的逻辑,而且非常依赖对象的直观可见。而 Astro 的 JS 代码一眼看过去几乎全是各种 function import 来 export 去,而且操作的几乎都是(对我来说)不可见的对象,比如一个 new 出来的 postCollection,虽然硬着头皮也能勉强理解这是在干什么但是看着各种飞来飞去的传参符号果然还是有一种知识在光滑的大脑皮层上做匀速直线运动的感觉……
乐高图纸
和茶叶梗抱怨那 5000 行的依赖库之后获得建议:要不试试把 npm 换成 pnpm?看了一下这个方案我可以接受,但是懒得整。但是构思了一下我写出来的东西应该不至于碰到「某个和核心库突然更新于是 build 不起来了」的问题,所以最后的结论是先让新站跑起来再解决这 5000 行的散装乐高。
事已至此先画图纸吧⸺总之先按迁移的方案写一下大概的框架。
Layout
-
主 layout
全局 html 布局和 css 框架
webfont 与配色设置
据说 Astro 可以把 JS 和 css 分散写在各个不同文件里自动打包让我尝尝咸淡- 组件・静态:翻页器;导航菜单
- 组件・动态:访客统计
-
文章 layout
h2 到 h5 的标题样式
正文和 markdown 的样式- 组件・静态:标签分类;发布时间;字数统计;页面位置;TOC
- 组件・动态:评论;访客统计
-
列表 layout
list-s:只显示标题的小型文章列表
list-m:显示标题、摘要和部分文章信息的列表
list-box:用于归档页的方格型文章列表
特殊组件
- 短代码
- 反链
- ruby
- 更新时间
- COC 角色卡
- 安科骰子
- 链接列表
- 友链
- 收藏夹
- 全局控制
- 夜间模式
- 简繁转换
小马过河
终于开始尝试迁移的时候发现一个非常致命的问题:Astro 的自动刷新速度是我完全无法忍受的。从按下保存到页面刷新要转至少 1.5s,对于复杂的应用构建这个速度我可以接受,但是对于单纯的写作来说完全就是灾难……研究了一下大概是它的自动刷新是全局构建的,也就是不管我改了什么东西它都会把引用过的所有文件都重新读一遍,然后我不幸放了 89 篇文章进去测试,呃……
所以迁移这回事我还是决定作罢了。按照我年更 25w 字的速度来说(虽然站子分散了以后可能会少一点吧)到明年的这个时候这个刷新速度大概就能和开 word 有的一拼了。虽然可以在 hugo 里写和预览用 Astro 部署,但是这就多少有点脱裤子放屁了吧。
放小应用的展示站估计还是会用 Astro 做,但是博客就算了。Hugo 的自动刷新虽然有时候不好使但至少写东西的时候真的无感,你这个 Astro 哪怕我什么文件都不改只是单纯按一下 F5 都要把所有文件冷启动一遍的设计也太蠢了吧……!!!!
事已至此还是想给自己找个牢坐不然还是把目前这个站的 JS 重构一下……?
意外之喜
横跳回 Hugo 之后尝试重构了一下分页器,虽然翻页按钮和分页的引用逻辑还有重复但至少能认出来哪行是哪行了……如果做新站的话应该可以写得更好……
以及终于发现 Hugo 也是可以有自定义路由的……!总之虽然 layout 没写好但是按月归档的页面被我弄出来了,当然是空的因为页面还没有放进去……按我最近的精神状态每天能达成一个小目标就很不错了(。
但是按月份拆分以后现在的这个归档样式就又要重写了,可是可是我还没有看腻有点舍不得……