# FastAPI Admin · 前端工程(web) 基于 **Vue 3 + Vite + TypeScript + Element Plus** 的后台管理前端,与 FastAPI Admin 后端配套使用。状态管理为 **Pinia**,样式以 **Tailwind CSS 4** 与 **SCSS** 为主,接口请求使用 **Axios**。 > **与仓库根文档的关系**:项目总览、一键前后端启动、演示账号、Docker 部署等请以 [根目录 README.md](../../README.md) 为准;**本文档**侧重 `frontend/web/` 目录结构、环境变量与前端开发约定。 ## 快速开始 ### 环境准备 | 工具 | 版本要求 | | ------- | ------------------------------------------------------ | | Node.js | ≥ 20.19(见 `package.json` → `engines`) | | pnpm | ≥ 8.8,推荐 **pnpm 9**(与 `packageManager` 字段一致) | 未安装 pnpm 时可执行:`corepack enable && corepack prepare pnpm@9.15.3 --activate`(版本可按项目 `packageManager` 调整)。 ### 安装依赖并启动 ```bash cd frontend/web pnpm install pnpm dev ``` 默认开发端口由 **`.env`** 中的 **`VITE_PORT`** 决定(当前模板为 **5173**)。 ### 与后端联调 1. 先启动 **FastAPI Admin 后端**,监听地址与 **`.env.development`** 里 **`VITE_API_BASE_URL`** 一致(模板默认为 **`http://127.0.0.1:8001`**)。 2. 前端开发时,浏览器请求发往当前页面同源路径,由 **Vite `server.proxy`** 把 **`VITE_APP_BASE_API`**(如 `/api/v1`)转发到上述后端。 3. 若页面提示「连接被拒绝」,检查后端是否启动、端口是否一致,或把 **`VITE_API_BASE_URL`** 改成你的实际后端地址。 ## 架构概览 ``` main.ts 启动 └─ initPlugins(app) ← 插件注册(Pinia → Router → 指令 → i18n → Element Plus) └─ mount("#app") └─ App.vue ├─ onBeforeMount: 主题初始化 └─ onMounted: bootstrap() → 存储检查/版本升级/站点配置 └─ 路由守卫 beforeEach ├─ 存储失效检测 ├─ 登录态校验 ├─ 动态路由注册(菜单 → addRoute) └─ 标签/标题同步 ``` 路由采用 **Hash 模式**,静态路由(Layout/登录/404)首屏注册,业务路由由守卫根据菜单权限延迟 `addRoute`。HTTP 拦截器支持 **Token 静默续期**(401 时自动 refresh,失败后跳转登录)。 ## 技术栈 | 类别 | 选型 | | ------ | ------------------------------------------------------ | | 框架 | Vue 3(Composition API / `