这个站是怎么搭起来的
目录结构
myweb/
content/ 全部内容,markdown
notes/ 笔记
projects/ 每个项目一个目录
life/ 生活记录
fun/ 摸鱼
src/
pages/ 页面组件
lib/content.js 构建期把 markdown 读成数据
styles/main.css 全部样式
为什么不用数据库存内容
内容是写在 markdown 里的,跟着 git 走。这样:
- 改文章就是改文件,diff 看得清
- 迁移平台不用导出数据
- 全文搜索可以在构建期做,不依赖服务端
代价是无法在线写作。第一版先接受这个代价。
数据流
import.meta.glob 在构建期把所有 markdown 读成字符串,frontmatter.js 解析头部,marked 渲染正文。整个过程没有运行时 IO。
路由
每条内容都展开成一条具体路径,不用 :slug 参数路由。这样 vite-ssg 构建时直接遍历 router.getRoutes() 就能预渲染,不需要额外配置。