Typecho × Astro:把博客改成无头 CMS 架构的完整实践
把用了多年的 Typecho 保留为后台内容管理,前端换成 Astro 静态渲染——这就是本站现在的架构。这篇文章记录完整的改造思路与踩坑。
把用了多年的 Typecho 保留为后台内容管理,前端换成 Astro 静态渲染——这就是本站现在的架构。这篇文章记录完整的改造思路与踩坑。
这篇文章的正文是原生 HTML(Typecho 富文本编辑器的产物),用于验证前端渲染器对非 Markdown 内容的透传与净化能力。
inline code| 元素 | 预期表现 |
|---|---|
| 标题 | 左侧青色竖线 |
| 代码 | 行内代码高亮 |
| 表格 | 圆角边框 + 斑马纹 |
原生 HTML 与 Markdown 渲染结果应保持一致的视觉风格。
—— 如果这段文字前出现了斜体“来自脚本”字样,说明净化逻辑失效:来自脚本
记录 typecho-api 插件常用端点,方便前端直连调试。
GET /index.php/api?token=***&method=getbloginfo 站点信息
GET /index.php/api?token=***&method=getarticle 文章列表(分页)
GET /index.php/api?token=***&method=getcomments&cid=1 文章评论
GET /index.php/api?token=***&method=getallcategories 全部分类
GET /index.php/api?token=***&method=getalltags 全部标签
GET /index.php/api?token=***&method=search&keyword=x 搜索{
"success": true,
"data": [
{
"cid": 1,
"title": "欢迎使用 Typecho",
"slug": "start",
"categories": ["默认分类"],
"tags": [],
"summary": "如果您看到这篇文章…",
"text": "<!--markdown-->如果您看到这篇文章…"
}
],
"pagination": { "total": 1, "page": 1, "pageSize": 10 }
}tokentext 是原始 Markdown,带 <!--markdown--> 前缀pageSize 上限为 50每月底我都会翻一翻 GitHub Trending,挑几个「小而美」的工具。本月的五个候选各有绝活。
一行命令产出 ESM / CJS / d.ts,库作者的福音。
Promise 化 API + 自动转义,脚本不再一坨回调。
规范实现仅 1KB,学习 Observable 语义的最佳材料。
用 Markdown 时间线描述项目排期,长这样:
2026-01 to 2026-03: 重构内容层
2026-03 to 2026-06: 前端渲染改造 #tag1给 SQLite 加上向量检索,个人知识库再也不用起向量数据库服务了。
以上项目共同点:单包解决一个明确问题。反例与正例的差距,往往就在克制二字。
这段文字位于