Files
xiaocai/DEV.md
wangxiaogang 9423f15f29 docs: 更新 DEV.md — API 调用规范和页面加载模式
- request 函数正确调用格式说明
- 页面数据加载标准模式(initialLoaded 守卫)
2026-06-08 11:25:03 +08:00

92 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 通用原则
- 优先保持现有代码风格与架构模式,不要无理由重构。
- 任何功能或修复变更,需确保现有测试通过,必要时补充新测试。
- 所有输出(代码、注释、文档、提交信息)默认使用**简体中文**,专有名词或技术术语可保留英文。
## 编码规范
### 文件与编码
- 所有文件必须保持 UTF-8编码。
- 修改包含中文的文件时,不得造成中文注释、中文文案、错误提示乱码。
- 如果发现文件已有乱码,不要擅自猜测业务含义,应标记出来让人工确认。
## 测试要求
- 新增功能必须编写对应的单元测试或集成测试。
- 修复 Bug 时,先添加能复现问题的测试用例,再修复。
- 测试覆盖率不应低于当前项目基线(若未设置,尽量保持 ≥80%)。
- 测试命名清晰,能描述场景,如 should return error when user not found。
## 注释与文档
### 注释要求
- **保留**已有的重要注释如文件头说明、JSDoc、业务解释
- 新增复杂逻辑、公共 API、关键算法时必须补充**简洁的中文注释**,解释“为什么这么做”而非“做了什么”。
- 不要为了注释而注释,避免冗余的废话(例如 `i++; // 自增 i`)。
- 多行 JSDoc/文档注释保持可读性,**不要压缩成单行**。
## 小程序适配要点
- 页面顶部右侧有元素时,使用 `capsuleRight` 避开胶囊按钮
- 新页面需要加载数据时,在 `onMounted` 中先 `await waitForReady()` 再请求
- API 地址统一在 `config.ts` 中配置,不要在各文件中硬编码
- 头像等用户文件 URL 只存文件名,前端拼接 `API_BASE + 路径 + 文件名`
## API 调用规范
### request 函数调用格式
`request` 函数**只接受一个对象参数**,格式为 `{ url, method?, data? }`
```typescript
// ✅ 正确
request({ url: '/feedback', data: params })
request({ url: '/config' })
request({ url: '/feedback', method: 'POST', data })
// ❌ 错误 — 会导致 URL 拼接为 /apiundefined
request('/feedback', { params })
request('/config', { method: 'PUT', data })
```
**原因**`request` 函数签名是 `request<T>(options: RequestOptions): Promise<T>`,第一个参数是 options 对象,不支持分开传 url 和 options。
### 页面数据加载模式
```typescript
const initialLoaded = ref(false)
onMounted(async () => {
await waitForReady()
await loadData()
initialLoaded.value = true
})
// onShow 时静默刷新,但必须有 initialLoaded 守卫
onShow(() => {
if (initialLoaded.value) loadData(true)
})
onPullDownRefresh(async () => {
await loadData()
uni.stopPullDownRefresh()
})
```
## Never 规则
- Never 修改 dist/ 目录
- Never 使用内联样式,除非需要动态计算(胶囊 padding 等除外)
- Never 在渲染路径中执行耗时操作
- Never 在列表渲染中省略 key 属性
- Never 修改 lock 文件
- Never 使用 git stash
- Never 切换分支
- Never 过度封装,保持代码简洁明了
## Requirements
- 代码提交前必须检查代码,包括但不限于代码格式、注释、测试覆盖率、文档更新等。
- 影响到历史数据吧,必须要准备好数据迁移方案。