前后端双应用特性
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_ORIGINS与DOMAIN_WHITELIST,并在前端使用相同的 API 域名或通过 Nginx 反代统一入口。