Appearance
- 此站采用VitePress构建,托管于Cloudflare Pages
- 主题已开源,可于Github上查看。
- 联系电邮tuyazuo{替换为@}live{无用字符}.cn
.
├─ .vitepress
│ ├─ theme
│ │ ├─ components #组件
│ │ │ ├─ Archive.vue #归档
│ │ │ ├─ Category.vue #目录
│ │ │ ├─ Tags.vue #标签
│ │ │ ├─ Home.vue #主页
│ │ │ ├─ Layout.vue #页面布局
│ │ │ └─ Comment.vue #评论
│ │ ├─ custom.css #样式
│ │ ├─ index.ts #主题入口
│ │ └─ posts.data.ts #文档数据收集
│ └─ config.mts #配置文件
├─ index.md #主页页面
├─ pages #组件对应页面
├─ posts #文档目录
└─ package.json
主题扩展
极简、实用原则,不修改原主题,尽可能少地扩展。
- packages.json中配置"type": "module"
- *.data.ts文件,VitePress提供的数据加载功能,收集文档数据,是后面功能实现的基础。
- Layout 页面的布局文件,可以将自定义组件注入到插槽中,实现页面扩展。
- Archive、Category、Tags属于同一类型,只有少许代码差异。
使用了vue的Teleport功能,将标签内容放入右侧导览VPDocOutlineItem元素里。 - Comment 依赖于Cloudflare pages和d1实现的简单留言功能,不使用时可直接注释掉Layout中组件。
Cloudflare
以下是相关依赖包,不使用cloudflare时可移除
- wrangler:cloudflare提供的命令行工具,用于快捷部署页面和操作数据库等
- @cloudflare/workers-types:类型文件,发现不加这个d1数据操作时会报错
使用Functions和d1数据库实现了简单的留言功能。
- 在配置文件中使用buildEnd,自动拷贝_worker.js(数据库操作代码)文件到构建目录中
- 需要在Pages--项目名--设置--函数--D1数据库绑定 中配置,绑定相关数据库(变量为DB,对应_worker.js中env.DB字段)
创建数据表
可以提前写好sql文件(或使用数据库GUI工具设计并导出结构),执行以下语句创建
npx wrangler d1 execute [database] --remote --file=./schema.sql
自动上传发布页面
npx wrangler pages deploy ./.vitepress/dist --project-name blog --branch main
注意:带--branch main才会发布到生产环境,否则会发布到测试环境