# 移动端前端代码样例索引(三段式注释 + 范式摘录)
> 本文件是移动端仓库的**代码范式参考**(与 PC 端 `EXAMPLES.md` 同构)。
> 所有 TS 文件采用**三段式注释**:① 入参 / ② 出参 / ③ 异常场景;SFC 骨架顺序:imports → store → 状态 → 生命周期 → 方法。
> 文件索引列出当前已落地文件的职责 + 关键范式,新增文件照此范式写。
## 1. 三段式注释模板
```ts
/**
* 文件头(一句话说清职责 + 所属域/层)
*
* 典型使用(调用方文件路径 + 代码片段):
* ...
*/
/**
* 函数/方法注释。
*
* 入参:
* - paramName Type:说明(必填/可选/默认值)。
* 出参:
* - ReturnType:说明(成功/失败各返回什么)。
* 异常场景:
* - 条件 A:行为 X(静默/抛错/降级/跳登录)。
*/
function xxx(param: Type): ReturnType { ... }
```
**规则**:
- 入参/出参**必须**写(哪怕是"无");异常场景**必须**写(至少一条);
- 禁止"见文档"式空注释;禁止复制粘贴函数名当注释;
- SFC 内:`
```
### 3.3 Vant 表单 rules(FieldRule 类型 + 正确 trigger 值)
```vue
登录
```
### 3.4 http 层零 UI 依赖(toast 注入 + 路由注入)
```ts
// shared/api/http.ts(底层基础设施,零 UI 依赖)
let toastHandler: ((message: string) => void) | undefined;
export function setBusinessErrorToaster(fn: (message: string) => void): void {
toastHandler = fn;
}
function toastBusinessError(message: string): void {
if (toastHandler) toastHandler(message);
else console.warn('[biz-error]', message); // 未注入时降级
}
// apps/teacher/src/main.ts(装配 UI 后注入,方向 UI→基础)
import { showFailToast } from 'vant';
import { setBusinessErrorToaster, setRouterForRedirect } from '@unified/shared/api/http';
setBusinessErrorToaster((m) => showFailToast(m));
setRouterForRedirect(router); // 解 router→http→router 循环依赖
```
### 3.5 monorepo 每端独立 tsconfig(@ 路径各端独立)
```jsonc
// apps/teacher/tsconfig.json(本端独立,extends 根 tsconfig.base.json)
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@": ["./src"], // 本端业务层(各端独立)
"@/*": ["./src/*"],
"@unified/shared": ["../../packages/shared/src"], // 共享层(源码消费)
"@unified/shared/*": ["../../packages/shared/src/*"]
}
},
"include": [
"../../global.d.ts", // 根 UMD 全局声明
"./src/**/*.ts",
"./src/**/*.vue",
"../../packages/shared/src/**/*.ts", // 共享层源码(类型直达)
"../../packages/shared/src/**/*.vue",
"../../shims/**/*.ts" // 胶水层
]
}
```
### 3.6 微信授权轮询(占位,onUnmounted 必清定时器)
```vue
```
## 4. 新增文件清单(照此范式写)
| 场景 | 照哪个范式 | 备注 |
|---|---|---|
| 新域列表页 | §3.2(useListPage + list-page) | 补 `api/{域}/{资源}.ts` + `views/{域}/{资源}/list.vue` |
| 新域详情页 | 手动路由 + `api` 接口 | `views/{域}/{资源}/detail.vue` |
| 新域接口 | `api/org/institution.ts` 范式 | 一资源一文件;DTO + Filter + 请求函数 |
| 新共享组件 | `components/list-page.vue` 范式 | 泛型 SFC 或普通 SFC;零业务耦合 |
| 新共享 composable | `composables/use-list-page.ts` 范式 | 泛型 + 返回 Ref 集合 |
| 新指令 | `directives/perm.ts` 范式 | mounted + updated 双钩子 |
| student/parent 端 | teacher 端全量复制 | 改 package.json name + vite port + router 路由表 + views 页面 |