博客 · 第 14 页
关于工程、设计与一些随手记录。
@/ 别名的三处配置:Vite、TypeScript 与 SCSS 缺一不可
全项目禁用深层相对引入,代价是别名要在三个地方各配一次。少配一处,症状分别是编辑器报错、构建失败、样式静默丢失。
zod 做 frontmatter 契约:把文章格式变成构建期错误
Content Collections 的 schema 是唯一真相。标题超 120 字、日期写错、标签写成字符串,都在构建期直接失败,而不是线上少一页。
为什么我又搭了一个个人主页
不是没有地方写东西,而是没有一个地方能同时放文章、小游戏和工具。顺便说说这次的技术选型为什么是 Astro 而不是 VitePress。
零配置注册表:新增一个游戏等于新建一个目录
列表、详情路由、首页精选、sitemap 全部由 import.meta.glob 自动发现。代价是必须接受「字面量相对路径」这条 Vite 的硬规则。
应用页不用 client:only:静态空壳加显式挂载
游戏与工具页是「空壳 + createApp」,不是 client:only。加载、成功、失败三态由我自己控制,重试按钮也是真的能按。
视图不存逻辑:把数据装配全部收进 src/server
页面里只剩路由导出与组件引入,取数、拼路径、算日期全部移到 src/server。说说这么分的收益,以及它逼出来的一个类型约束。
