53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
---
|
||
description: src 目录结构、就近聚合与全局/局部划分(uni-app / Vue3)
|
||
alwaysApply: true
|
||
---
|
||
|
||
# 目录与就近聚合
|
||
|
||
源码在 `src`。全局目录:`components`(kebab-case + `index.vue`)、`hooks`(`use-xxx.ts`)、`types`、`api`(含唯一 `request.ts`)、`static`、`store`、`utils`、`styles`。
|
||
|
||
## 页面文件夹(`pages/<name>/`)
|
||
|
||
可就近存放该页专属内容:
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `index.vue` | 页面入口 |
|
||
| `<name>.types.ts` | 仅本页使用的类型 |
|
||
| `use-<name>.ts` | 仅本页使用的 hooks |
|
||
| `<name>.api.ts` | 仅本页的接口函数(调用 `src/api/request.ts`,不重复写拦截) |
|
||
| `<name>.scss` | 本页独立样式(可选) |
|
||
| `components/` | 页面私有子组件;子组件目录内可有 `types.ts` |
|
||
|
||
命名示例(页面 `home`):`home.types.ts`、`use-home.ts`、`home.api.ts`。
|
||
|
||
## 局部 vs 全局
|
||
|
||
- 仅单页使用 → 放在 `pages/<page>/` 下就近管理
|
||
- 多页复用 → `src/types`、`src/hooks`、`src/api`(按业务模块拆分,非每页一份 request)
|
||
|
||
## 禁止
|
||
|
||
- 页面 `.vue` 在 `pages` 根目录;静态资源在 `src` 外
|
||
- 页面私有组件/类型/hooks/api 随意提到 `src` 顶层
|
||
- 每页重复实现请求封装(拦截器只在 `src/api/request.ts`)
|
||
- 在 `.vue` 里堆应抽离的共享类型(简单局部类型除外)
|
||
|
||
## 示例
|
||
|
||
```
|
||
src/pages/home/
|
||
index.vue
|
||
home.types.ts
|
||
use-home.ts
|
||
home.api.ts
|
||
components/feed-item/index.vue
|
||
|
||
src/api/request.ts
|
||
src/api/user.ts
|
||
src/hooks/use-auth.ts
|
||
```
|
||
|
||
新建与重构时:先判断是否多页复用,再选页面内就近或顶层全局。
|