基于Midwayjs的管理系统-快速了解
本文用于快速了解本项目的定位、技术栈、开发与部署方式,帮助你尽快上手并进入业务开发。
项目简介
本项目是基于 RuoYi-Vue 后端体系重构的管理系统 API 服务。
当前主版本为 v0.7.x,核心目标是保持中后台系统的常见能力(权限、日志、监控、调度、数据权限等)的同时,采用 Node.js + TypeScript 进行工程化实现。
当前技术栈
- 运行时:Node.js >= 24.0.0
- 后端框架:MidwayJS 4.x(@midwayjs/* 4.1.0)
- 类型与构建:TypeScript 6.0.3,构建工具 mwtsc
- 数据库:MySQL 8+,ORM 使用 TypeORM 0.3.x
- 缓存与队列:Redis 6+,任务队列 BullMQ
- 接口协议:RESTful HTTP,权限与安全能力通过 MidwayJS 注解和中间件实现
项目能力概览
系统内置以下典型后台能力:
- 用户管理
- 部门管理
- 岗位管理
- 菜单与按钮权限管理
- 角色管理与数据权限
- 字典管理
- 参数管理
- 通知公告
- 操作日志与异常日志
- 登录日志
- 在线用户监控
- 调度任务管理
- 服务监控
- 缓存监控
这些能力主要用于中后台系统的账号、权限、监控和运营配置场景。
环境变量与配置说明
项目当前采用 .env 方式管理运行时环境变量,并已拆分为以下文件:
- .env.example:可提交到 Git 的示例模板,用于说明变量结构
- .env.development:本地开发配置(含真实本地账号信息,不提交)
- .env.production:生产环境配置(含生产账号信息,不提交)
典型变量包括:
- 服务端口:PORT
- JWT 配置:JWT_SECRET、JWT_EXPIRES_IN、JWT_REFRESH_EXPIRES_IN
- MySQL 配置:DB_HOST、DB_PORT、DB_USERNAME、DB_PASSWORD、DB_DATABASE
- Redis 配置:REDIS_HOST、REDIS_PORT、REDIS_PASSWORD、REDIS_DB
应用层业务配置统一放在 src/config 目录:
- config.default.ts:公共默认配置
- config.local.ts:本地开发差异配置
- config.unittest.ts:测试环境差异配置
说明:.env 主要承载数据库、Redis、JWT 等外部运行依赖信息,便于不同环境独立维护。
快速开始
1. 安装依赖
npm install
2. 准备环境配置
复制示例文件并生成本地开发配置:
cp .env.example .env.development
随后填写本地 MySQL、Redis、JWT 等真实参数。
3. 初始化数据库
数据库初始化脚本位于 script 目录,可使用:
- script/db_init.sql
- script/db_init_demo.sql
请根据实际业务需要选择执行。
4. 本地开发启动
npm run dev
默认端口通常为 6275,启动成功后可访问本地接口服务进行联调。
构建与生产部署
构建
npm run build
当前项目已完成 TypeScript 构建问题修复, pm run build 应处于可用状态。
生产启动
npm run start
若使用 PM2:
npm run start:pm2
生产环境请提前准备好 .env.production,并确保数据库与 Redis 已就绪。
常用命令
# 本地开发
npm run dev
# 构建
npm run build
# 单元测试
npm run test
# 测试覆盖率
npm run cov
# 代码检查
npm run lint
# 自动修复格式问题
npm run lint:fix
目录结构简要说明
项目主目录结构如下:
src
├── config 应用与业务配置
├── framework 核心框架能力(中间件、异常处理、工具、Token等)
├── modules 业务模块(system / monitor / auth / common / demo)
├── typings 通用类型定义
├── configuration.ts 程序启动与中间件注册入口
└── interface.ts 公共接口声明
script 初始化脚本与运维脚本
docs 项目文档
test 测试代码
dist 构建产物
modules 下一般按功能域拆分,每个模块内部通常包含:
- controller:接口层
- service:业务逻辑层
- model:实体/数据结构定义
epository:数据访问层
前后端协作说明
前端仓库通常包括:
- Vue3 + Element 版本前端
- Vue3 + Ant Design 版本前端
本仓库为后端 API 服务,主要职责:
- 提供 REST 接口
- 处理鉴权与权限控制
- 管理系统基础数据
- 承接日志、监控、调度等后台能力
学习建议
如果你是第一次接触本项目,建议按以下顺序了解:
- 先看 .env.example 与 src/config,理解配置来源
- 再看 src/configuration.ts,理解应用启动与中间件链
- 再进入 src/modules/system,理解业务分层
- 最后结合 script 与部署文档完成环境搭建
这样可以快速建立“配置 -> 启动 -> 业务 -> 部署”的完整认知路径。
常见问题
为什么使用 .env 拆分而不是单文件?
为了将敏感信息(数据库、Redis、JWT Secret)从代码仓库中隔离出去。
.env.example 用于模板说明,.env.development 与 .env.production 用于实际环境运行。
为什么部分文档与 README 细节可能不完全一致?
项目经历了版本升级与结构调整,当前以代码实际状态为准。
若文档与代码冲突,优先以源码、package.json、 sconfig.json 和实际可运行命令为准。
建议的排查顺序是什么?
- 先确认 Node 版本是否满足 >= 24.0.0
- 再确认 .env.development 是否完整
- 然后执行 pm run build
- 最后执行 pm run dev
若构建通过但启动失败,通常为数据库、Redis 连接或 JWT 配置问题。
结语
本文档目标是帮助你用最短时间理解项目全貌并跑通本地开发。
如果你需要进一步了解部署、目录手册或接口设计,可继续阅读项目中的对应专题文档。