1.4 KiB
1.4 KiB
仓库采用前后端分离的单体结构:
backend/src为 Express API 服务,入口app.js统一挂载 CORS、JSON 解析、bodyLimit中间件,并通过routes/index.js聚合 auth/brands/models/ota/blacklist/otaTargetDevice/shareCodeLogs/users/dashboard 等路由;数据层使用 Sequelize + mysql2,模型集中在models/并导出到models/index.js;外部依赖通过services/抽象(curveClient 调用第三方曲线服务、eqCacheStorage/squiglink 处理 EQ 缓存、measurementStorage/otaStorage 对接 S3、userBootstrap 负责超级管理员初始化);鉴权由middleware/auth.js+utils/jwt.js实现。frontend/src为 Vite + Vue3 + Element Plus SPA,router/index.js集中声明所有页面路由并在beforeEach中做 token 校验与超级管理员权限拦截;api/下每个文件对应一个后端模块的 axios 封装;views/按功能域分目录组织页面,components/存放全局复用组件(ChangePasswordDialog、SidebarLogo、TabsView),layout/index.vue提供侧边栏+标签页布局。- 顶层
docker-compose.yml编排 backend(Node)与 frontend(nginx:alpine 静态托管 dist),共享audio-network网络;.env.example提供环境变量模板。 - 依赖方向单向:前端 → 后端 REST API,后端 → MySQL/S3/Redis/第三方 curve 服务,无跨包反向引用。