70 lines
3.5 KiB
Markdown
70 lines
3.5 KiB
Markdown
---
|
||
description: 项目 overview —— portal-mini-front 后台管理系统的技术栈、目录结构与运行方式
|
||
globs: ["**/*"]
|
||
alwaysApply: true
|
||
---
|
||
|
||
# 项目概述
|
||
|
||
## 产品定位
|
||
`portal-mini-front` 是一个**后台管理系统前端**(Portal 管理后台),面向内部运营/管理员,核心场景是:登录鉴权 → 菜单/路由权限 → 数据列表(查询/分页/筛选)→ 增删改查表单 → 数据看板。
|
||
|
||
## 技术栈(固定选型,不得随意替换)
|
||
|
||
| 领域 | 选型 | 说明 |
|
||
| --- | --- | --- |
|
||
| 框架 | Vue 3.4+ | 仅使用 Composition API |
|
||
| 语言 | TypeScript 5.x | 严格模式,禁止 `any` |
|
||
| 构建 | Vite 5+ | |
|
||
| UI 库 | Element Plus | 主题色、组件尺寸统一在应用入口配置 |
|
||
| 脚手架基线 | `vue3-element-admin` | 目录结构、请求封装、权限方案以该模板为基准 |
|
||
| 状态管理 | Pinia + pinia-plugin-persistedstate | 使用 setup store 语法,按需声明 persist 路径 |
|
||
| 路由 | Vue Router 4 | 动态路由 + 权限守卫 |
|
||
| HTTP | Axios | 统一封装于 `src/utils/request.ts` |
|
||
| 图标 | `@element-plus/icons-vue` + 本地 svg sprite | |
|
||
| 工具库 | VueUse(`@vueuse/core`) | 优先复用,不重复造轮子 |
|
||
| 代码规范 | ESLint + Prettier + husky/lint-staged | 提交前自动校验 |
|
||
|
||
> 引入任何新依赖前必须说明理由;能用 Element Plus / VueUse / 现有 utils 解决的,不允许加新库。
|
||
|
||
## 目录结构约定
|
||
|
||
```
|
||
src/
|
||
├── api/ # 接口层,按业务模块划分,不得在组件内直接写请求
|
||
│ └── {module}/
|
||
│ └── index.ts # 导出 {Module}API 对象
|
||
├── components/ # 跨模块复用的全局组件(自动注册)
|
||
├── composables/ # 跨模块复用的组合式函数 useXxx
|
||
├── directives/ # 自定义指令,如 v-hasPerm
|
||
├── enums/ # 枚举与常量字典
|
||
├── layouts/ # 布局骨架(侧边栏/顶栏/标签栏/内容区)
|
||
├── router/ # 静态路由 + 动态路由 + 守卫
|
||
├── store/modules/ # Pinia 模块
|
||
├── styles/ # 全局样式、变量、Element Plus 覆盖
|
||
├── types/ # 全局与模块类型声明(*.d.ts 或 *.ts)
|
||
├── utils/ # request / storage / 通用工具
|
||
└── views/ # 页面,按业务模块划分
|
||
└── {module}/
|
||
├── index.vue # 列表主页(必须)
|
||
└── components/ # 仅该模块使用的子组件(表单弹窗等)
|
||
```
|
||
|
||
命名规则:
|
||
- 目录、文件名统一 **kebab-case**;Vue 组件文件用 **PascalCase.vue** 或目录 + `index.vue`。
|
||
- 页面路由 path 与 `views/{module}` 目录保持一致。
|
||
|
||
## 常用命令
|
||
```bash
|
||
pnpm dev # 本地开发
|
||
pnpm build:prod # 生产构建
|
||
pnpm preview # 预览构建产物
|
||
pnpm lint # ESLint 检查并修复
|
||
pnpm type-check # vue-tsc 类型检查
|
||
```
|
||
|
||
## 环境
|
||
- 环境变量文件:`.env.development` / `.env.production`,变量必须以 `VITE_` 开头。
|
||
- 接口地址统一走 `VITE_APP_BASE_API`,本地通过 Vite `server.proxy` 解决跨域,**不允许在代码里硬编码域名或端口**。
|
||
- 后端未就绪时开启 `VITE_USE_MOCK=true`(仅 dev 生效),由 `mock/plugin.ts` 中间件拦截 `/api/v1` 返回模拟数据,不引入任何 mock 依赖。后端联调时置为 `false`,直接走代理。
|