开发文档
本分区面向开发者与运维人员,记录 p2pee 官网与控制台的工程实践。
技术栈
| 层 | 选型 |
|---|---|
| 全栈框架 | Nuxt 3 / 4(前端 SPA + Nitro 服务端) |
| 前端 UI | Vuetify 3 + Element Plus + Pinia |
| 数据 | MySQL(Sequelize 为主);SQLite(better-sqlite3,用于请求统计) |
| 认证 | JWT(Authorization 头) |
| 其他 | dayjs、mqtt、nanoid、sharp(构建期图片处理) |
目录结构
项目根/
├─ app/ # 前端:pages / components / layouts / stores / utils
│ ├─ pages/dashboard/ # 控制台页面
│ ├─ components/docs/ # 文档站组件
│ └─ utils/docs-nav.ts # 文档站侧栏结构(单一事实来源)
├─ content/docs/ # 文档站内容源(Markdown)
├─ server/ # Nitro 后端
│ ├─ api/ # 业务接口
│ ├─ middleware/ # 认证 / 响应封装 / 主题注入
│ └─ routes/ # sitemap、llms.txt、raw 原文端点
├─ public/ # 静态资源与官网首页
└─ scripts/ # 构建与运维脚本
文档站是怎么来的
文档站由 @nuxt/content 驱动,内容源是仓库里的 content/docs/**/*.md,与页面代码同源同仓:
- 侧栏结构写在
app/utils/docs-nav.ts,同一个文件同时驱动侧栏渲染、上下篇顺序与构建期预渲染路由。 - 文档路由通过 Nuxt 的
routeRules单独开启 SSR 并预渲染成静态 HTML,因此 SEO 表现与纯静态站点一致。 - 其余页面(控制台等)保持 SPA 行为不变。
新增一篇文档
- 新建
content/docs/<分区>/<文件名>.md; - 在
app/utils/docs-nav.ts对应分组的items里加一行; - 本地
npm run dev即时可见;生产环境需要重新构建(文档页是构建期产出的静态 HTML)。
