Files
czzj-app/.cursor/rules/src-directory-structure.mdc
2026-10-09 14:29:58 +08:00

53 lines
1.6 KiB
Plaintext
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.
---
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
```
新建与重构时:先判断是否多页复用,再选页面内就近或顶层全局。