# 开发规范 **本文引用的文件** - [fms-vue/.oxlintrc.json](file://fms-vue/.oxlintrc.json) - [fms-vue/.oxfmtrc.json](file://fms-vue/.oxfmtrc.json) - [fms-vue/package.json](file://fms-vue/package.json) - [fms-vue/src/main.js](file://fms-vue/src/main.js) - [fms-vue/src/App.vue](file://fms-vue/src/App.vue) - [fms-api/pom.xml](file://fms-api/pom.xml) - [fms-api/src/main/resources/application.yaml](file://fms-api/src/main/resources/application.yaml) - [fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/controller/AuthController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/AuthController.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/controller/DataController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/DataController.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/controller/FileController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/FileController.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/service/AuthService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/AuthService.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/service/DataSaveService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/DataSaveService.java) - [fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/exception/GlobalExceptionHandler.java) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本规范面向FMS项目的开发与维护,统一前后端代码风格、模块组织与质量保障流程。内容覆盖: - JavaScript/Vue 代码风格与命名约定、文件组织、注释标准 - Vue 组件开发最佳实践(结构设计、Props、事件、样式) - 后端 Java 分层规范(Controller/Service/Repository)、异常处理、日志记录 - 代码质量工具配置与使用(Oxlint、OxFmt) - 模块划分原则与目录结构规范 ## 项目结构 仓库采用多模块组织: - fms-vue:前端工程,基于 Vue 3 + Vite + Pinia,使用 Oxlint/OxFmt 进行代码检查与格式化 - fms-api:后端工程,基于 Spring Boot 4.x,提供认证、数据、文件等 API - 其他辅助目录用于演示、测试与迁移脚本 ```mermaid graph TB subgraph "前端 fms-vue" A["src/main.js"] B["src/App.vue"] C[".oxlintrc.json"] D[".oxfmtrc.json"] E["package.json"] end subgraph "后端 fms-api" F["application.yaml"] G["pom.xml"] H["FmsApiApplication.java"] I["controller/*"] J["service/*"] K["exception/*"] end A --> B C --> A D --> A E --> A H --> I I --> J I --> K F --> H G --> H ``` **图表来源** - [fms-vue/src/main.js:1-78](file://fms-vue/src/main.js#L1-L78) - [fms-vue/src/App.vue:1-15](file://fms-vue/src/App.vue#L1-L15) - [fms-vue/.oxlintrc.json:1-21](file://fms-vue/.oxlintrc.json#L1-L21) - [fms-vue/.oxfmtrc.json:1-8](file://fms-vue/.oxfmtrc.json#L1-L8) - [fms-vue/package.json:1-48](file://fms-vue/package.json#L1-L48) - [fms-api/src/main/resources/application.yaml:1-34](file://fms-api/src/main/resources/application.yaml#L1-L34) - [fms-api/pom.xml:1-108](file://fms-api/pom.xml#L1-L108) - [fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java:1-22](file://fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java#L1-L22) **章节来源** - [fms-vue/package.json:6-19](file://fms-vue/package.json#L6-L19) - [fms-api/pom.xml:5-31](file://fms-api/pom.xml#L5-L31) ## 核心组件 - 前端应用入口与启动流程:main.js 负责创建应用、注册插件、路由就绪后挂载;App.vue 作为根组件仅渲染当前路由 - 后端应用入口:FmsApiApplication 初始化雪花ID生成器并启动Spring容器 - 配置中心:application.yaml 定义服务端口、上下文路径、JWT、数据库连接池、文件存储策略等 **章节来源** - [fms-vue/src/main.js:14-22](file://fms-vue/src/main.js#L14-L22) - [fms-vue/src/main.js:41-77](file://fms-vue/src/main.js#L41-L77) - [fms-vue/src/App.vue:1-15](file://fms-vue/src/App.vue#L1-L15) - [fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java:9-18](file://fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java#L9-L18) - [fms-api/src/main/resources/application.yaml:1-34](file://fms-api/src/main/resources/application.yaml#L1-L34) ## 架构总览 前后端通过HTTP交互,前端通过Pinia管理状态,后端以Spring MVC暴露REST接口,统一异常处理与鉴权。 ```mermaid sequenceDiagram participant U as "用户浏览器" participant FE as "Vue应用(main.js)" participant BE as "Spring Boot(FmsApiApplication)" participant CTRL as "Controller层" participant SVC as "Service层" participant DB as "数据库" U->>FE : 访问页面 FE->>FE : 路由就绪、主题同步 FE-->>U : 挂载根组件(App.vue) U->>BE : HTTP请求(/api/...) BE->>CTRL : 分发到对应控制器 CTRL->>SVC : 调用业务服务 SVC->>DB : 读写数据 DB-->>SVC : 结果 SVC-->>CTRL : 返回业务对象 CTRL-->>U : JSON响应或错误 ``` **图表来源** - [fms-vue/src/main.js:41-77](file://fms-vue/src/main.js#L41-L77) - [fms-vue/src/App.vue:11-14](file://fms-vue/src/App.vue#L11-L14) - [fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java:9-18](file://fms-api/src/main/java/cn/g3soft/fmsapi/FmsApiApplication.java#L9-L18) - [fms-api/src/main/resources/application.yaml:1-5](file://fms-api/src/main/resources/application.yaml#L1-L5) ## 详细组件分析 ### 前端代码风格与质量工具 - 代码检查:使用 Oxlint,启用 vue、unicorn、oxc 插件;correctness 为 error,suspicious 为 warn;浏览器环境默认开启;vite.config.js 单独启用 node 环境 - 代码格式化:使用 OxFmt,行宽100,不加分号,单引号,尾随逗号全量 - 脚本命令:lint、lint:fix、fmt、fmt:check、build、test 等 ```mermaid flowchart TD Start(["开发者提交代码"]) --> Lint["运行 oxlint
校验规则"] Lint --> |通过| Fmt["运行 oxfmt --check
格式检查"] Lint --> |失败| Fix["运行 oxlint --fix
自动修复"] Fix --> Fmt Fmt --> |通过| Build["构建与测试"] Fmt --> |失败| ReFmt["运行 oxfmt --write
自动格式化"] ReFmt --> Build ``` **图表来源** - [fms-vue/.oxlintrc.json:1-21](file://fms-vue/.oxlintrc.json#L1-L21) - [fms-vue/.oxfmtrc.json:1-8](file://fms-vue/.oxfmtrc.json#L1-L8) - [fms-vue/package.json:6-19](file://fms-vue/package.json#L6-L19) **章节来源** - [fms-vue/.oxlintrc.json:1-21](file://fms-vue/.oxlintrc.json#L1-L21) - [fms-vue/.oxfmtrc.json:1-8](file://fms-vue/.oxfmtrc.json#L1-L8) - [fms-vue/package.json:6-19](file://fms-vue/package.json#L6-L19) ### Vue 组件开发规范 - 组件结构:推荐单文件组件 .vue,模板、脚本、样式分离;根组件 App.vue 仅负责路由渲染与可选的性能监控浮层 - Props 定义:在