后端开发核心知识图谱


一、架构设计

概念 定义 核心要点 典型实现/工具
分层架构 按职责垂直划分代码层次 Controller → Service → Repository → DB;依赖单向向下;便于测试与替换 DDD 分层、Clean Architecture、六边形架构
微服务架构 按业务能力拆分为独立部署单元 服务自治、独立数据库、API 通信;引入分布式复杂度 Spring Cloud、Go-Micro、Kubernetes
单体架构 所有功能打包为单一部署单元 开发简单、部署容易;扩展性差、耦合度高 早期项目、快速验证
SOA 面向服务架构,服务通过 ESB 通信 企业级集成、服务复用;ESB 成为瓶颈 MuleSoft、IBM ESB
Serverless 函数即服务,按调用计费 免运维、自动伸缩;冷启动延迟、调试困难 AWS Lambda、Cloudflare Workers、Vercel
事件驱动架构 通过事件解耦生产者与消费者 异步处理、松耦合;事件溯源、最终一致性 Kafka、RabbitMQ、EventBridge
CQRS 命令查询职责分离 读写模型独立优化;复杂度换性能 Axon Framework、自研
领域驱动设计 (DDD) 以业务领域为核心建模 限界上下文、聚合根、领域事件、防腐层 战略设计 + 战术设计模式

二、高可用与容错

概念 定义 核心要点 典型实现/工具
限流 (Rate Limiting) 控制单位时间请求量 保护后端资源、防止雪崩;令牌桶、漏桶、滑动窗口算法 Sentinel、Nginx limit_req、Redis + Lua
熔断 (Circuit Breaker) 检测故障后快速失败,阻止级联崩溃 三态:关闭→打开→半开;失败率/慢调用率阈值触发 Hystrix、Resilience4j、Sentinel
降级 (Degradation) 服务不可用时返回兜底响应 静态数据、缓存数据、简化功能;保证核心链路 业务代码实现、配置中心动态开关
重试 (Retry) 失败后自动重新请求 指数退避、最大次数限制、幂等性保证 gRPC 内置、Resilience4j、自研
超时控制 限制等待时间,防止资源占用 连接超时、读写超时、全链路超时传递 Context timeout (Go)、Hystrix timeout
隔离 (Bulkhead) 资源隔离防止故障扩散 线程池隔离、信号量隔离、进程隔离 Hystrix、Resilience4j
故障注入 主动制造故障测试系统韧性 延迟注入、异常注入、资源耗尽 Chaos Monkey、ChaosBlade、LitmusChaos
健康检查 持续探测服务存活与就绪状态 Liveness vs Readiness;自动摘除故障节点 K8s Probe、Consul Health Check

三、分布式系统

概念 定义 核心要点 典型实现/工具
分布式锁 跨进程/节点的互斥控制 原子性、可重入、锁续期、防死锁 Redis (Redlock)、ZooKeeper、etcd
分布式事务 跨服务/库的数据一致性 2PC/3PC 强一致(阻塞);TCC/Saga 最终一致 Seata、DTM、业务补偿
分布式 ID 全局唯一 ID 生成 趋势递增、高性能、无单点 Snowflake、Leaf、UUID v7
一致性哈希 数据分片与负载均衡 虚拟节点减少数据倾斜;节点增减影响最小化 自研、Ketama
CAP 定理 一致性、可用性、分区容错三选二 P 必选;CP (ZK) vs AP (Cassandra);实际是权衡 理论指导
BASE 理论 基本可用、软状态、最终一致 CAP 的工程妥协;适用于高可用场景 电商、社交系统设计
Paxos/Raft 分布式共识算法 Leader 选举、日志复制、多数派 etcd (Raft)、ZooKeeper (ZAB)
服务注册与发现 动态管理服务实例地址 心跳检测、健康剔除、负载均衡 Consul、Nacos、etcd、Eureka
配置中心 集中管理配置,动态下发 版本管理、灰度发布、热更新 Apollo、Nacos、Consul KV
链路追踪 追踪跨服务请求调用链 TraceID/SpanID 传递;延迟分析、故障定位 Jaeger、Zipkin、SkyWalking
分布式日志 集中采集、存储、检索日志 结构化日志、全文检索、告警 ELK、Loki + Grafana、ClickHouse

四、数据库与存储

概念 定义 核心要点 典型实现/工具
快慢 SQL 识别执行时间异常的 SQL 慢查询日志、执行计划分析 (EXPLAIN);索引优化 pt-query-digest、MySQL slow_log
索引优化 加速数据检索 B+Tree、覆盖索引、联合索引最左匹配;避免索引失效 EXPLAIN、索引建议工具
读写分离 主库写、从库读分担压力 主从延迟容忍、强制主库读;数据同步 MySQL Replication、ProxySQL
分库分表 水平拆分数据 路由策略(Hash/Range)、跨库查询、分布式事务 ShardingSphere、Vitess、TiDB
连接池 复用数据库连接 避免频繁建连;最小/最大连接数、空闲超时 HikariCP、Druid、pgbouncer
死锁 多事务相互等待资源 超时检测、死锁图;减小事务粒度、统一加锁顺序 DB 内置检测、应用层预防
事务隔离级别 并发事务可见性控制 RU/RC/RR/Serializable;脏读/不可重复读/幻读 数据库配置
MVCC 多版本并发控制 快照读、版本链;无锁读提高并发 MySQL InnoDB、PostgreSQL
缓存穿透 查询不存在数据,穿透到 DB 布隆过滤器、空值缓存 Redis + BloomFilter
缓存击穿 热点 key 失效瞬间高并发击穿 互斥锁、永不过期 + 后台刷新 Redis + 分布式锁
缓存雪崩 大量 key 同时失效 过期时间随机化、多级缓存、预热 运维策略
缓存一致性 缓存与 DB 数据同步 Cache Aside、Write Through、Write Behind;延迟双删 业务代码 + MQ
数据库连接泄漏 连接未正确归还连接池 超时强制回收、代码 Review、监控告警 连接池监控

五、消息队列

概念 定义 核心要点 典型实现/工具
异步解耦 生产者消费者通过队列交互 削峰填谷、系统解耦;引入延迟与复杂度 Kafka、RabbitMQ、RocketMQ
消息可靠投递 确保消息不丢失 生产者确认、Broker 持久化、消费者 ACK 发送重试、手动 ACK
消息幂等 重复消费不影响业务正确性 唯一 ID + 去重表/Redis;业务天然幂等 业务层实现
消息顺序性 保证消费顺序与发送一致 单分区有序;分区键设计 Kafka Partition Key
死信队列 (DLQ) 存放处理失败的消息 问题排查、人工干预、定期重试 RabbitMQ DLX、Kafka DLQ Topic
延迟消息 定时投递消息 订单超时取消、定时任务 RocketMQ 延迟级别、RabbitMQ TTL+DLX
消息堆积 消费速度跟不上生产速度 扩容消费者、降级、临时存储 监控告警 + 自动扩缩容
事务消息 本地事务与消息发送原子性 半消息 + 回查机制 RocketMQ 事务消息

六、安全

概念 定义 核心要点 典型实现/工具
认证 (AuthN) 验证身份 "你是谁" 密码、Token、证书、生物特征 JWT、OAuth2、OIDC、LDAP
授权 (AuthZ) 验证权限 "你能做什么" RBAC、ABAC、ACL;最小权限原则 Casbin、OPA、Spring Security
SQL 注入 恶意 SQL 拼接执行 参数化查询、ORM、输入校验 PreparedStatement、GORM
XSS 跨站脚本注入 输出编码、CSP、HttpOnly Cookie 模板引擎自动转义
CSRF 跨站请求伪造 Token 校验、SameSite Cookie、Referer 检查 框架内置中间件
敏感数据保护 加密存储与传输 AES/RSA 加密、脱敏显示、密钥管理 Vault、KMS、bcrypt
API 安全 接口防护 签名校验、时间戳防重放、IP 白名单 HMAC 签名、mTLS
日志脱敏 防止敏感信息泄露到日志 手机号/身份证/密码脱敏规则 日志框架插件

七、性能优化

概念 定义 核心要点 典型实现/工具
性能剖析 (Profiling) 定位 CPU/内存热点 火焰图、采样分析 pprof (Go)、async-profiler (Java)
JVM 调优 GC、堆内存优化 G1/ZGC 选择、GC 日志分析、内存泄漏排查 jstat、MAT、Arthas
连接池调优 优化 DB/HTTP 连接复用 合理设置 min/max、超时、泄漏检测 HikariCP 配置
批量处理 合并小请求减少开销 批量插入、批量查询、Pipeline JDBC Batch、Redis Pipeline
异步化 非核心逻辑异步执行 减少 RT、提高吞吐;幂等与补偿 MQ、CompletableFuture、goroutine
预热 启动时加载热点数据 减少冷启动影响;缓存预热、JIT 预热 启动脚本、流量回放
零拷贝 减少内核态/用户态数据拷贝 sendfile、mmap;适用于大文件传输 Kafka、Nginx
对象池 复用昂贵对象 减少 GC 压力;sync.Pool (Go)、对象池库 框架内置或自研

八、可观测性

概念 定义 核心要点 典型实现/工具
Metrics (指标) 数值化系统状态 QPS、RT、错误率、饱和度;RED/USE 方法论 Prometheus、InfluxDB、Graphite
Logging (日志) 离散事件记录 结构化 JSON、级别控制、TraceID 关联 ELK、Loki、Fluentd
Tracing (追踪) 分布式调用链 Span 上下文传播、耗时分析 Jaeger、Zipkin、OpenTelemetry
Alerting (告警) 异常自动通知 阈值告警、趋势告警、告警收敛 Prometheus Alertmanager、PagerDuty
SLO/SLI/SLA 服务质量目标与度量 SLI 是指标、SLO 是目标、SLA 是合同 业务定义 + 监控落地
Dashboard 可视化监控面板 关键指标聚合、钻取分析 Grafana、Kibana

九、DevOps 与部署

概念 定义 核心要点 典型实现/工具
CI/CD 持续集成与持续部署 自动构建、测试、部署;快速反馈 Jenkins、GitLab CI、GitHub Actions
容器化 应用与依赖打包为镜像 环境一致性、快速启动、隔离性 Docker、containerd
容器编排 管理容器生命周期与调度 自动扩缩容、服务发现、滚动更新 Kubernetes、Docker Swarm
蓝绿部署 两套环境切换流量 快速回滚、零停机;资源成本翻倍 K8s + Ingress、负载均衡切换
金丝雀发布 小流量验证后逐步扩大 风险可控、灰度验证 Istio、Argo Rollouts
滚动发布 逐批替换实例 资源利用率高;回滚较慢 K8s Deployment
GitOps 以 Git 为唯一真相来源 声明式、版本化、自动同步 ArgoCD、Flux
Infrastructure as Code 代码化管理基础设施 可审计、可重复、版本控制 Terraform、Pulumi、Ansible

十、API 设计

概念 定义 核心要点 典型实现/工具
RESTful 资源化 HTTP API 设计 资源命名、HTTP 动词语义、状态码规范 OpenAPI/Swagger
gRPC 高性能 RPC 框架 Protobuf 序列化、HTTP/2、双向流 grpc-go、grpc-java
GraphQL 按需查询 API 单端点、客户端定义返回结构;N+1 问题 Apollo、gqlgen
API 版本管理 兼容性演进 URL 版本 (/v1/)、Header 版本、语义化版本 设计规范
幂等设计 重复请求结果一致 唯一请求 ID、状态机校验 业务层实现
分页 大数据集分批返回 offset/limit、cursor-based;深度分页优化 数据库 + API
错误处理规范 统一错误响应格式 错误码体系、国际化、堆栈隐藏 RFC 7807 Problem Details

十一、测试

概念 定义 核心要点 典型实现/工具
单元测试 最小粒度代码测试 Mock 依赖、高覆盖率、快速执行 JUnit、testify、Jest
集成测试 多组件协作测试 真实依赖或 TestContainers;数据隔离 TestContainers、Spring Test
端到端测试 模拟用户完整流程 覆盖核心链路;执行慢、维护成本高 Cypress、Playwright
契约测试 验证服务间接口契约 生产者/消费者驱动 Pact、Spring Cloud Contract
压力测试 验证系统极限性能 并发数、TPS、RT、错误率 JMeter、Locust、k6
混沌工程 生产环境故障实验 验证系统韧性、发现潜在问题 Chaos Monkey、ChaosBlade

十二、编码与设计原则

概念 定义 核心要点
SOLID 面向对象五大原则 S 单一职责、O 开闭、L 里氏替换、I 接口隔离、D 依赖倒置
DRY Don't Repeat Yourself 消除重复代码;过度抽象反成负担
KISS Keep It Simple, Stupid 简单设计优先;避免过早优化
YAGNI You Aren't Gonna Need It 不实现不需要的功能
防御性编程 假设输入不可信 参数校验、边界检查、失败处理
代码审查 同行评审代码变更 知识共享、质量把关、规范统一

速查索引

flowchart TB
    subgraph 架构
    A1[分层/DDD] --> A2[微服务]
    A2 --> A3[事件驱动]
    end
    
    subgraph 高可用
    B1[限流] --> B2[熔断]
    B2 --> B3[降级]
    B3 --> B4[重试]
    end
    
    subgraph 分布式
    C1[分布式锁] --> C2[分布式事务]
    C2 --> C3[服务发现]
    C3 --> C4[链路追踪]
    end
    
    subgraph 数据层
    D1[读写分离] --> D2[分库分表]
    D2 --> D3[缓存策略]
    D3 --> D4[SQL优化]
    end
    
    subgraph 消息队列
    E1[异步解耦] --> E2[可靠投递]
    E2 --> E3[幂等消费]
    end
    
    subgraph 可观测性
    F1[Metrics] --> F2[Logging]
    F2 --> F3[Tracing]
    end

前端开发核心知识图谱


一、浏览器原理

概念 定义 核心要点 典型实现/工具
渲染流程 URL 到像素的完整过程 解析 HTML → 构建 DOM → 解析 CSS → 构建 CSSOM → 合成 Render Tree → Layout → Paint → Composite Chrome DevTools Performance
重排 (Reflow) 布局变化触发重新计算几何属性 触发因素:尺寸/位置变化、DOM 增删、窗口 resize;代价高 批量 DOM 操作、DocumentFragment
重绘 (Repaint) 外观变化不影响布局 触发因素:颜色、背景、visibility;代价低于重排 合理使用 CSS 属性
合成层 (Compositing) GPU 加速独立图层 transform/opacity 不触发重排重绘;will-change 提示 图层分析、避免层爆炸
事件循环 (Event Loop) JS 单线程任务调度机制 宏任务 (setTimeout, I/O) → 微任务 (Promise, MutationObserver) → 渲染 理解执行顺序、避免阻塞
垃圾回收 (GC) 自动内存管理 标记清除、分代回收;内存泄漏排查 Memory 面板、Heap Snapshot
V8 引擎 Chrome/Node 的 JS 引擎 解释执行 + JIT 编译;Hidden Class、内联缓存优化 编写 JIT 友好代码
同源策略 浏览器安全沙箱 协议 + 域名 + 端口一致;限制跨域请求与 DOM 访问 CORS、代理、postMessage
存储机制 客户端数据持久化 Cookie (4KB, 自动发送)、localStorage (5MB)、sessionStorage、IndexedDB (大容量) 按场景选择存储方案
Service Worker 独立于页面的后台线程 离线缓存、推送通知、后台同步;拦截网络请求 Workbox、PWA

二、JavaScript 进阶

概念 定义 核心要点 典型实现/工具
闭包 (Closure) 函数访问定义时作用域 数据封装、私有变量;内存泄漏风险 模块模式、柯里化
原型链 (Prototype) 对象继承机制 __proto__prototype;属性查找链 Object.create、class 语法糖
this 绑定 函数执行上下文 默认绑定、隐式绑定、显式绑定 (call/apply/bind)、new 绑定;箭头函数继承外层 理解调用方式决定 this
Promise/async-await 异步流程控制 状态机 (pending → fulfilled/rejected);链式调用、错误冒泡 Promise.all/race/allSettled
生成器 (Generator) 可暂停函数 yield 暂停、next() 恢复;迭代器协议 异步流程、无限序列
代理 (Proxy) 拦截对象操作 get/set/has/deleteProperty 等 trap;响应式原理基础 Vue3 响应式、数据校验
反射 (Reflect) 对象操作函数化 与 Proxy trap 一一对应;替代命令式操作 Reflect.get/set/has
模块系统 代码组织与复用 ES Modules (静态分析、Tree Shaking)、CommonJS (动态、Node);循环依赖处理 import/export
WeakMap/WeakSet 弱引用集合 键必须是对象、不阻止 GC;缓存、私有数据 框架内部实现
尾调用优化 函数末尾调用无栈增长 严格模式下生效;递归优化 部分引擎支持

三、CSS 进阶

概念 定义 核心要点 典型实现/工具
盒模型 元素尺寸计算 content-box (默认) vs border-box;margin 塌陷 box-sizing: border-box
BFC (块级格式化上下文) 独立布局区域 触发条件:float、position、overflow、display;清除浮动、防止 margin 重叠 overflow: hidden
Flexbox 一维弹性布局 主轴/交叉轴、flex-grow/shrink/basis;对齐方式 现代布局首选
Grid 二维网格布局 行列定义、区域命名、隐式网格;复杂布局 grid-template-areas
层叠上下文 (Stacking Context) z-index 生效范围 触发条件:z-index + position、opacity<1、transform;嵌套隔离 理解 z-index 失效原因
选择器优先级 样式冲突解决 !important > 内联 > ID > 类/属性/伪类 > 元素 > * 避免过度使用 !important
CSS 变量 自定义属性 --name: valuevar(--name);主题切换、动态样式 :root 定义全局变量
响应式设计 适配多端设备 媒体查询、相对单位 (rem, vw, %)、容器查询 mobile-first、断点设计
CSS-in-JS JS 中编写样式 作用域隔离、动态样式、SSR 支持 styled-components、Emotion
CSS Modules 类名局部化 编译时生成唯一类名;避免全局污染 Webpack css-loader
动画性能 高性能动画实现 transform/opacity 优先;requestAnimationFrame;FLIP 技术 避免动画卡顿

四、框架核心原理

概念 定义 核心要点 典型实现/工具
虚拟 DOM (Virtual DOM) JS 对象描述 UI 结构 跨平台、批量更新、Diff 算法减少真实 DOM 操作 React、Vue
Diff 算法 新旧虚拟 DOM 比较 同层比较、key 优化、类型不同直接替换 O(n) 时间复杂度
响应式系统 数据变化自动更新视图 Vue2 Object.defineProperty、Vue3 Proxy、依赖收集、派发更新 手动触发 vs 自动追踪
单向数据流 数据自顶向下传递 可预测性、调试友好;状态提升 React props、Flux 模式
双向绑定 视图与数据自动同步 语法糖 (v-model)、表单场景;本质仍是单向流 Vue v-model
组件生命周期 组件创建到销毁的钩子 挂载、更新、卸载;副作用管理 useEffect、onMounted
Hooks 函数组件的状态与副作用 复用逻辑、组合优于继承;规则约束 (顶层调用) React Hooks、Vue Composition API
状态管理 跨组件共享状态 单一数据源、不可变更新、中间件扩展 Redux、Zustand、Pinia、Vuex
服务端渲染 (SSR) 服务器生成 HTML SEO 友好、首屏快;水合 (Hydration)、状态同步 Next.js、Nuxt.js
静态生成 (SSG) 构建时生成静态页面 极致性能、CDN 缓存;增量再生成 (ISR) Next.js、Astro、Gatsby
编译时优化 构建阶段性能优化 模板预编译、静态节点提升、Tree Shaking Vue3 编译优化、Svelte

五、性能优化

概念 定义 核心要点 典型实现/工具
核心 Web 指标 Google 性能评估标准 LCP (最大内容绘制 <2.5s)、FID (首次输入延迟 <100ms)、CLS (累积布局偏移 <0.1) Lighthouse、Web Vitals
首屏优化 加速首次可见内容 关键渲染路径、骨架屏、预渲染、SSR Critical CSS、Preload
代码分割 按需加载代码块 路由分割、组件懒加载;减少初始包体积 dynamic import、React.lazy
Tree Shaking 移除未使用代码 ES Modules 静态分析;sideEffects 配置 Webpack、Rollup、esbuild
资源压缩 减少传输体积 Gzip/Brotli 压缩、图片压缩、代码 Minify 构建工具 + 服务器配置
图片优化 图片加载与渲染优化 现代格式 (WebP, AVIF)、响应式图片、懒加载、CDN next/image、srcset
缓存策略 复用已下载资源 强缓存 (Cache-Control)、协商缓存 (ETag);文件指纹 长期缓存 + 内容哈希命名
预加载/预连接 提前获取资源 preload (关键资源)、prefetch (未来需要)、preconnect (DNS) link 标签、Resource Hints
虚拟滚动 只渲染可视区域 大列表性能;动态高度、滚动锚定 react-window、vue-virtual-scroller
防抖/节流 控制高频事件执行 防抖 (最后一次)、节流 (固定间隔);scroll/resize/input lodash、自实现
Web Worker 后台线程计算 不阻塞主线程;无 DOM 访问;postMessage 通信 大数据计算、加密
内存优化 避免内存泄漏与过度占用 事件监听清理、闭包引用、DOM 引用;定期审查 Memory 面板、堆快照

六、工程化

概念 定义 核心要点 典型实现/工具
模块打包 多文件合并与优化 入口分析、依赖图、代码转换、产物输出 Webpack、Rollup、esbuild、Vite
热更新 (HMR) 开发时局部刷新 保持状态、快速反馈;模块热替换 API Webpack HMR、Vite HMR
Babel JS 语法转换 新语法 → 旧语法;preset-env 按目标环境转换 @babel/preset-env
PostCSS CSS 转换管道 Autoprefixer、CSS 嵌套、自定义插件 postcss.config.js
ESLint JS/TS 静态检查 语法错误、风格规范、自动修复 eslint-config-xxx
Prettier 代码格式化 风格统一、减少争议;与 ESLint 配合 .prettierrc
Husky + lint-staged Git 钩子自动化 提交前检查/格式化;增量处理 pre-commit
Monorepo 单仓多包管理 代码共享、统一版本、依赖提升 pnpm workspace、Turborepo、Nx
包管理 依赖安装与版本管理 lock 文件锁定版本;pnpm 硬链接节省空间 npm、yarn、pnpm
环境变量 构建时配置注入 区分 dev/staging/prod;敏感信息隔离 .env 文件、import.meta.env
Source Map 调试映射源码 生产环境控制暴露;hidden-source-map 构建工具配置

七、网络与通信

概念 定义 核心要点 典型实现/工具
HTTP/1.1 vs HTTP/2 vs HTTP/3 协议演进 HTTP/2 多路复用、头部压缩;HTTP/3 基于 QUIC、0-RTT 服务器配置、CDN
HTTPS/TLS 加密传输 非对称握手 + 对称加密;证书链验证 Let's Encrypt、强制 HTTPS
CORS 跨域资源共享 简单请求 vs 预检请求;Access-Control-* 头 服务端配置
Fetch API 现代网络请求 Promise 化、流式读取;AbortController 取消 替代 XMLHttpRequest
WebSocket 全双工长连接 实时通信、服务器推送;心跳保活、重连机制 Socket.io、原生 API
Server-Sent Events 服务器单向推送 文本协议、自动重连;比 WebSocket 轻量 EventSource
请求封装 统一请求处理 拦截器、重试、超时、取消、状态管理 Axios、ky、ofetch
GraphQL 客户端 按需查询数据 类型安全、缓存规范化 Apollo Client、urql
接口缓存 减少重复请求 SWR (stale-while-revalidate)、请求去重 SWR、TanStack Query
文件上传 大文件传输 分片上传、断点续传、进度监控 自研 + 对象存储

八、安全

概念 定义 核心要点 典型实现/工具
XSS (跨站脚本) 注入恶意脚本执行 存储型/反射型/DOM 型;输出编码、CSP React 自动转义、DOMPurify
CSRF (跨站请求伪造) 伪造用户请求 Token 校验、SameSite Cookie、Origin 检查 CSRF Token
CSP (内容安全策略) 限制资源加载来源 script-src、style-src、img-src;阻止内联脚本 HTTP Header、meta 标签
Cookie 安全 防止 Cookie 窃取与滥用 HttpOnly (JS 不可读)、Secure (仅 HTTPS)、SameSite 合理配置属性
点击劫持 透明 iframe 诱骗点击 X-Frame-Options: DENY、CSP frame-ancestors HTTP Header
敏感信息暴露 源码/配置泄露 环境变量区分、Source Map 保护、.env 不提交 gitignore、构建配置
依赖安全 第三方包漏洞 npm audit、Snyk 扫描;锁定版本、定期更新 Dependabot
子资源完整性 (SRI) CDN 资源防篡改 script/link 标签 integrity 属性 构建工具生成

九、状态管理

概念 定义 核心要点 典型实现/工具
局部状态 组件内部状态 useState/useReducer;简单场景首选 框架内置
提升状态 共享状态提升到公共父组件 props 传递、逆向数据流;层级深时繁琐 组件设计模式
Context 跨层级状态传递 避免 props drilling;频繁更新性能问题 React Context、Vue provide/inject
外部状态库 全局状态管理 单一数据源、可预测更新、DevTools Redux、Zustand、Pinia、MobX
原子化状态 最小粒度状态单元 按需订阅、减少不必要渲染 Jotai、Recoil
服务端状态 远程数据缓存 请求状态、缓存失效、乐观更新 TanStack Query、SWR
URL 状态 路由参数作为状态 可分享、书签、SEO;query/params 同步 路由库 + nuqs
表单状态 表单专用状态管理 校验、脏检查、提交状态 React Hook Form、Formik、VeeValidate
持久化状态 刷新后保留状态 localStorage/sessionStorage 同步 redux-persist、zustand middleware

十、测试

概念 定义 核心要点 典型实现/工具
单元测试 独立函数/组件测试 快速、隔离、高覆盖率 Jest、Vitest
组件测试 渲染与交互测试 模拟用户行为、断言 DOM 状态 Testing Library、Vue Test Utils
集成测试 多组件/模块协作测试 真实路由、状态管理;Mock API MSW、Testing Library
端到端测试 (E2E) 模拟真实用户操作 浏览器自动化、完整流程验证;执行慢、维护成本高 Playwright、Cypress
视觉回归测试 检测 UI 变化 截图对比、像素差异;防止意外样式变更 Percy、Chromatic、Playwright
快照测试 序列化输出对比 组件输出快照;易产生噪音更新 Jest Snapshot
Mock 与 Stub 模拟依赖行为 API Mock、模块 Mock、Timer Mock MSW、jest.mock、vi.mock
测试覆盖率 代码被测试比例 行覆盖、分支覆盖、函数覆盖;指标非目标 Istanbul、c8
测试金字塔 测试策略分层 单元测试多 → 集成测试中 → E2E 少;成本与信心权衡 设计原则
TDD/BDD 测试驱动/行为驱动开发 先写测试后实现;描述性测试用例 开发流程

十一、TypeScript 前端应用

概念 定义 核心要点 典型实现/工具
组件 Props 类型 定义组件入参 interface/type 声明;可选、默认值、children React.FC、defineProps
事件类型 DOM 事件类型定义 React.MouseEvent、React.ChangeEvent;e.target 类型收窄 事件处理函数签名
Ref 类型 引用类型定义 useRef<HTMLInputElement>(null);forwardRef 泛型 Ref 对象类型
泛型组件 可复用类型参数组件 列表组件、选择器组件;推断 item 类型 <T,>(props: Props<T>)
API 类型生成 后端接口类型自动化 OpenAPI → TypeScript;端到端类型安全 openapi-typescript、orval
严格空检查 null/undefined 安全 strictNullChecks;可选链、空值合并 tsconfig.json
路由类型安全 路由参数类型化 路径参数、查询参数类型推断 TanStack Router、typed routes
状态库类型 全局状态类型定义 Store 类型、Action 类型、Selector 类型 Zustand/Redux 泛型

十二、可访问性 (Accessibility/A11y)

概念 定义 核心要点 典型实现/工具
语义化 HTML 使用正确的 HTML 标签 header/nav/main/article/aside;屏幕阅读器友好 避免 div 滥用
ARIA 属性 增强元素可访问性 role、aria-label、aria-hidden、aria-live 自定义组件必备
键盘导航 完全键盘可操作 Tab 顺序、焦点管理、快捷键;tabindex focus trap、roving tabindex
焦点管理 控制焦点位置 模态框焦点陷阱、路由跳转焦点重置 FocusScope、焦点恢复
颜色对比度 文字与背景对比 WCAG 2.1 AA 标准 (4.5:1);工具检测 设计规范、检测工具
屏幕阅读器 视障用户辅助工具 朗读内容、导航结构;测试验证 VoiceOver、NVDA、JAWS
跳过链接 快速跳过重复导航 Skip to main content 页面顶部隐藏链接
表单可访问性 表单元素关联标签 label + for、错误提示关联、必填提示 aria-describedby
动态内容通知 异步更新告知用户 aria-live="polite/assertive";状态变化播报 加载、成功、错误提示
自动化检测 A11y 问题扫描 静态检查、运行时检测;CI 集成 axe-core、eslint-plugin-jsx-a11y

十三、国际化 (i18n)

概念 定义 核心要点 典型实现/工具
文案提取 硬编码文案外置 JSON/YAML 资源文件;按语言分文件 手动或工具提取
翻译管理 多语言翻译协作 翻译平台集成、版本管理、缺失检测 Crowdin、Lokalise、Phrase
插值与格式化 动态内容替换 变量插值、复数处理、日期/数字格式化 ICU MessageFormat
语言检测 自动识别用户语言 navigator.language、Accept-Language、用户设置 优先级策略
语言切换 运行时切换语言 无刷新切换、持久化选择 Context + 状态管理
RTL 支持 从右到左语言 阿拉伯语、希伯来语;布局镜像、文字方向 dir="rtl"、CSS logical properties
日期时间 本地化日期格式 Intl.DateTimeFormat;时区处理 date-fns、Day.js
数字货币 本地化数字格式 Intl.NumberFormat;千分位、货币符号 内置 API
命名空间 翻译文件组织 按功能/页面拆分;按需加载 i18next namespace
伪本地化 测试翻译就绪 字符替换模拟长度变化;检测硬编码 pseudo-localization

十四、移动端与跨平台

概念 定义 核心要点 典型实现/工具
响应式 Web 一套代码适配多端 媒体查询、弹性布局、相对单位 CSS Grid/Flexbox
PWA 渐进式 Web 应用 离线可用、可安装、推送通知;Service Worker Workbox、Web App Manifest
移动端适配 处理移动端特性 viewport meta、触摸事件、安全区域、软键盘 设备检测、CSS 适配
Hybrid App Web 嵌入原生壳 WebView 容器、Bridge 通信;性能受限 Cordova、Capacitor
React Native JS 驱动原生组件 跨 iOS/Android;原生模块扩展 Expo、RN CLI
Flutter Dart 跨平台框架 自绘引擎、高性能;学习成本 Flutter SDK
小程序 平台封闭生态 微信/支付宝/字节;双线程架构、受限 API Taro、uni-app
Electron 桌面跨平台 Chromium + Node;内存占用大 Electron Forge
Tauri 轻量桌面应用 Rust 后端、系统 WebView;体积小 Tauri CLI

十五、微前端

概念 定义 核心要点 典型实现/工具
应用拆分 按业务拆分独立子应用 独立开发、部署、技术栈无关 架构设计
路由分发 主应用路由到子应用 路由匹配、生命周期管理 single-spa、qiankun
样式隔离 防止样式冲突 Shadow DOM、CSS Modules、命名空间 框架内置或约定
JS 沙箱 防止全局变量污染 Proxy 沙箱、快照沙箱;严格隔离 qiankun sandbox
通信机制 子应用间数据交换 CustomEvent、全局状态、props 传递 EventBus、共享状态
资源加载 动态加载子应用资源 HTML Entry、JS Entry;预加载 import-html-entry
共享依赖 避免重复加载公共库 Module Federation、external、CDN Webpack 5 MF
Module Federation 运行时模块共享 远程模块、共享依赖、版本协商 Webpack 5、Vite 插件

十六、设计系统与组件库

概念 定义 核心要点 典型实现/工具
设计 Token 设计决策原子变量 颜色、间距、字号、阴影;单一来源 CSS 变量、JSON Token
组件规范 组件 API 与行为定义 Props、事件、插槽、状态;一致性 设计文档
原子设计 组件分层方法论 Atoms → Molecules → Organisms → Templates → Pages 组织架构
Headless UI 无样式逻辑组件 行为与样式分离;最大灵活性 Radix UI、Headless UI
Storybook 组件开发与文档 独立开发、可视化测试、交互文档 Storybook 7/8
主题系统 多主题支持 亮色/暗色、品牌定制;CSS 变量切换 prefers-color-scheme
组件文档 使用说明与示例 Props 表格、代码示例、在线演示 Storybook、Docusaurus
变更日志 版本变更记录 破坏性变更、新增、修复;语义化版本 CHANGELOG.md、Changesets

十七、实时与协作

概念 定义 核心要点 典型实现/工具
WebSocket 全双工实时通信 心跳保活、断线重连、消息确认 Socket.io、原生 API
长轮询 兼容性实时方案 请求挂起等待响应;资源消耗大 降级方案
CRDT 无冲突复制数据类型 多端并发编辑、自动合并;最终一致 Yjs、Automerge
OT (操作变换) 协同编辑算法 操作转换解决冲突;中心化 Google Docs 原理
乐观更新 先更新 UI 后同步服务器 提升体验;失败回滚 TanStack Query mutation
在线状态 用户在线感知 Presence、光标位置、正在输入 实时服务集成
离线支持 断网可用 IndexedDB 存储、队列同步、冲突解决 Service Worker、Workbox

十八、性能监控与错误追踪

概念 定义 核心要点 典型实现/工具
性能指标采集 自动收集 Web Vitals LCP、FID、CLS、TTFB、FCP web-vitals 库
错误捕获 全局异常收集 window.onerror、unhandledrejection;错误边界 try-catch、Error Boundary
Source Map 解析 还原压缩代码堆栈 上传 Source Map 到监控平台 Sentry、Bugsnag
用户行为回放 重现用户操作 DOM 快照、事件录制;问题复现 LogRocket、FullStory
自定义埋点 业务事件追踪 页面曝光、点击、转化;数据分析 自研或第三方 SDK
性能预算 设定性能阈值 包体积、加载时间上限;CI 检测 bundlesize、Lighthouse CI
真实用户监控 (RUM) 生产环境性能数据 按设备/地区/网络分析;长尾问题 Sentry、Datadog RUM
合成监控 模拟访问检测 定时探测、基线对比;可用性监控 Lighthouse CI、Checkly

十九、构建与部署

概念 定义 核心要点 典型实现/工具
CI/CD 持续集成与部署 自动构建、测试、部署;快速反馈 GitHub Actions、GitLab CI
静态托管 纯静态资源部署 CDN 分发、边缘缓存;极致性能 Vercel、Netlify、Cloudflare Pages
容器化部署 Docker 镜像部署 环境一致性、可扩展 Docker + K8s
边缘渲染 CDN 边缘执行代码 低延迟、地理就近;受限运行时 Cloudflare Workers、Vercel Edge
预渲染 构建时生成静态页 SSG、ISR;SEO + 性能 Next.js、Nuxt、Astro
环境管理 多环境配置 dev/staging/production;环境变量隔离 .env 文件、平台配置
回滚机制 快速恢复旧版本 版本保留、一键回滚 部署平台内置
Feature Flag 功能开关控制 灰度发布、A/B 测试、紧急关闭 LaunchDarkly、Unleash

二十、架构模式

概念 定义 核心要点 典型实现/工具
组件化架构 UI 拆分为可复用组件 单一职责、props 驱动、组合优于继承 React/Vue 组件
容器/展示组件 逻辑与 UI 分离 容器处理数据、展示负责渲染;Hooks 后弱化 设计模式
Compound Components 组合式组件 API 隐式共享状态、灵活组合 Tabs、Accordion 组件
Render Props 函数作为 children 逻辑复用;被 Hooks 替代 旧模式
HOC (高阶组件) 组件增强函数 横切关注点复用;层级嵌套问题 withRouter、connect
Hooks 模式 逻辑复用首选 自定义 Hooks、组合简单 useXxx
Feature-Sliced Design 按功能切片架构 分层 + 切片;扩展性好 项目结构规范
Islands 架构 静态页面嵌入交互岛屿 极致性能、部分水合 Astro、Fresh
Streaming SSR 流式服务端渲染 分块传输、逐步显示 React 18 Streaming

速查索引

flowchart TB
    subgraph 浏览器与语言
    A1[渲染原理] --> A2[事件循环]
    A2 --> A3[JS 进阶]
    A3 --> A4[CSS 布局]
    end
    
    subgraph 框架与状态
    B1[虚拟 DOM] --> B2[响应式]
    B2 --> B3[状态管理]
    B3 --> B4[SSR/SSG]
    end
    
    subgraph 工程化
    C1[构建工具] --> C2[代码规范]
    C2 --> C3[测试策略]
    C3 --> C4[CI/CD]
    end
    
    subgraph 性能与安全
    D1[Core Web Vitals] --> D2[代码分割]
    D2 --> D3[缓存策略]
    D3 --> D4[XSS/CSRF]
    end
    
    subgraph 体验与质量
    E1[可访问性] --> E2[国际化]
    E2 --> E3[错误监控]
    E3 --> E4[性能监控]
    end
    
    subgraph 架构扩展
    F1[微前端] --> F2[跨平台]
    F2 --> F3[设计系统]
    F3 --> F4[实时协作]
    end

前后端结合开发核心知识图谱

以 Spring Boot / Gin + Vue / React + TypeScript 为技术栈


一、接口设计与契约

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
RESTful 规范 资源化 API 设计 名词复数、HTTP 动词语义、状态码规范 @GetMapping("/users/{id}") r.GET("/users/:id", handler) fetch/axios 调用
接口版本管理 API 兼容性演进 URL 路径 (/v1/)、Header、Query @RequestMapping("/api/v1") v1 := r.Group("/api/v1") baseURL 配置
请求响应结构 统一数据格式 {code, data, message} 包装;分页结构 ResponseEntity<Result<T>> 自定义 Response 结构体 泛型 ApiResponse<T>
OpenAPI/Swagger 接口文档规范 自动生成文档、类型导出、Mock springdoc-openapi swaggo/swag openapi-typescript 生成类型
接口幂等性 重复请求安全 幂等 Token、唯一请求 ID、状态机 拦截器 + Redis 中间件 + Redis 请求头携带幂等 Key
字段校验 入参合法性检查 非空、长度、正则、自定义规则 @Valid + Hibernate Validator binding tag + validator/v10 zod/yup + 表单库
错误码体系 业务错误分类 模块前缀 + 错误编号;国际化 枚举 + 异常处理器 错误码常量 + 中间件 错误码映射提示文案

二、认证与授权

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
JWT 认证 无状态 Token 认证 Header 携带、过期刷新、签名验证 jjwt + Filter jwt-go + 中间件 请求拦截器自动携带
Token 刷新 无感续期 双 Token (Access + Refresh);静默刷新 刷新接口 + Token 存储 刷新接口 响应拦截器 401 重试
OAuth2/OIDC 第三方登录 授权码流程、社交登录 Spring Security OAuth2 goth/golang-oauth2 重定向 + 回调处理
RBAC 权限 角色基础访问控制 用户-角色-权限;资源鉴权 @PreAuthorize Casbin 中间件 路由守卫 + 按钮权限指令
权限数据同步 前端获取权限列表 登录后返回权限集;动态菜单 用户信息接口包含权限 同左 存储权限、动态路由生成
多租户 SaaS 数据隔离 租户 ID 透传、数据过滤 拦截器注入 TenantContext 中间件注入 Context Header 携带租户标识
Session 管理 登录态控制 单点登录、踢人下线、并发控制 Spring Session + Redis Redis 存储 Session 被踢时 WebSocket 通知

三、数据交互模式

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
请求/响应 标准同步交互 RESTful CRUD;超时处理 RestController gin.Context JSON axios/fetch
分页查询 大数据集分批 offset/limit 或 cursor;总数可选 Pageable + Page<T> GORM Scopes 分页组件 + 无限滚动
批量操作 多条数据一次处理 批量创建/更新/删除;事务保证 @RequestBody List<T> 切片入参 选中项批量提交
文件上传 二进制数据传输 multipart/form-data;大小限制 MultipartFile c.FormFile FormData + 进度监听
文件下载 文件流返回 Content-Disposition;断点续传 StreamingResponseBody c.File / c.DataFromReader Blob + download 属性
导入导出 Excel/CSV 处理 模板下载、异步导出、进度通知 EasyExcel / Apache POI excelize 文件上传 + 结果轮询
GraphQL 按需查询 单端点、客户端定义返回结构 graphql-java / DGS gqlgen / graphql-go Apollo Client / urql
tRPC 端到端类型安全 RPC 自动类型推导、无需代码生成 不适用 不适用 tRPC + Next.js

四、实时通信

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
WebSocket 全双工长连接 心跳保活、断线重连、房间管理 Spring WebSocket / STOMP gorilla/websocket / melody 原生 API / Socket.io-client
SSE 服务端单向推送 轻量级、自动重连;文本协议 SseEmitter c.Stream + SSE 格式 EventSource
消息广播 多客户端推送 发布订阅模式;集群广播 Redis Pub/Sub + WebSocket Redis Pub/Sub 订阅 Topic
在线状态 用户 Presence 心跳检测、状态同步 Redis 记录 + 定时清理 同左 在线列表订阅
通知推送 系统消息下发 未读计数、消息中心 存储 + WebSocket/SSE 同左 通知组件 + 角标

五、类型安全与代码生成

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
OpenAPI 类型生成 后端接口 → TS 类型 自动同步、减少手写 springdoc 生成 openapi.json swag 生成 swagger.json openapi-typescript / orval
DTO 定义 数据传输对象 请求/响应分离、字段裁剪 @Data class XxxDTO 结构体 + json tag interface / type
枚举同步 前后端枚举一致 状态码、类型等 枚举类 + 接口暴露 const + 接口 生成或手动维护
校验规则同步 前后端校验一致 减少不一致导致体验差 Validator 注解 binding tag zod schema 对应后端
Mock 数据 前端独立开发 契约先行、并行开发 文档导出 文档导出 MSW / Faker.js
端到端类型 全链路类型推导 零手写类型、自动同步 不直接支持 不直接支持 tRPC / ts-rest

六、状态同步

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
乐观更新 先更新 UI 后同步 提升体验;失败回滚 接口正常响应 同左 TanStack Query mutation
悲观更新 等待响应再更新 数据准确;体验略差 接口返回最新数据 同左 默认行为
缓存失效 数据变更后刷新 手动失效、自动失效 无直接关联 无直接关联 queryClient.invalidateQueries
轮询 定时拉取数据 简单可靠;实时性差 普通接口 普通接口 refetchInterval
WebSocket 同步 服务端推送变更 实时性好;复杂度高 变更时广播 变更时广播 收到消息刷新 Query
冲突处理 并发编辑冲突 版本号检测、最后写入胜出 @Version 乐观锁 版本字段校验 冲突提示 + 合并 UI

七、错误处理

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
全局异常处理 统一捕获处理异常 返回标准错误格式;日志记录 @ControllerAdvice Recovery 中间件 + 自定义 响应拦截器
业务异常 可预期业务错误 自定义异常类、错误码 继承 RuntimeException 自定义 error 类型 根据 code 分支处理
参数校验错误 入参不合法 返回字段级错误信息 MethodArgumentNotValidException binding.Validator 错误 表单字段错误映射
网络错误 请求失败 超时、断网、DNS 失败 后端无感知 后端无感知 错误边界 + 重试 UI
HTTP 状态码 标准错误语义 4xx 客户端错误、5xx 服务端 ResponseEntity c.AbortWithStatusJSON 拦截器分类处理
错误上报 异常信息收集 堆栈、上下文、用户信息 Sentry SDK Sentry SDK Sentry / 自研 SDK
友好提示 用户可理解的错误 技术错误转用户文案;国际化 错误消息配置 错误消息映射 错误码 → 文案映射

八、安全协作

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
CORS 配置 跨域资源共享 允许源、方法、头部;预检缓存 WebMvcConfigurer cors 中间件 开发代理 / 生产同源
CSRF 防护 跨站请求伪造 Token 校验;SameSite Cookie Spring Security CSRF gorilla/csrf 表单携带 Token
XSS 防护 跨站脚本 输出编码、CSP 头 模板自动转义 html/template 转义 React/Vue 自动转义
SQL 注入防护 恶意 SQL 执行 参数化查询、ORM JPA / MyBatis #{} GORM 参数绑定 无直接关联
敏感数据脱敏 隐私保护 手机号、身份证、银行卡 序列化脱敏注解 自定义 MarshalJSON 展示层格式化
请求签名 防篡改防重放 timestamp + nonce + sign 拦截器验签 中间件验签 请求拦截器加签
HTTPS 强制 加密传输 HSTS 头;HTTP 重定向 server.ssl 配置 TLS 配置 确保请求走 HTTPS
速率限制 防止滥用 IP/用户维度限流 Bucket4j / Resilience4j rate limiter 中间件 429 状态码处理

九、文件与资源

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
静态资源托管 前端产物部署 CDN、缓存策略、版本哈希 分离部署 / static 目录 分离部署 / Static 中间件 构建产物部署到 CDN
上传预签名 直传对象存储 后端生成签名 URL、前端直传 AWS SDK / MinIO AWS SDK / MinIO 获取签名 → PUT 上传
图片处理 缩放、裁剪、水印 CDN 处理 / 后端处理 Thumbnailator imaging 拼接处理参数 URL
大文件分片 断点续传 分片上传、合并、进度 分片接口 + 合并 分片接口 + 合并 切片 + 并行上传
资源权限 私有资源访问 签名 URL、过期时间 生成临时访问 URL 生成临时访问 URL 动态获取访问链接
富文本/图片 内容中的资源 上传后替换 URL;防盗链 上传接口 上传接口 编辑器插件集成

十、异步任务

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
异步接口 立即返回任务 ID 长耗时任务;轮询/回调获取结果 @Async + 任务存储 goroutine + 任务存储 提交 → 轮询进度
任务进度 实时反馈进度 百分比、阶段、预估时间 Redis 存储进度 Redis 存储进度 轮询 / SSE / WebSocket
任务取消 中止进行中任务 检查取消标志、资源清理 Future.cancel context.WithCancel 调用取消接口
任务历史 任务执行记录 状态、耗时、结果、日志 任务表记录 任务表记录 任务列表页
定时任务 计划执行 Cron 表达式;分布式锁防重 @Scheduled + ShedLock gocron + 分布式锁 管理界面配置
消息队列 异步解耦 削峰、重试、死信 RabbitMQ / Kafka 同左 无直接交互

十一、日志与追踪

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
请求日志 记录请求响应 方法、路径、状态、耗时 Logbook / 拦截器 Logger 中间件 请求拦截器日志
TraceID 透传 全链路追踪标识 跨服务传递、日志关联 MDC + Header 传递 Context + Header 请求头携带 TraceID
前端日志上报 客户端日志收集 错误、行为、性能 日志接收接口 日志接收接口 SDK 采集上报
用户行为追踪 操作记录 点击、曝光、停留;埋点方案 日志或消息队列存储 同左 埋点 SDK
审计日志 敏感操作记录 谁在何时做了什么;不可篡改 AOP + 审计表 中间件 + 审计表 审计日志查看页
链路可视化 调用链展示 Span 关系、耗时分析 Spring Cloud Sleuth OpenTelemetry Jaeger / Zipkin UI

十二、缓存策略

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
HTTP 缓存 浏览器/CDN 缓存 Cache-Control、ETag、Last-Modified 响应头设置 c.Header 设置 自动遵循
接口数据缓存 减少重复请求 SWR 策略、缓存时间 后端无感知 后端无感知 TanStack Query / SWR
服务端缓存 热点数据缓存 Redis 缓存、本地缓存 @Cacheable go-cache / Redis 无直接交互
缓存预热 启动时加载 减少冷启动影响 InitializingBean init 函数 预请求关键数据
缓存更新 数据一致性 Cache Aside、Write Through 手动失效 手动失效 invalidateQueries
离线缓存 断网可用 Service Worker 缓存策略 无关 无关 Workbox / CacheStorage

十三、测试协作

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
契约测试 接口契约验证 生产者/消费者驱动 Spring Cloud Contract Pact-go Pact / MSW
Mock Server 模拟后端接口 前端独立开发测试 WireMock 不直接需要 MSW / json-server
E2E 测试 全链路集成测试 真实前后端联调 TestContainers TestContainers Playwright / Cypress
接口自动化 API 测试用例 回归测试、CI 集成 RestAssured httptest Postman / Newman
数据准备 测试数据构造 隔离、可重复、清理 Testcontainers + SQL Testcontainers + SQL Faker.js + MSW
环境隔离 独立测试环境 数据隔离、配置隔离 Profile 配置 配置文件 环境变量切换

十四、部署架构

概念 定义 核心要点 Spring Boot 实现 Gin 实现 前端实现
前后端分离部署 独立部署独立扩展 静态资源 CDN、API 服务器 独立 JAR 部署 独立二进制部署 Vercel / Nginx / CDN
BFF 层 前端专属后端 聚合裁剪、协议转换 独立服务 独立服务 直接调用 BFF
API Gateway 统一入口 路由、鉴权、限流、监控 Spring Cloud Gateway Kong / Traefik 请求经过网关
容器化 Docker 部署 镜像构建、编排 Dockerfile + Jib Dockerfile 多阶段构建 Dockerfile / 纯静态部署
灰度发布 渐进式发布 流量分配、版本控制 K8s + Istio 同左 版本标识 + 特性开关
配置管理 动态配置 不重启更新、环境隔离 Nacos / Apollo Viper + Nacos 环境变量 / 运行时配置
健康检查 存活就绪探测 K8s Probe、负载均衡剔除 Actuator /health 自定义 /health 无直接关联

十五、开发协作流程

概念 定义 核心要点 后端职责 前端职责
接口先行 先定义接口再开发 OpenAPI 定义、评审、冻结 编写并维护 API 文档 基于文档生成类型、Mock
并行开发 前后端同时开发 Mock 数据、契约驱动 提供接口文档 使用 MSW Mock
联调测试 真实接口对接 环境对齐、问题定位 提供测试环境 切换真实接口
代码评审 交叉 Review 接口变更、破坏性检查 API 变更重点 Review 请求逻辑 Review
版本协同 多版本兼容 语义化版本、废弃通知 版本号管理、兼容策略 适配多版本接口
问题定位 前后端协作排查 日志、TraceID、重现步骤 提供日志、TraceID 查询 提供请求信息、TraceID
变更通知 接口变更同步 Breaking Change 预警 变更文档、邮件通知 订阅变更、及时适配

十六、典型功能实现对照

功能 后端核心逻辑 前端核心逻辑
登录 校验凭证 → 生成 Token → 返回用户信息 表单提交 → 存储 Token → 跳转首页
登出 清除服务端 Session/Token 黑名单 清除本地 Token → 跳转登录
列表查询 分页查询 → 数据转换 → 返回 请求数据 → 渲染表格 → 分页控制
详情查看 主键查询 → 关联查询 → 返回 请求详情 → 渲染表单/详情页
新增 参数校验 → 业务校验 → 入库 → 返回 ID 表单校验 → 提交 → 成功提示/跳转
编辑 参数校验 → 存在校验 → 更新 → 返回 加载数据 → 修改 → 提交 → 刷新
删除 权限校验 → 逻辑/物理删除 → 返回 确认弹窗 → 请求 → 刷新列表
导入 解析文件 → 校验 → 批量入库 → 返回结果 选择文件 → 上传 → 展示结果
导出 查询数据 → 生成文件 → 返回流/URL 触发导出 → 下载文件/轮询进度
权限控制 接口鉴权 → 数据过滤 菜单/按钮/路由 权限判断
实时通知 事件触发 → WebSocket/SSE 推送 建立连接 → 监听消息 → 更新 UI
文件上传 接收文件 → 存储 → 返回 URL 选择文件 → 上传 → 获取 URL

十七、性能优化协作

优化点 后端措施 前端措施
接口响应慢 SQL 优化、缓存、异步 骨架屏、Loading 状态
数据量大 分页、游标、流式返回 虚拟滚动、分页加载
重复请求 幂等设计 防抖、请求取消、缓存
首屏加载 接口合并、预热 SSR/SSG、代码分割、预加载
带宽消耗 Gzip/Brotli、字段裁剪 图片压缩、懒加载
并发瓶颈 限流、队列、水平扩展 请求排队、错误重试
长连接资源 连接池、心跳优化 按需连接、自动重连

速查索引

flowchart TB
    subgraph 接口层
    A1[RESTful/GraphQL] --> A2[认证授权]
    A2 --> A3[参数校验]
    A3 --> A4[错误处理]
    end
    
    subgraph 数据层
    B1[请求响应] --> B2[分页/批量]
    B2 --> B3[文件处理]
    B3 --> B4[缓存策略]
    end
    
    subgraph 实时层
    C1[WebSocket] --> C2[SSE]
    C2 --> C3[状态同步]
    C3 --> C4[通知推送]
    end
    
    subgraph 安全层
    D1[CORS] --> D2[CSRF/XSS]
    D2 --> D3[签名验证]
    D3 --> D4[速率限制]
    end
    
    subgraph 工程层
    E1[类型生成] --> E2[契约测试]
    E2 --> E3[日志追踪]
    E3 --> E4[部署架构]
    end
    
    subgraph 协作层
    F1[接口先行] --> F2[并行开发]
    F2 --> F3[联调测试]
    F3 --> F4[问题定位]
    end

技术栈快速对照

层次 Spring Boot Gin React Vue
路由 @RequestMapping gin.RouterGroup React Router Vue Router
状态管理 无直接对应 无直接对应 Redux / Zustand Pinia / Vuex
请求处理 @RequestBody / @PathVariable c.ShouldBindJSON / c.Param axios / fetch axios / fetch
响应处理 ResponseEntity c.JSON 响应拦截器 响应拦截器
参数校验 Hibernate Validator validator/v10 zod / yup zod / vee-validate
中间件/拦截器 Filter / Interceptor gin.HandlerFunc axios interceptor axios interceptor
依赖注入 @Autowired / 构造注入 wire / 手动注入 Context / Props provide / inject
ORM JPA / MyBatis GORM / sqlx 无直接对应 无直接对应
缓存 @Cacheable + Redis go-cache / Redis TanStack Query TanStack Query / SWR
WebSocket Spring WebSocket gorilla/websocket 原生 / Socket.io 原生 / Socket.io
定时任务 @Scheduled gocron 无直接对应 无直接对应
配置管理 application.yml viper / env .env / import.meta.env .env / import.meta.env
日志 Logback / Log4j2 zap / logrus console / Sentry console / Sentry
测试 JUnit / MockMvc testing / httptest Jest / Vitest Vitest / Vue Test Utils
API 文档 springdoc-openapi swaggo/swag 自动生成类型 自动生成类型
构建工具 Maven / Gradle go build Vite / Webpack Vite / Webpack
容器化 Jib / Dockerfile Dockerfile Dockerfile / 静态部署 Dockerfile / 静态部署

十八、通用功能模块对照

用户认证模块

sequenceDiagram
    autonumber
    participant U as 用户
    participant F as 前端
    participant B as 后端
    participant DB as 数据库

    U->>F: 输入账号密码
    F->>F: 表单校验 (zod/yup)
    F->>B: POST /api/auth/login
    B->>B: 参数校验
    B->>DB: 查询用户
    DB-->>B: 返回用户数据
    B->>B: 验证密码 (bcrypt)
    B->>B: 生成 JWT (Access + Refresh)
    B-->>F: 返回 Token + 用户信息
    F->>F: 存储 Token (内存/Storage)
    F->>U: 跳转首页
    
    Note over F,B: 后续请求
    F->>B: 请求携带 Authorization: Bearer {token}
    B->>B: 验证 Token
    B-->>F: 返回业务数据
环节 Spring Boot Gin React Vue
密码加密 BCryptPasswordEncoder bcrypt
Token 生成 jjwt / java-jwt jwt-go / golang-jwt
Token 存储 无状态 / Redis 黑名单 无状态 / Redis 黑名单 zustand / localStorage pinia / localStorage
请求拦截 Filter / Interceptor JWT 中间件 axios interceptor axios interceptor
401 处理 返回 401 返回 401 跳转登录 / 刷新 Token 跳转登录 / 刷新 Token

CRUD 列表模块

环节 Spring Boot Gin React Vue
分页参数 Pageable (page, size, sort) 自定义 PageQuery 结构体 useQuery + 分页状态 useQuery + 分页状态
查询构建 Specification / QueryDSL GORM Scopes / Where
数据转换 MapStruct / 手动转 DTO 结构体转换 直接使用 / 转换函数 直接使用 / 转换函数
响应结构 Page<T> → PageResult 自定义 PageResult 解构 data, total 解构 data, total
表格渲染 Ant Design Table Element Plus Table
搜索筛选 @RequestParam c.Query 表单状态 → 请求参数 表单状态 → 请求参数
排序 Sort 参数 ORDER BY 拼接 列头点击 → 参数 列头点击 → 参数

表单提交模块

环节 Spring Boot Gin React Vue
前端校验 React Hook Form + zod VeeValidate + zod
后端校验 @Valid + 注解 binding tag + validator
唯一性校验 数据库唯一约束 + 查询 数据库唯一约束 + 查询 异步校验 blur 触发 异步校验 blur 触发
乐观锁 @Version version 字段 提交时携带 version 提交时携带 version
提交状态 mutation.isPending mutation.isPending
成功处理 返回 ID / 实体 返回 ID / 实体 提示 + 跳转/刷新 提示 + 跳转/刷新
错误处理 返回字段错误 返回字段错误 映射到表单字段 映射到表单字段

十九、安全检查清单

检查项 后端检查 前端检查
认证 Token 签名验证、过期检查 Token 存储安全、自动续期
授权 接口权限、数据权限 路由守卫、按钮权限
输入校验 类型、长度、格式、业务规则 类型、长度、格式
SQL 注入 参数化查询、ORM 无直接风险
XSS 输出编码、CSP 框架自动转义、DOMPurify
CSRF Token 校验、SameSite 同源策略、Token 携带
敏感数据 加密存储、脱敏返回 脱敏展示、禁止日志
文件上传 类型校验、大小限制、病毒扫描 类型校验、大小校验
速率限制 IP/用户维度限流 429 友好提示
日志安全 脱敏、防注入 无敏感信息上报
依赖安全 依赖扫描、及时更新 npm audit、依赖扫描
传输安全 HTTPS 强制、HSTS HTTPS 请求

二十、常见问题排查

问题现象 可能原因 后端排查 前端排查
401 未授权 Token 过期/无效/缺失 检查 Token 解析日志 检查 Token 存储与携带
403 禁止访问 权限不足 检查权限配置与用户角色 检查权限数据是否同步
404 未找到 路由不匹配/资源不存在 检查路由注册 检查请求 URL
500 服务错误 后端异常 检查异常堆栈与日志 检查请求参数
跨域错误 CORS 配置问题 检查 CORS 配置 检查请求是否跨域
请求超时 接口慢/网络问题 检查接口耗时 检查网络与超时设置
数据不一致 缓存/并发问题 检查缓存与事务 检查本地缓存刷新
文件上传失败 大小限制/类型限制 检查配置与校验 检查文件类型与大小
WebSocket 断开 心跳/网络问题 检查连接日志 检查重连逻辑
页面白屏 JS 错误/接口失败 检查接口响应 检查控制台错误

二十一、接口设计最佳实践

实践 说明 示例
资源命名 名词复数、层级清晰 /users/{id}/orders
HTTP 动词 GET 查询、POST 创建、PUT 替换、PATCH 更新、DELETE 删除 PATCH /users/123
状态码语义 2xx 成功、4xx 客户端错误、5xx 服务端错误 201 Created422 Unprocessable Entity
分页参数 page/size 或 cursor/limit ?page=1&size=20
过滤排序 查询参数表达 ?status=active&sort=-createdAt
字段选择 按需返回字段 ?fields=id,name,email
批量操作 专用端点或请求体数组 POST /users/batch
版本管理 URL 或 Header /v1/usersAccept: application/vnd.api.v1+json
错误格式 统一结构 {code, message, details}
幂等设计 幂等 Key 或天然幂等 X-Idempotency-Key: uuid

二十二、前后端协作规范模板

接口文档模板

endpoint: POST /api/v1/users
summary: 创建用户
authentication: Bearer Token
request:
  headers:
    Content-Type: application/json
    Authorization: Bearer {token}
  body:
    name: string (required, 2-50 chars)
    email: string (required, email format)
    role: enum (admin | user | guest)
response:
  success:
    status: 201
    body:
      code: 0
      data:
        id: number
        name: string
        email: string
        createdAt: datetime
  errors:
    - status: 400
      code: 40001
      message: "参数校验失败"
      details: [{field: "email", message: "格式错误"}]
    - status: 409
      code: 40901
      message: "邮箱已存在"

错误码规范

范围 模块 示例
10000-19999 通用错误 10001 参数错误
20000-29999 用户模块 20001 用户不存在
30000-39999 订单模块 30001 订单已取消
40000-49999 支付模块 40001 余额不足
50000-59999 文件模块 50001 文件过大

Git 分支规范

main          # 生产分支
├── develop   # 开发分支
│   ├── feature/user-auth      # 功能分支
│   ├── feature/order-export   # 功能分支
│   └── fix/login-bug          # 修复分支
├── release/v1.2.0             # 发布分支
└── hotfix/payment-issue       # 热修复分支

提交信息规范

feat(user): 新增用户注册接口
fix(order): 修复订单金额计算错误
docs(api): 更新接口文档
refactor(auth): 重构认证中间件
test(user): 添加用户模块单元测试
chore(deps): 升级依赖版本

二十三、项目结构对照

Spring Boot 典型结构

src/main/java/com/example/
├── config/           # 配置类
├── controller/       # 控制器
├── service/          # 业务逻辑
│   └── impl/
├── repository/       # 数据访问
├── entity/           # 实体类
├── dto/              # 数据传输对象
│   ├── request/
│   └── response/
├── exception/        # 异常定义
├── util/             # 工具类
└── Application.java

Gin 典型结构

├── cmd/
│   └── server/
│       └── main.go
├── internal/
│   ├── handler/      # 请求处理
│   ├── service/      # 业务逻辑
│   ├── repository/   # 数据访问
│   ├── model/        # 数据模型
│   │   ├── entity/
│   │   ├── request/
│   │   └── response/
│   ├── middleware/   # 中间件
│   └── config/       # 配置
├── pkg/              # 公共包
└── go.mod

React 典型结构

src/
├── components/       # 通用组件
│   └── ui/
├── features/         # 功能模块
│   ├── auth/
│   │   ├── components/
│   │   ├── hooks/
│   │   ├── api.ts
│   │   └── types.ts
│   └── users/
├── hooks/            # 全局 Hooks
├── lib/              # 工具库
├── api/              # API 配置
├── types/            # 类型定义
├── stores/           # 状态管理
└── App.tsx

Vue 典型结构

src/
├── components/       # 通用组件
│   └── ui/
├── views/            # 页面组件
├── composables/      # 组合式函数
├── api/              # API 定义
├── types/            # 类型定义
├── stores/           # Pinia stores
├── router/           # 路由配置
├── utils/            # 工具函数
└── App.vue

速查索引(完整)

flowchart TB
    subgraph 接口设计
    A1[RESTful 规范] --> A2[版本管理]
    A2 --> A3[参数校验]
    A3 --> A4[错误码体系]
    end
    
    subgraph 认证授权
    B1[JWT 认证] --> B2[Token 刷新]
    B2 --> B3[RBAC 权限]
    B3 --> B4[会话管理]
    end
    
    subgraph 数据交互
    C1[CRUD] --> C2[分页/批量]
    C2 --> C3[文件处理]
    C3 --> C4[实时通信]
    end
    
    subgraph 类型安全
    D1[OpenAPI] --> D2[类型生成]
    D2 --> D3[DTO 同步]
    D3 --> D4[Mock 数据]
    end
    
    subgraph 安全协作
    E1[CORS] --> E2[CSRF/XSS]
    E2 --> E3[请求签名]
    E3 --> E4[速率限制]
    end
    
    subgraph 工程协作
    F1[接口先行] --> F2[并行开发]
    F2 --> F3[联调测试]
    F3 --> F4[部署架构]
    end

附录:大型工程典型项目结构


一、Spring Boot 大型工程结构

project-root/
├── pom.xml                                    # 父 POM(多模块管理)
├── docker-compose.yml                         # 本地开发环境
├── Dockerfile
├── Makefile
├── README.md
│
├── docs/                                      # 项目文档
│   ├── api/                                   # API 文档
│   ├── architecture/                          # 架构设计
│   └── database/                              # 数据库设计
│
├── deploy/                                    # 部署配置
│   ├── k8s/
│   │   ├── base/
│   │   ├── overlays/
│   │   │   ├── dev/
│   │   │   ├── staging/
│   │   │   └── prod/
│   └── scripts/
│
├── project-common/                            # 公共模块
│   ├── pom.xml
│   └── src/main/java/com/example/common/
│       ├── annotation/                        # 自定义注解
│       │   ├── Log.java
│       │   ├── RateLimit.java
│       │   └── RequirePermission.java
│       ├── constant/                          # 常量定义
│       │   ├── CommonConstant.java
│       │   ├── RedisKeyConstant.java
│       │   └── SecurityConstant.java
│       ├── enums/                             # 枚举定义
│       │   ├── ErrorCodeEnum.java
│       │   ├── StatusEnum.java
│       │   └── BusinessTypeEnum.java
│       ├── exception/                         # 异常定义
│       │   ├── BaseException.java
│       │   ├── BusinessException.java
│       │   ├── AuthenticationException.java
│       │   └── RateLimitException.java
│       ├── result/                            # 响应结构
│       │   ├── Result.java
│       │   ├── PageResult.java
│       │   └── ErrorDetail.java
│       └── util/                              # 工具类
│           ├── JsonUtils.java
│           ├── DateUtils.java
│           ├── SecurityUtils.java
│           ├── IpUtils.java
│           └── AssertUtils.java
│
├── project-core/                              # 核心模块
│   ├── pom.xml
│   └── src/main/java/com/example/core/
│       ├── config/                            # 核心配置
│       │   ├── SecurityConfig.java
│       │   ├── RedisConfig.java
│       │   ├── MybatisPlusConfig.java
│       │   ├── ThreadPoolConfig.java
│       │   ├── CorsConfig.java
│       │   └── OpenApiConfig.java
│       ├── filter/                            # 过滤器
│       │   ├── JwtAuthenticationFilter.java
│       │   ├── TraceIdFilter.java
│       │   └── XssFilter.java
│       ├── interceptor/                       # 拦截器
│       │   ├── RateLimitInterceptor.java
│       │   ├── PermissionInterceptor.java
│       │   └── TenantInterceptor.java
│       ├── aspect/                            # 切面
│       │   ├── LogAspect.java
│       │   ├── CacheAspect.java
│       │   └── DistributedLockAspect.java
│       ├── handler/                           # 处理器
│       │   ├── GlobalExceptionHandler.java
│       │   ├── MybatisMetaObjectHandler.java
│       │   └── SensitiveDataHandler.java
│       ├── security/                          # 安全组件
│       │   ├── JwtTokenProvider.java
│       │   ├── UserDetailsServiceImpl.java
│       │   └── PasswordEncoder.java
│       └── event/                             # 事件定义
│           ├── UserLoginEvent.java
│           └── OrderCreatedEvent.java
│
├── project-domain/                            # 领域模块
│   ├── pom.xml
│   └── src/main/java/com/example/domain/
│       │
│       ├── user/                              # 用户领域
│       │   ├── entity/
│       │   │   ├── User.java
│       │   │   ├── Role.java
│       │   │   └── Permission.java
│       │   ├── repository/
│       │   │   ├── UserRepository.java
│       │   │   └── RoleRepository.java
│       │   ├── service/
│       │   │   ├── UserService.java
│       │   │   ├── UserServiceImpl.java
│       │   │   ├── RoleService.java
│       │   │   └── RoleServiceImpl.java
│       │   ├── dto/
│       │   │   ├── request/
│       │   │   │   ├── UserCreateRequest.java
│       │   │   │   ├── UserUpdateRequest.java
│       │   │   │   └── UserQueryRequest.java
│       │   │   └── response/
│       │   │       ├── UserResponse.java
│       │   │       └── UserDetailResponse.java
│       │   ├── converter/
│       │   │   └── UserConverter.java
│       │   └── event/
│       │       ├── UserCreatedEvent.java
│       │       └── UserEventListener.java
│       │
│       ├── order/                             # 订单领域
│       │   ├── entity/
│       │   │   ├── Order.java
│       │   │   └── OrderItem.java
│       │   ├── repository/
│       │   ├── service/
│       │   ├── dto/
│       │   ├── converter/
│       │   ├── state/                         # 状态机
│       │   │   ├── OrderState.java
│       │   │   └── OrderStateMachine.java
│       │   └── saga/                          # 分布式事务
│       │       └── CreateOrderSaga.java
│       │
│       └── payment/                           # 支付领域
│           ├── entity/
│           ├── repository/
│           ├── service/
│           ├── dto/
│           ├── strategy/                      # 策略模式
│           │   ├── PaymentStrategy.java
│           │   ├── AlipayStrategy.java
│           │   └── WechatPayStrategy.java
│           └── callback/
│               └── PaymentCallbackHandler.java
│
├── project-api/                               # API 模块(对外暴露)
│   ├── pom.xml
│   └── src/main/java/com/example/api/
│       ├── controller/
│       │   ├── AuthController.java
│       │   ├── UserController.java
│       │   ├── OrderController.java
│       │   └── FileController.java
│       └── websocket/
│           ├── WebSocketConfig.java
│           └── NotificationWebSocketHandler.java
│
├── project-admin/                             # 管理后台模块
│   ├── pom.xml
│   └── src/main/java/com/example/admin/
│       └── controller/
│           ├── AdminUserController.java
│           ├── AdminOrderController.java
│           └── SystemConfigController.java
│
├── project-job/                               # 定时任务模块
│   ├── pom.xml
│   └── src/main/java/com/example/job/
│       ├── config/
│       │   └── QuartzConfig.java
│       └── task/
│           ├── OrderTimeoutTask.java
│           ├── DataSyncTask.java
│           └── ReportGenerateTask.java
│
├── project-integration/                       # 外部集成模块
│   ├── pom.xml
│   └── src/main/java/com/example/integration/
│       ├── sms/
│       │   ├── SmsClient.java
│       │   └── AliyunSmsClient.java
│       ├── oss/
│       │   ├── OssClient.java
│       │   └── MinioOssClient.java
│       ├── payment/
│       │   ├── AlipayClient.java
│       │   └── WechatPayClient.java
│       └── mq/
│           ├── producer/
│           │   └── OrderMessageProducer.java
│           └── consumer/
│               └── OrderMessageConsumer.java
│
└── project-boot/                              # 启动模块
    ├── pom.xml
    └── src/
        ├── main/
        │   ├── java/com/example/
        │   │   └── Application.java
        │   └── resources/
        │       ├── application.yml
        │       ├── application-dev.yml
        │       ├── application-staging.yml
        │       ├── application-prod.yml
        │       ├── logback-spring.xml
        │       └── db/
        │           └── migration/             # Flyway 迁移
        │               ├── V1__init.sql
        │               └── V2__add_order.sql
        └── test/
            └── java/com/example/
                ├── integration/               # 集成测试
                └── unit/                      # 单元测试

模块依赖关系

flowchart TB
    subgraph 启动层
    BOOT[project-boot]
    end
    
    subgraph 接口层
    API[project-api]
    ADMIN[project-admin]
    JOB[project-job]
    end
    
    subgraph 领域层
    DOMAIN[project-domain]
    end
    
    subgraph 基础设施层
    CORE[project-core]
    INTEGRATION[project-integration]
    end
    
    subgraph 公共层
    COMMON[project-common]
    end
    
    BOOT --> API
    BOOT --> ADMIN
    BOOT --> JOB
    API --> DOMAIN
    ADMIN --> DOMAIN
    JOB --> DOMAIN
    DOMAIN --> CORE
    DOMAIN --> INTEGRATION
    CORE --> COMMON
    INTEGRATION --> COMMON

二、Gin 大型工程结构

project-root/
├── go.mod
├── go.sum
├── Makefile
├── Dockerfile
├── docker-compose.yml
├── .golangci.yml                              # Lint 配置
├── .air.toml                                  # 热重载配置
├── README.md
│
├── docs/                                      # 项目文档
│   ├── swagger/                               # Swagger 文档
│   │   └── swagger.json
│   ├── api/
│   └── architecture/
│
├── deploy/                                    # 部署配置
│   ├── k8s/
│   │   ├── base/
│   │   └── overlays/
│   │       ├── dev/
│   │       ├── staging/
│   │       └── prod/
│   └── scripts/
│
├── cmd/                                       # 入口程序
│   ├── server/                                # API 服务
│   │   └── main.go
│   ├── admin/                                 # 管理后台
│   │   └── main.go
│   ├── worker/                                # 异步 Worker
│   │   └── main.go
│   ├── job/                                   # 定时任务
│   │   └── main.go
│   └── migrate/                               # 数据迁移
│       └── main.go
│
├── configs/                                   # 配置文件
│   ├── config.yaml
│   ├── config.dev.yaml
│   ├── config.staging.yaml
│   └── config.prod.yaml
│
├── internal/                                  # 内部包(不对外暴露)
│   │
│   ├── config/                                # 配置加载
│   │   ├── config.go
│   │   └── loader.go
│   │
│   ├── server/                                # HTTP 服务
│   │   ├── server.go
│   │   ├── router.go
│   │   └── middleware.go
│   │
│   ├── middleware/                            # 中间件
│   │   ├── auth.go
│   │   ├── cors.go
│   │   ├── logger.go
│   │   ├── recovery.go
│   │   ├── ratelimit.go
│   │   ├── trace.go
│   │   ├── tenant.go
│   │   └── permission.go
│   │
│   ├── handler/                               # 请求处理(按领域分组)
│   │   ├── handler.go                         # 公共 Handler
│   │   ├── auth/
│   │   │   ├── handler.go
│   │   │   ├── login.go
│   │   │   ├── logout.go
│   │   │   └── refresh.go
│   │   ├── user/
│   │   │   ├── handler.go
│   │   │   ├── create.go
│   │   │   ├── update.go
│   │   │   ├── delete.go
│   │   │   ├── get.go
│   │   │   └── list.go
│   │   ├── order/
│   │   │   ├── handler.go
│   │   │   ├── create.go
│   │   │   ├── cancel.go
│   │   │   └── list.go
│   │   └── file/
│   │       ├── handler.go
│   │       ├── upload.go
│   │       └── download.go
│   │
│   ├── service/                               # 业务逻辑
│   │   ├── auth/
│   │   │   ├── service.go
│   │   │   └── jwt.go
│   │   ├── user/
│   │   │   ├── service.go
│   │   │   └── password.go
│   │   ├── order/
│   │   │   ├── service.go
│   │   │   ├── state_machine.go
│   │   │   └── saga.go
│   │   └── payment/
│   │       ├── service.go
│   │       ├── alipay.go
│   │       └── wechat.go
│   │
│   ├── repository/                            # 数据访问
│   │   ├── repository.go                      # 仓储接口定义
│   │   ├── user/
│   │   │   ├── repository.go
│   │   │   ├── repository_impl.go
│   │   │   └── cache.go
│   │   ├── order/
│   │   │   ├── repository.go
│   │   │   └── repository_impl.go
│   │   └── cache/
│   │       ├── redis.go
│   │       └── local.go
│   │
│   ├── model/                                 # 数据模型
│   │   ├── entity/                            # 数据库实体
│   │   │   ├── base.go
│   │   │   ├── user.go
│   │   │   ├── role.go
│   │   │   ├── order.go
│   │   │   └── payment.go
│   │   ├── request/                           # 请求结构
│   │   │   ├── common.go
│   │   │   ├── auth.go
│   │   │   ├── user.go
│   │   │   └── order.go
│   │   ├── response/                          # 响应结构
│   │   │   ├── common.go
│   │   │   ├── user.go
│   │   │   └── order.go
│   │   └── converter/                         # 结构转换
│   │       ├── user.go
│   │       └── order.go
│   │
│   ├── job/                                   # 定时任务
│   │   ├── scheduler.go
│   │   ├── order_timeout.go
│   │   └── data_sync.go
│   │
│   ├── worker/                                # 异步任务
│   │   ├── worker.go
│   │   ├── order_worker.go
│   │   └── notification_worker.go
│   │
│   ├── event/                                 # 事件
│   │   ├── dispatcher.go
│   │   ├── user_event.go
│   │   └── order_event.go
│   │
│   └── integration/                           # 外部集成
│       ├── sms/
│       │   ├── client.go
│       │   └── aliyun.go
│       ├── oss/
│       │   ├── client.go
│       │   └── minio.go
│       ├── mq/
│       │   ├── producer.go
│       │   └── consumer.go
│       └── payment/
│           ├── alipay.go
│           └── wechat.go
│
├── pkg/                                       # 公共包(可对外暴露)
│   ├── errors/                                # 错误处理
│   │   ├── errors.go
│   │   ├── codes.go
│   │   └── wrap.go
│   ├── logger/                                # 日志
│   │   ├── logger.go
│   │   └── zap.go
│   ├── database/                              # 数据库
│   │   ├── mysql.go
│   │   ├── postgres.go
│   │   └── migration.go
│   ├── cache/                                 # 缓存
│   │   └── redis.go
│   ├── utils/                                 # 工具函数
│   │   ├── crypto.go
│   │   ├── time.go
│   │   ├── string.go
│   │   ├── validate.go
│   │   └── ip.go
│   ├── response/                              # 响应封装
│   │   ├── response.go
│   │   └── page.go
│   ├── jwt/                                   # JWT
│   │   └── jwt.go
│   ├── lock/                                  # 分布式锁
│   │   └── redis_lock.go
│   ├── trace/                                 # 链路追踪
│   │   └── trace.go
│   └── pagination/                            # 分页
│       └── pagination.go
│
├── migrations/                                # 数据库迁移
│   ├── 000001_init.up.sql
│   ├── 000001_init.down.sql
│   ├── 000002_add_order.up.sql
│   └── 000002_add_order.down.sql
│
├── scripts/                                   # 脚本
│   ├── build.sh
│   ├── test.sh
│   └── generate.sh
│
├── api/                                       # API 定义(可选 protobuf)
│   └── v1/
│       ├── user.proto
│       └── order.proto
│
└── test/                                      # 测试
    ├── integration/
    │   ├── user_test.go
    │   └── order_test.go
    ├── e2e/
    │   └── api_test.go
    └── mock/
        ├── user_repository_mock.go
        └── order_service_mock.go

包依赖关系

flowchart TB
    subgraph 入口层
    CMD[cmd/*]
    end
    
    subgraph 接口层
    HANDLER[internal/handler]
    MIDDLEWARE[internal/middleware]
    SERVER[internal/server]
    end
    
    subgraph 业务层
    SERVICE[internal/service]
    JOB[internal/job]
    WORKER[internal/worker]
    EVENT[internal/event]
    end
    
    subgraph 数据层
    REPO[internal/repository]
    MODEL[internal/model]
    end
    
    subgraph 集成层
    INTEGRATION[internal/integration]
    end
    
    subgraph 基础层
    PKG[pkg/*]
    CONFIG[internal/config]
    end
    
    CMD --> SERVER
    SERVER --> HANDLER
    SERVER --> MIDDLEWARE
    HANDLER --> SERVICE
    MIDDLEWARE --> PKG
    SERVICE --> REPO
    SERVICE --> INTEGRATION
    SERVICE --> EVENT
    REPO --> MODEL
    REPO --> PKG
    JOB --> SERVICE
    WORKER --> SERVICE
    INTEGRATION --> PKG
    CONFIG --> PKG

三、React 大型工程结构

project-root/
├── package.json
├── pnpm-workspace.yaml                        # Monorepo 配置
├── turbo.json                                 # Turborepo 配置
├── tsconfig.json
├── .eslintrc.js
├── .prettierrc
├── .env.example
├── docker-compose.yml
├── Dockerfile
├── README.md
│
├── docs/                                      # 项目文档
│   ├── architecture/
│   ├── components/
│   └── conventions/
│
├── deploy/                                    # 部署配置
│   ├── nginx/
│   │   └── nginx.conf
│   └── k8s/
│
├── packages/                                  # Monorepo 包
│   │
│   ├── ui/                                    # UI 组件库
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   ├── Button/
│   │   │   │   │   ├── Button.tsx
│   │   │   │   │   ├── Button.test.tsx
│   │   │   │   │   ├── Button.stories.tsx
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Input/
│   │   │   │   ├── Modal/
│   │   │   │   ├── Table/
│   │   │   │   ├── Form/
│   │   │   │   └── index.ts
│   │   │   ├── hooks/
│   │   │   │   ├── useDisclosure.ts
│   │   │   │   └── useMediaQuery.ts
│   │   │   ├── styles/
│   │   │   │   ├── tokens.css
│   │   │   │   └── globals.css
│   │   │   └── index.ts
│   │   └── .storybook/
│   │
│   ├── shared/                                # 共享工具
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── utils/
│   │   │   │   ├── format.ts
│   │   │   │   ├── date.ts
│   │   │   │   ├── storage.ts
│   │   │   │   └── index.ts
│   │   │   ├── constants/
│   │   │   │   ├── routes.ts
│   │   │   │   ├── queryKeys.ts
│   │   │   │   └── index.ts
│   │   │   ├── types/
│   │   │   │   ├── common.ts
│   │   │   │   ├── api.ts
│   │   │   │   └── index.ts
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   │
│   ├── api-client/                            # API 客户端
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── client.ts                      # Axios 实例
│   │   │   ├── interceptors/
│   │   │   │   ├── auth.ts
│   │   │   │   ├── error.ts
│   │   │   │   └── retry.ts
│   │   │   ├── generated/                     # OpenAPI 生成
│   │   │   │   ├── types.ts
│   │   │   │   └── services.ts
│   │   │   └── index.ts
│   │   ├── openapi.json                       # OpenAPI 规范
│   │   └── tsconfig.json
│   │
│   └── config/                                # 共享配置
│       ├── eslint/
│       ├── typescript/
│       └── tailwind/
│
├── apps/                                      # 应用
│   │
│   ├── web/                                   # 主应用
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── vite.config.ts
│   │   ├── index.html
│   │   ├── public/
│   │   │   ├── favicon.ico
│   │   │   └── manifest.json
│   │   │
│   │   └── src/
│   │       ├── main.tsx                       # 入口
│   │       ├── App.tsx
│   │       ├── vite-env.d.ts
│   │       │
│   │       ├── app/                           # 应用配置
│   │       │   ├── providers/                 # Provider 组合
│   │       │   │   ├── AppProvider.tsx
│   │       │   │   ├── AuthProvider.tsx
│   │       │   │   ├── QueryProvider.tsx
│   │       │   │   └── ThemeProvider.tsx
│   │       │   ├── router/                    # 路由配置
│   │       │   │   ├── index.tsx
│   │       │   │   ├── routes.tsx
│   │       │   │   ├── guards/
│   │       │   │   │   ├── AuthGuard.tsx
│   │       │   │   │   └── PermissionGuard.tsx
│   │       │   │   └── layouts/
│   │       │   │       ├── MainLayout.tsx
│   │       │   │       ├── AuthLayout.tsx
│   │       │   │       └── DashboardLayout.tsx
│   │       │   └── config/
│   │       │       ├── env.ts
│   │       │       └── constants.ts
│   │       │
│   │       ├── features/                      # 功能模块(核心)
│   │       │   │
│   │       │   ├── auth/                      # 认证模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── auth.api.ts
│   │       │   │   │   └── auth.types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── LoginForm/
│   │       │   │   │   │   ├── LoginForm.tsx
│   │       │   │   │   │   ├── LoginForm.schema.ts
│   │       │   │   │   │   └── index.ts
│   │       │   │   │   └── RegisterForm/
│   │       │   │   ├── hooks/
│   │       │   │   │   ├── useAuth.ts
│   │       │   │   │   ├── useLogin.ts
│   │       │   │   │   └── useLogout.ts
│   │       │   │   ├── stores/
│   │       │   │   │   └── auth.store.ts
│   │       │   │   ├── pages/
│   │       │   │   │   ├── LoginPage.tsx
│   │       │   │   │   └── RegisterPage.tsx
│   │       │   │   ├── utils/
│   │       │   │   │   └── token.ts
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── users/                     # 用户模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── users.api.ts
│   │       │   │   │   └── users.types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── UserList/
│   │       │   │   │   ├── UserForm/
│   │       │   │   │   ├── UserDetail/
│   │       │   │   │   └── UserAvatar/
│   │       │   │   ├── hooks/
│   │       │   │   │   ├── useUsers.ts
│   │       │   │   │   ├── useUser.ts
│   │       │   │   │   ├── useCreateUser.ts
│   │       │   │   │   └── useUpdateUser.ts
│   │       │   │   ├── pages/
│   │       │   │   │   ├── UsersPage.tsx
│   │       │   │   │   ├── UserDetailPage.tsx
│   │       │   │   │   └── UserCreatePage.tsx
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── orders/                    # 订单模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── orders.api.ts
│   │       │   │   │   └── orders.types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── OrderList/
│   │       │   │   │   ├── OrderDetail/
│   │       │   │   │   ├── OrderForm/
│   │       │   │   │   ├── OrderStatusBadge/
│   │       │   │   │   └── OrderTimeline/
│   │       │   │   ├── hooks/
│   │       │   │   │   ├── useOrders.ts
│   │       │   │   │   ├── useOrder.ts
│   │       │   │   │   ├── useCreateOrder.ts
│   │       │   │   │   └── useCancelOrder.ts
│   │       │   │   ├── pages/
│   │       │   │   │   ├── OrdersPage.tsx
│   │       │   │   │   ├── OrderDetailPage.tsx
│   │       │   │   │   └── OrderCreatePage.tsx
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── dashboard/                 # 仪表盘模块
│   │       │   │   ├── api/
│   │       │   │   │   └── dashboard.api.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── StatCard/
│   │       │   │   │   ├── RevenueChart/
│   │       │   │   │   ├── RecentOrders/
│   │       │   │   │   └── UserGrowthChart/
│   │       │   │   ├── hooks/
│   │       │   │   │   └── useDashboardStats.ts
│   │       │   │   ├── pages/
│   │       │   │   │   └── DashboardPage.tsx
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── settings/                  # 设置模块
│   │       │   │   ├── api/
│   │       │   │   ├── components/
│   │       │   │   │   ├── ProfileForm/
│   │       │   │   │   ├── PasswordForm/
│   │       │   │   │   ├── NotificationSettings/
│   │       │   │   │   └── ThemeSettings/
│   │       │   │   ├── hooks/
│   │       │   │   ├── pages/
│   │       │   │   │   ├── SettingsPage.tsx
│   │       │   │   │   └── ProfilePage.tsx
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   └── notifications/             # 通知模块
│   │       │       ├── api/
│   │       │       ├── components/
│   │       │       │   ├── NotificationList/
│   │       │       │   ├── NotificationItem/
│   │       │       │   └── NotificationBell/
│   │       │       ├── hooks/
│   │       │       │   ├── useNotifications.ts
│   │       │       │   └── useWebSocket.ts
│   │       │       ├── stores/
│   │       │       │   └── notification.store.ts
│   │       │       └── index.ts
│   │       │
│   │       ├── components/                    # 应用级通用组件
│   │       │   ├── ErrorBoundary/
│   │       │   │   ├── ErrorBoundary.tsx
│   │       │   │   └── ErrorFallback.tsx
│   │       │   ├── LoadingScreen/
│   │       │   ├── PageHeader/
│   │       │   ├── Sidebar/
│   │       │   ├── Navbar/
│   │       │   ├── Breadcrumb/
│   │       │   ├── ConfirmDialog/
│   │       │   ├── DataTable/
│   │       │   │   ├── DataTable.tsx
│   │       │   │   ├── DataTablePagination.tsx
│   │       │   │   ├── DataTableFilter.tsx
│   │       │   │   └── index.ts
│   │       │   ├── FileUpload/
│   │       │   └── RichTextEditor/
│   │       │
│   │       ├── hooks/                         # 应用级通用 Hooks
│   │       │   ├── useDebounce.ts
│   │       │   ├── useLocalStorage.ts
│   │       │   ├── usePagination.ts
│   │       │   ├── usePermission.ts
│   │       │   ├── useConfirm.ts
│   │       │   └── index.ts
│   │       │
│   │       ├── stores/                        # 全局状态
│   │       │   ├── index.ts
│   │       │   ├── ui.store.ts                # UI 状态(侧边栏、主题等)
│   │       │   └── permission.store.ts
│   │       │
│   │       ├── lib/                           # 第三方库封装
│   │       │   ├── axios.ts
│   │       │   ├── dayjs.ts
│   │       │   ├── i18n.ts
│   │       │   └── sentry.ts
│   │       │
│   │       ├── styles/                        # 全局样式
│   │       │   ├── globals.css
│   │       │   └── tailwind.css
│   │       │
│   │       └── types/                         # 应用类型定义
│   │           ├── global.d.ts
│   │           └── env.d.ts
│   │
│   ├── admin/                                 # 管理后台应用
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── vite.config.ts
│   │   └── src/
│   │       ├── main.tsx
│   │       ├── features/
│   │       │   ├── system/                    # 系统管理
│   │       │   │   ├── components/
│   │       │   │   ├── pages/
│   │       │   │   │   ├── RoleManagePage.tsx
│   │       │   │   │   ├── MenuManagePage.tsx
│   │       │   │   │   └── DictManagePage.tsx
│   │       │   │   └── index.ts
│   │       │   ├── logs/                      # 日志管理
│   │       │   └── monitor/                   # 系统监控
│   │       └── ...
│   │
│   └── mobile/                                # 移动端 H5
│       ├── package.json
│       └── src/
│           └── ...
│
├── tools/                                     # 工具脚本
│   ├── generators/                            # 代码生成器
│   │   ├── feature/
│   │   │   └── index.ts
│   │   └── component/
│   │       └── index.ts
│   └── scripts/
│       ├── generate-api.ts                    # 生成 API 类型
│       └── analyze-bundle.ts
│
└── tests/                                     # E2E 测试
    ├── e2e/
    │   ├── auth.spec.ts
    │   ├── users.spec.ts
    │   └── orders.spec.ts
    ├── fixtures/
    └── playwright.config.ts

Feature 模块内部结构详解

flowchart TB
    subgraph Feature Module
        API[api/] --> |定义| TYPES[types]
        API --> |请求| HOOKS[hooks/]
        HOOKS --> |数据| PAGES[pages/]
        HOOKS --> |数据| COMPONENTS[components/]
        STORES[stores/] --> |状态| COMPONENTS
        STORES --> |状态| PAGES
        COMPONENTS --> |组合| PAGES
        UTILS[utils/] --> |工具| HOOKS
        UTILS --> |工具| COMPONENTS
    end

四、Vue 大型工程结构

project-root/
├── package.json
├── pnpm-workspace.yaml                        # Monorepo 配置
├── turbo.json
├── tsconfig.json
├── .eslintrc.js
├── .prettierrc
├── .env.example
├── docker-compose.yml
├── Dockerfile
├── README.md
│
├── docs/                                      # 项目文档
│   ├── architecture/
│   ├── components/
│   └── conventions/
│
├── deploy/                                    # 部署配置
│   ├── nginx/
│   │   └── nginx.conf
│   └── k8s/
│
├── packages/                                  # Monorepo 包
│   │
│   ├── ui/                                    # UI 组件库
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── vite.config.ts
│   │   ├── src/
│   │   │   ├── components/
│   │   │   │   ├── Button/
│   │   │   │   │   ├── Button.vue
│   │   │   │   │   ├── Button.test.ts
│   │   │   │   │   ├── Button.story.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Input/
│   │   │   │   │   ├── Input.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── Modal/
│   │   │   │   ├── Table/
│   │   │   │   ├── Form/
│   │   │   │   └── index.ts
│   │   │   ├── composables/
│   │   │   │   ├── useDisclosure.ts
│   │   │   │   └── useMediaQuery.ts
│   │   │   ├── directives/
│   │   │   │   ├── vFocus.ts
│   │   │   │   ├── vClickOutside.ts
│   │   │   │   └── index.ts
│   │   │   ├── styles/
│   │   │   │   ├── tokens.css
│   │   │   │   └── globals.css
│   │   │   └── index.ts
│   │   └── .storybook/
│   │
│   ├── shared/                                # 共享工具
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── utils/
│   │   │   │   ├── format.ts
│   │   │   │   ├── date.ts
│   │   │   │   ├── storage.ts
│   │   │   │   ├── tree.ts                    # 树结构处理
│   │   │   │   └── index.ts
│   │   │   ├── constants/
│   │   │   │   ├── routes.ts
│   │   │   │   ├── queryKeys.ts
│   │   │   │   └── index.ts
│   │   │   ├── types/
│   │   │   │   ├── common.ts
│   │   │   │   ├── api.ts
│   │   │   │   └── index.ts
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   │
│   ├── api-client/                            # API 客户端
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── client.ts
│   │   │   ├── interceptors/
│   │   │   │   ├── auth.ts
│   │   │   │   ├── error.ts
│   │   │   │   └── retry.ts
│   │   │   ├── generated/
│   │   │   │   ├── types.ts
│   │   │   │   └── services.ts
│   │   │   └── index.ts
│   │   ├── openapi.json
│   │   └── tsconfig.json
│   │
│   └── config/                                # 共享配置
│       ├── eslint/
│       ├── typescript/
│       └── unocss/
│
├── apps/                                      # 应用
│   │
│   ├── web/                                   # 主应用
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── vite.config.ts
│   │   ├── index.html
│   │   ├── public/
│   │   │   ├── favicon.ico
│   │   │   └── manifest.json
│   │   │
│   │   └── src/
│   │       ├── main.ts                        # 入口
│   │       ├── App.vue
│   │       ├── env.d.ts
│   │       │
│   │       ├── app/                           # 应用配置
│   │       │   ├── plugins/                   # Vue 插件
│   │       │   │   ├── index.ts
│   │       │   │   ├── pinia.ts
│   │       │   │   ├── router.ts
│   │       │   │   ├── i18n.ts
│   │       │   │   └── query.ts               # Vue Query
│   │       │   ├── router/                    # 路由配置
│   │       │   │   ├── index.ts
│   │       │   │   ├── routes/
│   │       │   │   │   ├── index.ts
│   │       │   │   │   ├── auth.routes.ts
│   │       │   │   │   ├── user.routes.ts
│   │       │   │   │   └── order.routes.ts
│   │       │   │   ├── guards/
│   │       │   │   │   ├── auth.guard.ts
│   │       │   │   │   └── permission.guard.ts
│   │       │   │   └── helpers/
│   │       │   │       └── dynamic-routes.ts  # 动态路由
│   │       │   └── config/
│   │       │       ├── env.ts
│   │       │       └── constants.ts
│   │       │
│   │       ├── layouts/                       # 布局组件
│   │       │   ├── DefaultLayout/
│   │       │   │   ├── DefaultLayout.vue
│   │       │   │   ├── components/
│   │       │   │   │   ├── Sidebar.vue
│   │       │   │   │   ├── Navbar.vue
│   │       │   │   │   ├── Footer.vue
│   │       │   │   │   └── Breadcrumb.vue
│   │       │   │   └── index.ts
│   │       │   ├── AuthLayout/
│   │       │   │   └── AuthLayout.vue
│   │       │   └── BlankLayout/
│   │       │       └── BlankLayout.vue
│   │       │
│   │       ├── modules/                       # 功能模块(核心)
│   │       │   │
│   │       │   ├── auth/                      # 认证模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── index.ts
│   │       │   │   │   └── types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── LoginForm.vue
│   │       │   │   │   ├── RegisterForm.vue
│   │       │   │   │   └── ForgotPasswordForm.vue
│   │       │   │   ├── composables/
│   │       │   │   │   ├── useAuth.ts
│   │       │   │   │   ├── useLogin.ts
│   │       │   │   │   └── useLogout.ts
│   │       │   │   ├── stores/
│   │       │   │   │   └── auth.store.ts
│   │       │   │   ├── views/
│   │       │   │   │   ├── LoginView.vue
│   │       │   │   │   └── RegisterView.vue
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── user/                      # 用户模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── index.ts
│   │       │   │   │   └── types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── UserList/
│   │       │   │   │   │   ├── UserList.vue
│   │       │   │   │   │   ├── UserListItem.vue
│   │       │   │   │   │   ├── UserListFilter.vue
│   │       │   │   │   │   └── index.ts
│   │       │   │   │   ├── UserForm/
│   │       │   │   │   │   ├── UserForm.vue
│   │       │   │   │   │   ├── UserFormBasic.vue
│   │       │   │   │   │   ├── UserFormRole.vue
│   │       │   │   │   │   └── index.ts
│   │       │   │   │   ├── UserDetail/
│   │       │   │   │   └── UserAvatar/
│   │       │   │   ├── composables/
│   │       │   │   │   ├── useUsers.ts
│   │       │   │   │   ├── useUser.ts
│   │       │   │   │   ├── useCreateUser.ts
│   │       │   │   │   ├── useUpdateUser.ts
│   │       │   │   │   └── useDeleteUser.ts
│   │       │   │   ├── views/
│   │       │   │   │   ├── UserListView.vue
│   │       │   │   │   ├── UserDetailView.vue
│   │       │   │   │   └── UserFormView.vue
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── order/                     # 订单模块
│   │       │   │   ├── api/
│   │       │   │   │   ├── index.ts
│   │       │   │   │   └── types.ts
│   │       │   │   ├── components/
│   │       │   │   │   ├── OrderList/
│   │       │   │   │   ├── OrderDetail/
│   │       │   │   │   ├── OrderForm/
│   │       │   │   │   ├── OrderStatusBadge.vue
│   │       │   │   │   └── OrderTimeline.vue
│   │       │   │   ├── composables/
│   │       │   │   │   ├── useOrders.ts
│   │       │   │   │   ├── useOrder.ts
│   │       │   │   │   ├── useCreateOrder.ts
│   │       │   │   │   └── useCancelOrder.ts
│   │       │   │   ├── views/
│   │       │   │   │   ├── OrderListView.vue
│   │       │   │   │   ├── OrderDetailView.vue
│   │       │   │   │   └── OrderFormView.vue
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── dashboard/                 # 仪表盘模块
│   │       │   │   ├── api/
│   │       │   │   ├── components/
│   │       │   │   │   ├── StatCard.vue
│   │       │   │   │   ├── RevenueChart.vue
│   │       │   │   │   ├── RecentOrders.vue
│   │       │   │   │   └── UserGrowthChart.vue
│   │       │   │   ├── composables/
│   │       │   │   │   └── useDashboardStats.ts
│   │       │   │   ├── views/
│   │       │   │   │   └── DashboardView.vue
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   ├── system/                    # 系统管理模块
│   │       │   │   ├── api/
│   │       │   │   ├── components/
│   │       │   │   │   ├── RoleForm.vue
│   │       │   │   │   ├── MenuTree.vue
│   │       │   │   │   ├── PermissionTree.vue
│   │       │   │   │   └── DictForm.vue
│   │       │   │   ├── composables/
│   │       │   │   ├── views/
│   │       │   │   │   ├── RoleView.vue
│   │       │   │   │   ├── MenuView.vue
│   │       │   │   │   └── DictView.vue
│   │       │   │   └── index.ts
│   │       │   │
│   │       │   └── notification/              # 通知模块
│   │       │       ├── api/
│   │       │       ├── components/
│   │       │       │   ├── NotificationBell.vue
│   │       │       │   ├── NotificationList.vue
│   │       │       │   └── NotificationItem.vue
│   │       │       ├── composables/
│   │       │       │   ├── useNotifications.ts
│   │       │       │   └── useWebSocket.ts
│   │       │       ├── stores/
│   │       │       │   └── notification.store.ts
│   │       │       └── index.ts
│   │       │
│   │       ├── components/                    # 应用级通用组件
│   │       │   ├── common/
│   │       │   │   ├── AppLoading.vue
│   │       │   │   ├── AppError.vue
│   │       │   │   ├── AppEmpty.vue
│   │       │   │   └── index.ts
│   │       │   ├── business/
│   │       │   │   ├── PageHeader/
│   │       │   │   │   ├── PageHeader.vue
│   │       │   │   │   └── index.ts
│   │       │   │   ├── DataTable/
│   │       │   │   │   ├── DataTable.vue
│   │       │   │   │   ├── DataTableColumn.vue
│   │       │   │   │   ├── DataTablePagination.vue
│   │       │   │   │   ├── DataTableFilter.vue
│   │       │   │   │   ├── DataTableToolbar.vue
│   │       │   │   │   └── index.ts
│   │       │   │   ├── SearchForm/
│   │       │   │   │   ├── SearchForm.vue
│   │       │   │   │   ├── SearchFormItem.vue
│   │       │   │   │   └── index.ts
│   │       │   │   ├── DetailCard/
│   │       │   │   ├── FileUpload/
│   │       │   │   ├── RichTextEditor/
│   │       │   │   ├── ImagePreview/
│   │       │   │   ├── ConfirmDialog/
│   │       │   │   ├── TreeSelect/
│   │       │   │   └── IconSelect/
│   │       │   └── index.ts
│   │       │
│   │       ├── composables/                   # 应用级通用组合式函数
│   │       │   ├── core/
│   │       │   │   ├── useRequest.ts          # 请求封装
│   │       │   │   ├── usePagination.ts       # 分页逻辑
│   │       │   │   ├── useTable.ts            # 表格逻辑
│   │       │   │   ├── useForm.ts             # 表单逻辑
│   │       │   │   ├── useDetail.ts           # 详情逻辑
│   │       │   │   └── useCrud.ts             # CRUD 组合
│   │       │   ├── ui/
│   │       │   │   ├── useLoading.ts
│   │       │   │   ├── useMessage.ts
│   │       │   │   ├── useDialog.ts
│   │       │   │   ├── useConfirm.ts
│   │       │   │   └── useTheme.ts
│   │       │   ├── utils/
│   │       │   │   ├── useDebounce.ts
│   │       │   │   ├── useThrottle.ts
│   │       │   │   ├── useLocalStorage.ts
│   │       │   │   ├── useClipboard.ts
│   │       │   │   ├── useEventListener.ts
│   │       │   │   └── useIntersectionObserver.ts
│   │       │   ├── business/
│   │       │   │   ├── usePermission.ts
│   │       │   │   ├── useDict.ts             # 字典数据
│   │       │   │   └── useExport.ts           # 导出功能
│   │       │   └── index.ts
│   │       │
│   │       ├── stores/                        # Pinia 状态管理
│   │       │   ├── index.ts
│   │       │   ├── modules/
│   │       │   │   ├── app.store.ts           # 应用状态
│   │       │   │   ├── user.store.ts          # 用户状态
│   │       │   │   ├── permission.store.ts    # 权限状态
│   │       │   │   ├── tab.store.ts           # 标签页状态
│   │       │   │   └── dict.store.ts          # 字典缓存
│   │       │   └── plugins/
│   │       │       └── persist.ts             # 持久化插件
│   │       │
│   │       ├── directives/                    # 自定义指令
│   │       │   ├── permission.ts              # v-permission
│   │       │   ├── loading.ts                 # v-loading
│   │       │   ├── debounce.ts                # v-debounce
│   │       │   ├── copy.ts                    # v-copy
│   │       │   ├── watermark.ts               # v-watermark
│   │       │   └── index.ts
│   │       │
│   │       ├── lib/                           # 第三方库封装
│   │       │   ├── axios/
│   │       │   │   ├── index.ts
│   │       │   │   ├── interceptors.ts
│   │       │   │   └── types.ts
│   │       │   ├── dayjs.ts
│   │       │   ├── echarts.ts
│   │       │   ├── i18n/
│   │       │   │   ├── index.ts
│   │       │   │   └── locales/
│   │       │   │       ├── zh-CN.json
│   │       │   │       └── en-US.json
│   │       │   └── sentry.ts
│   │       │
│   │       ├── styles/                        # 全局样式
│   │       │   ├── index.scss
│   │       │   ├── variables.scss
│   │       │   ├── mixins.scss
│   │       │   ├── reset.scss
│   │       │   ├── transition.scss
│   │       │   └── theme/
│   │       │       ├── light.scss
│   │       │       └── dark.scss
│   │       │
│   │       ├── assets/                        # 静态资源
│   │       │   ├── images/
│   │       │   ├── icons/
│   │       │   │   └── svg/
│   │       │   └── fonts/
│   │       │
│   │       └── types/                         # 类型定义
│   │           ├── global.d.ts
│   │           ├── env.d.ts
│   │           ├── router.d.ts
│   │           ├── components.d.ts            # 自动导入组件类型
│   │           └── auto-imports.d.ts          # 自动导入 API 类型
│   │
│   ├── admin/                                 # 管理后台应用
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   ├── vite.config.ts
│   │   └── src/
│   │       ├── main.ts
│   │       ├── App.vue
│   │       ├── modules/
│   │       │   ├── log/                       # 日志管理
│   │       │   │   ├── views/
│   │       │   │   │   ├── OperationLogView.vue
│   │       │   │   │   └── LoginLogView.vue
│   │       │   │   └── index.ts
│   │       │   ├── monitor/                   # 系统监控
│   │       │   │   ├── views/
│   │       │   │   │   ├── ServerMonitorView.vue
│   │       │   │   │   ├── CacheMonitorView.vue
│   │       │   │   │   └── OnlineUserView.vue
│   │       │   │   └── index.ts
│   │       │   └── config/                    # 系统配置
│   │       │       ├── views/
│   │       │       │   └── SystemConfigView.vue
│   │       │       └── index.ts
│   │       └── ...
│   │
│   └── mobile/                                # 移动端 H5
│       ├── package.json
│       ├── tsconfig.json
│       ├── vite.config.ts
│       └── src/
│           ├── main.ts
│           ├── App.vue
│           ├── modules/
│           │   ├── home/
│           │   ├── order/
│           │   └── profile/
│           ├── components/
│           ├── composables/
│           ├── styles/
│           │   └── mobile.scss               # 移动端适配样式
│           └── ...
│
├── tools/                                     # 工具脚本
│   ├── generators/                            # 代码生成器
│   │   ├── module/                            # 模块生成器
│   │   │   ├── index.ts
│   │   │   └── templates/
│   │   │       ├── api.hbs
│   │   │       ├── composable.hbs
│   │   │       ├── view.hbs
│   │   │       └── store.hbs
│   │   └── component/                         # 组件生成器
│   │       ├── index.ts
│   │       └── templates/
│   │           └── component.hbs
│   └── scripts/
│       ├── generate-api.ts                    # 生成 API 类型
│       ├── generate-icons.ts                  # 生成图标组件
│       └── analyze-bundle.ts
│
└── tests/                                     # E2E 测试
    ├── e2e/
    │   ├── auth.spec.ts
    │   ├── user.spec.ts
    │   └── order.spec.ts
    ├── fixtures/
    └── playwright.config.ts

Vue Module 内部结构详解

flowchart TB
    subgraph Vue Module
        API[api/] --> |类型定义| TYPES[types.ts]
        API --> |请求封装| COMPOSABLES[composables/]
        COMPOSABLES --> |数据提供| VIEWS[views/]
        COMPOSABLES --> |数据提供| COMPONENTS[components/]
        STORES[stores/] --> |全局状态| COMPOSABLES
        COMPONENTS --> |组合成| VIEWS
        VIEWS --> |注册到| ROUTES[routes]
    end

Composables 分层设计

flowchart LR
    subgraph 业务层
    A[useUsers] --> B[useCreateUser]
    A --> C[useUpdateUser]
    A --> D[useDeleteUser]
    end
    
    subgraph 通用层
    E[useCrud] --> A
    F[useTable] --> A
    G[usePagination] --> F
    end
    
    subgraph 基础层
    H[useRequest] --> E
    I[useLoading] --> H
    J[useMessage] --> H
    end

五、四框架结构对比总结

层次 Spring Boot Gin React Vue
入口 project-boot/Application.java cmd/server/main.go apps/web/src/main.tsx apps/web/src/main.ts
路由 @Controller + @RequestMapping internal/server/router.go app/router/routes.tsx app/router/routes/
中间件/拦截器 filter/ + interceptor/ internal/middleware/ app/providers/ app/plugins/
业务模块 domain/{module}/ internal/service/{module}/ features/{module}/ modules/{module}/
请求处理 controller/ internal/handler/ features/*/api/ modules/*/api/
业务逻辑 service/ internal/service/ features/*/hooks/ modules/*/composables/
数据访问 repository/ internal/repository/ features/*/api/ modules/*/api/
数据模型 entity/ + dto/ internal/model/ features/*/types/ modules/*/types/
状态管理 stores/ stores/
通用组件 components/ components/
工具函数 util/ pkg/utils/ lib/ + hooks/ lib/ + composables/
配置 resources/application.yml configs/ app/config/ app/config/
类型定义 DTO 类 struct types/ types/
外部集成 integration/ internal/integration/ lib/ lib/
定时任务 job/ internal/job/
测试 test/ test/ tests/ tests/
部署配置 deploy/ deploy/ deploy/ deploy/

六、模块化设计原则

后端模块原则

flowchart TB
    subgraph 模块边界
    A[Controller] --> B[Service Interface]
    B --> C[Service Impl]
    C --> D[Repository Interface]
    D --> E[Repository Impl]
    end
    
    subgraph 跨模块通信
    F[Event] --> G[EventListener]
    H[Feign/gRPC] --> I[Remote Service]
    end
    
    C --> F
    C --> H
原则 说明
单一职责 一个模块只负责一个业务领域
接口隔离 通过接口暴露能力,隐藏实现
依赖倒置 依赖抽象而非具体实现
事件驱动 跨模块通过事件解耦
防腐层 外部系统通过 integration 层隔离

前端模块原则

flowchart TB
    subgraph Feature Module
    A[api] --> B[types]
    A --> C[hooks/composables]
    C --> D[components]
    D --> E[pages/views]
    F[stores] --> C
    end
    
    subgraph Shared
    G[ui components]
    H[common hooks]
    I[utils]
    end
    
    D --> G
    C --> H
    C --> I
原则 说明
功能内聚 相关代码放在同一模块目录
显式依赖 通过 index.ts 导出公开 API
状态下沉 状态尽量放在使用的地方
组件分层 UI 组件 → 业务组件 → 页面组件
类型先行 先定义类型,再实现逻辑