EBEasyBuild Docs
文档/中后台/EasyBuild-Admin

中台管理系统前端项目介绍与开发手册

新一代中后台管理系统前端脚手架说明文档阅读时间 ~25 min

一、项目定位

EasyBuild Admin 是一套业务无关的企业级中后台前端脚手架。它提供的不是某一个具体的业务系统,而是一套 可复用、可扩展、可快速交付 的通用中后台解决方案。

无论是零售电商、仓储物流、内容运营、企业 OA,还是任何需要后台管理的业务场景,都可以基于此脚手架快速搭建,实现从 0 到 1 的高效落地。

  • 业务无关:所有菜单、页面、权限均由后端动态下发,前端不硬编码任何业务逻辑。更换一套后端接口,它就是另一个全新的管理平台。
  • 按需组装:脚手架内置了多种通用业务模块(权限管理、基础数据、内容运营、系统配置等),均可根据实际业务自由选择、裁剪或扩展。后端决定“有哪些模块”,前端自动生成对应菜单与导航。
  • 即插即用:新增一个业务模块,只需创建页面文件 + 后端注册菜单资源,前端侧边栏自动出现新菜单,无需修改任何路由配置文件。
  • GitHub 仓库:https://github.com/jackliuyijun/easybuild-admin
  • npm 包:https://www.npmjs.com/package/easybuild-admin

二、核心亮点 — 动态菜单与业务模块灵活组装

后端驱动的动态菜单系统

这是本脚手架 最核心的设计理念 —— 前端不决定“有什么菜单”,后端说了算。

  1. 用户登录成功后,前端自动向后端请求菜单资源接口
  2. 后端根据当前用户的角色和权限,返回该用户可见的菜单资源树(包含菜单名称、路径、排序、层级关系等)
  3. 前端自动将后端返回的菜单数据转换为路由配置,动态渲染侧边栏导航
  4. 菜单数据智能缓存 30 分钟,避免重复请求,页面切换零延迟

开箱即用的企业级能力

  • 动态菜单 & 权限:前端零配置即可实现菜单级权限控制。
  • 多主题 & 暗黑模式:内置 20+ 精心调校的主题色,深浅模式一键切换。
  • 统一 CRUD 模式:搜索 + 表格 + 分页 + CRUD 操作,统一交互范式。
  • 类型安全全链路:从 API 响应类型及 Store 状态到组件 Props,TypeScript 全覆盖。

三、技术架构概览

坚持 “选最新的、用最稳的” 原则,所有技术选型均为当前社区最活跃、生态最健全的方案:

领域技术方案核心优势
应用框架Next.js 15 + React 19利用 React Server Components (RSC) 优化首屏并行渲染。
类型系统TypeScript 5.x全链路类型安全,从 API 到组件一气呵成。
UI 体系Shadcn/ui + Radix UI + Tailwind CSS无障碍合规、主题灵活、零运行时 CSS 开销。
状态管理Zustand + TanStack React Query v5极简 Store + 智能服务端缓存,告别样板代码。
表单引擎React Hook Form + Zod高性能非受控表单 + 声明式校验。
数据表格TanStack Table v8配置化表格逻辑,支持虚拟滚动及复杂元数据渲染。
HTTP 通信Axios (统一封装)拦截器链式处理,Token 自动注入,异常统一兜底。

六层解耦架构

  1. Middleware 层:负责全局路由守卫、权限拦截及请求预处理。
  2. Layout 层:侧边栏、顶栏、面包屑、主题引擎、通知中心。
  3. 业务模块层 (后端动态驱动):后端下发菜单 → 前端自动渲染 → 模块自由组合。
  4. 通用能力层:高级组件封装,如 CustomTable、CustomForm、FileUpload 等。
  5. 基础 UI 层 (Shadcn/ui):40+ 无障碍基础组件,统一设计语言。
  6. 数据通信与状态管理层:Axios 封装,Zustand (App/Sidebar) 与 React Query 缓存。

四、自定义组件体系

脚手架内置了一套精心设计的 高级业务组件,封装了中后台最常见的交互模式:

  • CustomForm(声明式表单引擎):支持 JSON 配置,涵盖16+字段类型,内置Zod校验。支持Grid自适应布局、字段联动、数据转换及远程搜索。
  • CustomTable(配置化数据表格):列配置驱动,支持虚拟化、自定义渲染、左右固定列、分页与行选择集成,并支持边框样式定制及其专属空状态展现。
  • CustomDialog / ConfirmDialog:多尺寸内置最大化切换机制,独立区分区(Header/Content/Footer)以响应不同弹窗状态;二次操作提供安全确认流的危险预警。
  • FileUpload(文件上传组件):支持图/视/文等多种流文件的精准控制,开放多图排序与直观播放和阅览接口。
  • MultiSelect & DateRangePicker:支持远程抗抖多段搜索,日历端全面对准中英文系统精确锁定时间颗粒度。
  • Notifications(统一通知系统):四形态语义囊括场景应用:showMessageshowErrorshowWarningshowLoading

五、获取项目

TIP
环境要求:Node.js >= 18.17.0

方式一:使用 CLI 命令创建(推荐)

一行命令即可创建项目,自动完成模板下载、项目信息替换、Git 初始化和依赖安装:

bash
npx easybuild-admin my-project

也可以通过参数跳过交互,直接创建:

bash
# 指定项目名 + 描述 + 包管理器
npx easybuild-admin my-project -d "我的管理后台" --pm yarn

# 只下载模板,不初始化 git 也不安装依赖
npx easybuild-admin my-project --skip-git --skip-install

方式二:手动下载

如果不使用 CLI,也可以直接从 GitHub 获取代码:

bash
git clone https://github.com/jackliuyijun/easybuild-admin.git my-project
cd my-project
yarn install

开发环境常用命令

bash
# 安装依赖 (Yarn v4)
yarn install

# 启动开发服务器 (默认端口: 4000)
yarn dev

# 生成生产环境构建产物
yarn build:prod

# 静态代码检查与质量控制
yarn lint

六、目录结构说明

text
src/
├── api/             # API 模块化定义,按业务域拆分文件 (e.g., auth.ts, user.ts)
├── app/             # App Router 路由。包含 layout.tsx, page.tsx 及 api 路由
├── components/      # 组件库
│   ├── ui/          # 基类原子组件 (Shadcn/ui)
│   ├── custom/      # 核心业务高级组件 (CustomForm, CustomTable 等)
│   └── icons/       # 内部使用的图标资源
├── config/          # 全局静态配置文件 (如主题配色、环境常量)
├── constants/       # 业务常量声明 (枚举、响应码等)
├── hooks/           # 通用的自定义 Hooks 及 React Query 的封装
├── lib/             # 外部库实例化 (Axios, Lucide, Crypto-JS 等)
├── store/           # Zustand 状态切片定义
├── styles/          # Tailwind 指令、全局 CSS 变量、自定义 Animations
├── types/           # 全局 TypeScript 类型声明 (.d.ts)
└── middleware.ts    # Next.js 中间件逻辑

七、开发规范与技术细节

1. 编码约定

  • 组件定义:统一使用函数组件与 Arrow Functions。
  • 文件命名:组件目录使用 PascalCase;Hooks 使用 camelCase 且以 use 开头;类型文件以 .types.ts 结尾。
  • Props 调用:必须声明接口 (Interface) 或类型 (Type),严禁使用 any
  • 优先解耦:尽量编写 Dumb Components,将业务逻辑抽离至自定义 Hooks。
  • 配置驱动:高级组件必须支持通过 JSON 配置项完全控制其渲染行为。

2. 与后端对接规范设计

所有 API 请求遵循统一的 请求-响应-异常 三层处理机制:

  • 请求层:Axios 拦截器自动注入 Token 请求头,后端无需关心前端如何传递认证信息。
  • 异常层:前端自动处理 UN_LOGIN (跳回登录)、网络超时、业务错误弹窗兜底,禁止在页面内重复编写 try-catch
json
// 后端接口统一返回标准结构:
{
  "code": "OK",          // 状态码:OK / UN_LOGIN / UN_AUTH / ERROR
  "data": { ... },       // 业务数据
  "msg": "操作成功",      // 提示信息
  "count": 100           // 分页总数(列表接口)
}

所有业务模块的接口遵循 统一命名规范,例如 /{domain}/{module}/queryPage (分页查询)、/{domain}/{module}/addOrEdit (新增/修改)、/{domain}/{module}/disable (状态切换)、/{domain}/{module}/delete (删除)。

八、模版使用指南 — 创建后需改动的文件

使用本模版创建新项目后,请按照以下清单逐一修改,完成项目初始化。

1. 项目基础信息

文件需改动项说明
package.jsonnameversion"easybuild-admin" 改为你的项目名称,版本号按需设置。
src/app/layout.tsxmetadata.titlemetadata.description修改浏览器标签页标题与 SEO 描述,替换 "EasyBuild Admin - 易构" 为你的项目名称。
src/config/login/login-config.tsnamedescriptionsubDescription登录页的品牌名称和描述文案,直接替换即可。
public/favicon.ico网站图标替换为你自己的 Favicon。

2. 环境变量与接口地址

文件需改动项说明
.env.developmentNEXT_PUBLIC_API_URLNEXT_PUBLIC_APP_NAMENEXT_PUBLIC_UPLOAD_API_URL开发环境的后端 API 地址和文件上传地址。
.env.test同上测试环境配置。
.env.production同上生产环境配置。
src/config/api-url.tsAPI_URLS 对象核心文件。删除模版中的示例接口路径(如 brand、banner 等),替换为你自己的业务接口地址。auth 部分如果后端的规则相同可以保留。

3. 业务页面与 API 模块(需删除 / 替换)

模版内置的以下目录包含 示例业务代码,创建新项目时应 全部删除 并替换为自己的业务模块:

目录 / 文件说明
src/app/base/示例:品牌、分类、分组、标签管理页面
src/app/commodity/示例:商品、SPU 管理页面
src/app/operation/示例:Banner 运营管理页面
src/app/order/示例:订单、退款管理页面
src/app/customer/示例:用户/会员管理页面
src/app/businesses/示例:商超管理页面
src/app/system/示例:字典管理页面
src/api/ 中的业务文件如 goods.ts、banner.ts 等。按需新增API。请 保留 http.ts(Axios 封装)和 upload.ts(文件上传)。
src/types/ 中的业务类型如 goods.ts 等。请 保留 api.ts(通用响应)和 token.ts(Token)。
TIP
可保留的通用模块src/app/auth/(部门/角色/员工权限管理)和 src/app/login/(登录页)属于通用鉴权能力,如果后端接口兼容可直接复用。

4. 菜单图标与颜色映射

文件需改动项说明
src/config/routes.tsiconMapcolorMap菜单图标和颜色由后端下发的 resourceId 匹配。删除示例映射,新增对应的图标(从 lucide-react 导入)和颜色。

5. 可选调整项

文件需改动项说明
src/config/constants.tsAPI_CODE如果后端返回的响应状态码不同(如 SUCCESS 替代 OK),需在此修改。
src/config/theme-colors.ts主题色配置可新增/删除主题配色方案,或修改默认主题。
src/config/pagination.tsDEFAULT_PAGE_SIZEPAGE_SIZE_OPTIONS分页默认值调整。
src/middleware.ts路由守卫规则当前仅放行 /login,如需配置请修改。
src/lib/auth.tsToken 存储键名如果 localStorage 键名不同需调整。
src/api/http.ts请求头 / 超时配置调整 Token 请求头名称及默认超时。

快速上手检查清单

text
✅ 1. 修改 package.json 项目名
✅ 2. 配置三个 .env 文件的 API 地址
✅ 3. 修改 login-config.ts 和 layout.tsx 中的品牌信息
✅ 4. 删除 src/app/ 下的示例业务页面
✅ 5. 清理 src/api/ 和 src/types/ 中的示例文件
✅ 6. 在 api-url.ts 中定义自己的接口路径
✅ 7. 在 routes.ts 中配置菜单图标映射
✅ 8. 替换 public/favicon.ico

九、后端接口配合说明

需要后端接口配合,后端接口示例项目地址:https://github.com/jackliuyijun/easybuild-admin-api.git

TIP
clone 项目到本地,启动项目接口为 easybuild-admin 示例项目提供接口服务。
— END —