Skip to content

前后端双应用特性

DoraCMS 提供用户端与管理端两个 Vue 3 应用,后端统一由 EggJS 提供 API。此页聚焦两端的职责、技术栈和权限联动,运行脚本与端口详见 Monorepo 开发

TL;DR

  • user-center 面向访客,admin-center 面向运营;共用 EggJS API
  • 权限联动靠 permissionCode:管理端按钮与后端 PermissionRegistry 一致,角色授权直接用 permissionCode
  • 本地默认端口:3000(user)、5173(admin)、8080(API)

应用角色

  • user-center:面向访客/会员的前台站点
  • admin-center:面向运营/管理员的后台控制台
  • server:统一的 API 层,支撑双端,适配 MongoDB/MariaDB

技术栈

  • Vue 3 + Vite(user-center / admin-center)
  • TypeScript(admin-center 默认)
  • UI:Element Plus;样式:UnoCSS + Sass(admin-center)
  • 状态管理:Pinia;国际化:Vue i18n
  • 可视化:Echarts、@antv/g2(admin-center 图表)
  • 后端:EggJS 3.x,JWT 认证,Redis 缓存可选

协作与联动

  • 运行与端口:请参见 Monorepo 开发(脚本表、端口、构建方式集中在那里)
  • API 对齐:后端通过 Repository/Adapter 支持 MongoDB 与 MariaDB,前端调用统一接口,无需感知数据库类型
  • 权限联动:管理端菜单/按钮填写 permissionCode/httpMethod,对应后端 PermissionRegistry(详见 /architecture/permission-control);角色授权直接使用 permissionCode 作为节点 ID,前后端共享同一权限枚举

权限与前端联动

  • 管理端菜单/按钮会填写 permissionCode/httpMethod,与后端 PermissionRegistry 对齐(见 /architecture/permission-control
  • 角色授权时按钮 ID 直接取 permissionCode,前后端共享同一权限枚举,避免接口漂移

部署提示

  • 本地开发直接使用 pnpm 脚本;生产建议使用 Docker 方案(见 Docker 部署),统一暴露 8080 端口
  • 确保环境变量中配置 CORS 域名与 APP_KEYS/SESSION_SECRET,避免双端调用出现跨域或安全告警

常见问题 FAQ

  • 如何在前端新增权限点?
    先在后端 permission/definitions 添加 permissionCode,再在管理端按钮填写同名 permissionCode/httpMethod,部署后刷新权限缓存。

  • 两个前端的技术栈有差异吗?
    都基于 Vue 3 + Vite;admin-center 默认使用 TypeScript、Element Plus 与 UnoCSS,user-center 可按需扩展。

  • 如何避免跨域问题?
    在后端配置 CORS_ORIGINSDOMAIN_WHITELIST,并在前端使用相同的 API 域名或通过 Nginx 反代统一入口。