3.8 KiB
3.8 KiB
快速上手(供 AI 助手)
此项目是一个基于 Vue 3 + Vite 的 Web 前端(Element Plus UI)。下面的说明帮助 AI 编码/补全助手快速理解项目结构、运行方式、常见约定和注意点,以便生成正确、可运行的改动。
-
运行 / 构建
- 安装依赖:
npm install - 开发:
npm run dev(本地 dev server 默认端口在vite.config.js中配置为 63615) - 生产构建:
npm run build - 预览产物:
npm run preview - 修复 lint:
npm run lint
- 安装依赖:
-
核心技术栈(来自
package.json)- Vue 3, Vite, Vue Router 4, Vuex 4
- Element Plus (UI)、axios(HTTP)、vue-i18n
-
关键文件/位置(示例引用)
src/main.js:应用入口。全局注入$http(axios 实例)和config(来自public/config.js),并挂载 ElementPlus 与 i18n。src/router/index.js:路由定义与路由守卫。认证依赖localStorage.token;有 Admin 特权判断(username 为 Admin 或 MoMoWen)。添加页面通常在src/pages/*中创建并在此处引入。src/axios.js:导出默认 axios 实例与createAxiosInstance(urlnum)工厂函数。注意:- baseURL 来源:
public/config.js的ApiList(index 默认 0)或import.meta.env.VITE_API_BASE_URL。 - 请求拦截器会为非 Login/Login 请求附带
Authorization: Bearer <token>(从 localStorage 读取)。 - 响应拦截器实现了简单的 401 处理与
refreshToken()的自动尝试(依赖 rememberedUsername/rememberedPassword 存储)。
- baseURL 来源:
public/config.js:运行时 API 列表与资源地址(更新测试或新服务地址请在这里调整或通过 env 覆盖)。
-
项目约定与注意事项(基于代码可观测行为)
- 认证:token 存在于
localStorage.token。路由守卫依赖该字段。如果生成与登录/认证相关的修改,请保持兼容性。 - 自动刷新 Token:
src/axios.js会尝试在响应后刷新 token(会读取rememberedUsername与rememberedPassword)。不要移除这些本地键,除非同步修改登录逻辑。 - Axios 用法:默认 export 是已配置实例(供现有代码使用
this.$http或app.config.globalProperties.$http)。若需要对不同 API host 调用,请使用createAxiosInstance(n)。 - 路由/页面:新页面放到
src/pages/<name>/index.vue并在src/router/index.js中按现有模式引入与注册。 - 全局注入:
main.js使用app.provide('config', config),生成的自动补全可参考config.ApiList、config.Api等字段。
- 认证:token 存在于
-
编辑/调试建议(对生成代码很重要)
- 本地运行 dev 后打开
http://localhost:63615(或 Vite 提示的端口)。 - 推荐编辑器/插件:VSCode + Volar(项目 README 推荐)。
- 本地运行 dev 后打开
-
示例片段(如何安全地添加 API 调用)
- 使用默认实例(与现有代码兼容):
- 在组件中直接使用
this.$http.get('Some/Endpoint')(或import axios from '@/axios'然后axios.get(...))。
- 在组件中直接使用
- 使用备用 base URL:
import { createAxiosInstance } from '@/axios' const api2 = createAxiosInstance(1) api2.get('Some/Endpoint')
- 使用默认实例(与现有代码兼容):
-
变更约束(AI 应遵守以避免破坏现有行为)
- 不要删除或重命名
localStorage中的 key(如:token,username,rememberedUsername,rememberedPassword,lastAutoLoginTime),除非同时更新登录与刷新流程。 - 保持
Login/Login在 axios 拦截器中作为例外路径(或同时更新拦截器逻辑)。
- 不要删除或重命名
若你需要我把某部分扩展为示例代码补丁(比如为某个新页面、API 或路由添加实现),告诉我目标文件与预期行为,我会生成并应用补丁;之后请告知额外运行/测试步骤或后端约束。