<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>XiaoMo · 博客</title><description>XiaoMo 的个人主页：文章、小游戏与在线工具。</description><link>https://www.moiu.cn/</link><language>zh-CN</language><item><title>为什么我又搭了一个个人主页</title><link>https://www.moiu.cn/zh/blog/hello-world/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/hello-world/</guid><description>不是没有地方写东西，而是没有一个地方能同时放文章、小游戏和工具。顺便说说这次的技术选型为什么是 Astro 而不是 VitePress。</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><category>建站</category><category>Astro</category></item><item><title>静态站上线不是「把文件夹传上去」：缓存、压缩、以及诚实的 404</title><link>https://www.moiu.cn/zh/blog/static-hosting-nginx/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/static-hosting-nginx/</guid><description>纯静态托管的坑几乎全在响应头上。哪些文件能永久缓存、哪些一秒都不能缓存、以及为什么静态站绝对不能做 SPA 式回退。</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>建站</category><category>性能</category></item><item><title>用 Astro islands 把首屏 JS 压到零</title><link>https://www.moiu.cn/zh/blog/astro-islands/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/astro-islands/</guid><description>从「异步引入」到「按需水合」，讲清楚三层懒加载分别解决什么问题，并给出这个站点里真实在跑的代码。</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><category>Astro</category><category>性能</category><category>Vue</category></item><item><title>321 项断言，零测试框架：纯逻辑必须零 import</title><link>https://www.moiu.cn/zh/blog/zero-import-selftest/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/zero-import-selftest/</guid><description>我的自检是 node scripts/selftest.ts 直接跑的，没有测试框架也没有依赖。代价是纯逻辑模块一个相对 import 都不能有，而这个代价换来了代码形状。</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><category>Astro</category><category>建站</category></item><item><title>纯静态站的全文搜索：构建期索引，运行时零后端</title><link>https://www.moiu.cn/zh/blog/pagefind-search/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/pagefind-search/</guid><description>静态站做搜索不一定非得接 Algolia。把索引放到构建期生成，搜索完全跑在浏览器里，代价只有构建慢几秒。</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate><category>建站</category><category>性能</category></item><item><title>把孔版套印的约束翻译成设计令牌</title><link>https://www.moiu.cn/zh/blog/riso-ui/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/riso-ui/</guid><description>这个站点的视觉方向是孔版套印。我真正做的事是把印刷的物理限制写成令牌，于是换观感只动了两个文件，组件一行没改。</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><category>设计</category><category>CSS</category></item><item><title>不用框架的 i18n：三语站点手写路由的代价</title><link>https://www.moiu.cn/zh/blog/manual-i18n/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/manual-i18n/</guid><description>这个站点的手写 i18n 没用框架自带的配置。说说为什么，以及代价具体出现在哪里——两次 404，和一半没翻的文章。</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><category>建站</category><category>设计</category></item><item><title>设计令牌：一个文件管住整个站点</title><link>https://www.moiu.cn/zh/blog/design-tokens/</link><guid isPermaLink="true">https://www.moiu.cn/zh/blog/design-tokens/</guid><description>为什么我把颜色、间距、圆角全部收进 _tokens.scss，以及换一套视觉方向为什么只需要改这一个文件。</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><category>CSS</category><category>设计</category></item></channel></rss>