Fantastic-admin 基础版全解析:面向 AI 编程的 Vue 3 管理系统框架
Fantastic-admin 基础版全解析:面向 AI 编程的 Vue 3 管理系统框架
Fantastic-admin 是一个面向 AI 编程场景设计的管理系统框架(基础版仓库),以 Vue 3 生态为底座,将路由、权限、主题、布局、插槽、快捷键等中后台高频能力沉淀为可配置、可扩展的工程化能力,并通过内置的 Skills 体系让 AI Agent 能按规范完成页面生成、路由生成、表单构建等开发任务。读完本文,你将掌握该框架的 monorepo 结构、安装运行方式、核心配置体系(settings 包)、布局插槽机制与主题定制入口,并理解它如何为 AI 编程提供"工程底座"。
项目定位:为什么叫"面向 AI 的管理系统框架"
从仓库根目录的 README.md 可以看到,项目对自己的定位是一句话:面向 AI 的管理系统框架。这并非营销口号,而是由两件事支撑的:
- AI 友好的工程底座,内置多个 Skills:仓库
skills/目录下内置了 9 个面向 AI Agent 的技能包(详见下文"Skills 体系"一节),覆盖 CRUD 页面生成、表单构建、路由生成、插槽创建、状态仓库生成、主题定制等高频开发场景; - 清晰的约定与配置化能力:框架把管理系统的通用问题(导航、主题、顶栏、标签栏、权限、页面保活、国际化)抽象成可配置项,AI 或开发者只需改配置即可获得对应行为,而不是改框架源码。
README 同时说明,本仓库为基础版,部分能力属于专业版(README 特点一节标注"部分为专业版能力"),仓库内代码是基础版的实际实现。
仓库结构与技术底座:pnpm workspace 下的多应用 monorepo
从 package.json 与 pnpm-workspace.yaml 可以确认这是一套标准的 pnpm monorepo:
- 根包名
fantastic-admin,当前版本6.4.0,packageManager: pnpm@12.6.0; - workspace 包含
apps/*(应用)与packages/*(共享包)两部分; - Node 版本要求为
^22.22.2 || ^24.15.0 || >=26.0.0。
apps 目录下的 9 个应用(对应 README"自由选择喜爱的三方 UI 库"这一特性):
| 应用目录 | UI 库 | 依赖版本(来自 pnpm-workspace.yaml catalog) |
|---|---|---|
apps/core |
shadcn 风格(基于 reka-ui) | reka-ui ^2.10.5 |
apps/core-ant-design-vue |
Ant Design Vue | ant-design-vue ^4.2.6 |
apps/core-antdv-next |
antdv-next | antdv-next ^1.5.6 |
apps/core-arco-design-vue |
Arco Design Vue | @arco-design/web-vue ^2.58.0 |
apps/core-element-plus |
Element Plus | element-plus ^2.14.6 |
apps/core-naive-ui |
Naive UI | naive-ui ^2.45.3 |
apps/core-tdesign |
TDesign | tdesign-vue-next ^1.20.8 |
apps/core-vexip-ui |
Vexip UI | vexip-ui ^2.3.40 |
apps/example |
综合示例 | — |
也就是说,同一套框架逻辑分别与 7 个三方 UI 库 + 1 套 shadcn 风格组合出 8 个"换肤版"应用,外加一个内容更丰富的示例应用。从各 apps/core-* 与 apps/core 的目录对比(apps)可以看到,它们的 src/ 结构完全同构——api、components、layouts、router、store、views 等目录一一对应,这正是"一套框架、任意 UI 库"的工程实现方式。
packages 目录下的共享包(packages):
@fantastic-admin/components:基础组件库(src/basic 下含 400+ Vue 组件);@fantastic-admin/composables:组合式函数(pagination 等);@fantastic-admin/copyright:版权信息;@fantastic-admin/hotkeys:快捷键体系(createHotkeys / registry / types);@fantastic-admin/iconify-tools:Iconify 图标工具;@fantastic-admin/settings:全局配置体系(下节详解);@fantastic-admin/themes:主题变量;@fantastic-admin/types:共享类型。
README 宣称的技术栈为 Vue 3.6 / Vite 8 / Pinia / UnoCSS / VueUse / TypeScript / ESLint / Stylelint;仓库 pnpm-workspace.yaml 的 catalog 中对应的实际版本为 vue ^3.5.43、vite ^8.3.1、typescript ^6.0.3、pinia ^4.0.3、unocss ^66.10.5,并统一采用 catalog: 管理依赖版本,保证所有应用与包共享同一套依赖约束。
安装与运行:下载稳定版,一条命令跑起多应用
README 特别提示:直接拉取源码可能会包含未发布的内容,推荐从 Github Releases 页面下载稳定版本的压缩包。
拿到代码后,运行方式如下(根 package.json 的 scripts):
pnpm install # 安装依赖(preinstall 会强制只允许 pnpm)
pnpm dev # 开发模式
pnpm build # 构建
pnpm serve # 本地预览构建产物
这三个命令实际都经由 tsx scripts/cli.ts --mode=<dev|build|serve> 执行。阅读 scripts/cli.ts 可以看到它的机制:
- 自动扫描应用:遍历
apps/*下带有 package.json 的目录,按脚本名匹配(dev/dev:*、build/build:*、serve/serve:*)收集可执行应用; - 交互式选择:基于
@clack/prompts实现命令行选择器——dev与serve为单选(一次跑一个应用),build为多选(可同时构建多个应用); - 透传执行:最终以
pnpm --filter <packageName> run <script>方式在对应应用内执行,同时注册了SIGINT处理以正确中断子进程; - 命令行参数:支持
--mode=dev、--mode dev、-m=dev、-m dev四种写法,传入非法 mode 或--help时会输出用法说明。
例如要单独启动 Element Plus 版应用,可以:
pnpm --filter @fantastic-admin/core-element-plus dev
Skills 体系:为 AI Agent 准备的 9 个技能包
这是"AI 友好"最直接的体现。仓库 skills 目录下内置了 9 个 Skill,每个目录均含 SKILL.md 规范文档,部分还带有 references 参考文档:
| Skill | 用途 | 参考文档 |
|---|---|---|
fa-crud-page-generator |
CRUD 页面生成 | templates.md |
fa-feedback |
反馈类能力 | — |
fa-form-builder |
表单构建 | templates.md |
fa-framework-settings |
框架设置 | app-settings.md、menu-settings.md、page-settings.md、tabbar-settings.md、theme-settings.md、toolbar-settings.md、topbar-settings.md |
fa-page-optimizer |
页面优化 | components-catalog.md、optimization-patterns.md |
fa-route-generator |
路由生成 | examples.md、route-meta.md |
fa-slot-creator |
插槽创建 | slot-positions.md |
fa-store-generator |
状态仓库生成 | store-patterns.md |
fa-theme-customizer |
主题定制 | design-styles.md、theme-structure.md |
从这些 Skill 的划分可以看出框架对"AI 协作开发"的工程化思路:把可复用、有固定模式的开发任务(生成路由、生成表单、生成 CRUD 页、创建插槽、定制主题)拆成带规范文档的独立技能,AI Agent 按规范执行,产出与框架约定一致的代码。
配置体系:settings 包的七大配置分组
框架几乎所有的行为开关都集中在 @fantastic-admin/settings 包中。每个应用通过 apps/core/src/settings.ts 作为配置入口:
import { setSettings } from '@fantastic-admin/settings'
export default setSettings({
// 请在此处编写或粘贴应用配置
})
setSettings 会在应用启动时与默认值合并(merge / diffTwoObj 等工具函数见 packages/settings/src/index.ts)。所有默认值定义在 packages/settings/src/default.ts,完整类型与注释见 packages/settings/src/types.ts。以下按七大分组列出核心配置项、默认值与取值范围(均以仓库源码为准):
app:应用级配置
| 配置项 | 默认值 | 取值 | 说明 |
|---|---|---|---|
app.account.auth |
false |
boolean | 是否启用权限验证功能 |
app.routeMode |
'hash' |
'hash' / 'html5' |
路由模式(Hash / HTML5 History) |
app.routeBaseOn |
'frontend' |
'frontend' / 'backend' |
路由数据来源:前端静态路由或后端接口下发 |
app.dynamicTitle |
false |
boolean | 动态页面标题 |
app.rip |
false |
boolean | 哀悼模式,开启后网站整体变灰 |
app.mobile |
true |
boolean | 移动端访问开关,关闭后禁用移动端访问(对应 AppNotSupportedMobile 组件) |
app.home |
{ enable: true, title: '主页', fullPath: '/' } |
— | 主页开关、标题与完整路由路径 |
app.copyright |
{ enable: false, dates: '', company: '', website: '' } |
— | 底部版权信息,路由 meta 中也可单独控制某路由是否显示版权 |
theme:主题配置
| 配置项 | 默认值 | 取值 | 说明 |
|---|---|---|---|
theme.colorScheme |
'light' |
'light' / 'dark' / '' |
颜色方案,'' 表示跟随系统 |
theme.radius |
0.5 |
0 ~ 1 | 界面元素圆角系数 |
theme.colorAmblyopia |
false |
boolean | 色弱模式(色弱友好的配色方案) |
menu:导航菜单配置
| 配置项 | 默认值 | 取值 | 说明 |
|---|---|---|---|
menu.mode |
'side' |
'side' / 'head' / 'single' |
导航模式:侧边栏(含主导航)/ 顶部 / 侧边栏(无主导航) |
menu.mainMenuClickMode |
'switch' |
'switch' / 'jump' / 'smart' |
主导航点击行为:切换 / 跳转 / 智能选择(次导航仅剩一个可访问菜单时自动切换或跳转) |
menu.subMenuUniqueExpand |
true |
boolean | 次导航是否只允许同时展开一个子项 |
menu.subMenuCollapse |
false |
boolean | 次导航默认收起 |
menu.subMenuCollapseButton |
false |
boolean | 是否显示次导航展开/收起按钮 |
menu.hotkeys |
false |
boolean | 导航菜单相关快捷键 |
README 宣称支持 7 款导航菜单模式,用于匹配产品发展的各个阶段;从类型定义看,menu.mode(3 种)与 mainMenuClickMode(3 种)的组合即构成了可配置的菜单行为空间。
topbar / tabbar:顶栏与标签栏配置
topbar.tabbar(默认false):顶栏是否显示标签栏;topbar.toolbar(默认true):顶栏是否显示工具栏;topbar.mode(默认'static'):'static'静止跟随页面滚动 /'fixed'固定顶部 /'sticky'粘性(下滑隐藏、上滑显示);tabbar.icon(默认false):标签是否显示图标;tabbar.hotkeys(默认false):标签栏快捷键。
toolbar:工具栏配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
toolbar.breadcrumb |
true |
面包屑导航 |
toolbar.menuSearch.enable |
true |
导航菜单搜索 |
toolbar.menuSearch.hotkeys |
true |
菜单搜索快捷键 |
toolbar.fullscreen |
false |
全屏切换 |
toolbar.pageReload |
false |
页面刷新 |
toolbar.colorScheme |
false |
颜色主题切换 |
page:页面配置
page.progress(默认true):页面载入进度条(基于 nprogress,依赖见 apps/core/package.json)。
主题系统:18 套默认方案与可扩展的 CSS 变量
README 宣称提供 18 套默认主题方案且可扩展,给不同行业提供专属品牌气质。主题实现集中在 @fantastic-admin/themes 包(packages/themes/index.ts),仓库默认导出 lightTheme 与 darkTheme 两套基础主题变量。
从源码看,主题变量采用 CSS 自定义属性 + oklch 颜色空间 的组织方式:先定义 shadcn 语义色板(--background、--foreground、--primary、--accent、--muted、--border 等),再基于这些变量派生框架各区域的专属变量,例如:
- 主要区域:
--g-main-area-bg - 头部:
--g-header-bg、--g-header-menu-color、--g-header-menu-hover-bg、--g-header-menu-active-bg等 - 主导航:
--g-main-sidebar-*系列 - 次导航:
--g-sub-sidebar-*系列 - 标签栏:
--g-tabbar-*系列 - 工具栏:
--g-toolbar-bg
亮色与暗色主题通过相同结构、不同取值实现(暗色下 --background: 0.145 0 0,菜单文字改用 muted-foreground)。这种"语义变量 + 区域变量"双层结构正是"扩展新主题"的入口:新增主题只需提供一套完整变量值,即可整体换肤,同时与 theme.colorScheme、theme.radius、theme.colorAmblyopia 等配置联动。定制主题的具体规范可参考 fa-theme-customizer 及其 design-styles.md 与 theme-structure.md。
布局插槽体系:19 处预留插槽
README 宣称框架预留了 19 处插槽 用于灵活扩展产品内容。插槽清单定义在 apps/core/src/slots/index.ts 中,共 19 个命名位置:
layout-top / layout-bottom
header-start / header-after-logo / header-after-menu / header-end
main-sidebar-top / main-sidebar-after-logo / main-sidebar-after-menu / main-sidebar-bottom
sub-sidebar-top / sub-sidebar-after-logo / sub-sidebar-after-menu / sub-sidebar-bottom
tabbar-start / tabbar-end
toolbar-start / toolbar-end
free-position
其加载机制非常轻量:useSlots(name) 通过 import.meta.glob('./*/index.vue', { eager: true }) 扫描 slots 目录下与插槽名同名的 index.vue 组件(名称经 pascalCase 转换),找到即渲染该组件,找不到则渲染一个空组件(SlotsInvalidComponent)。也就是说,新增一个插槽内容 = 在 slots 目录下新建一个与插槽名对应的 index.vue 组件,无需改动框架源码。这与 fa-slot-creator 的 slot-positions.md 文档形成了闭环:AI 按文档确定插槽位置,按约定创建组件即可完成扩展。
其他核心能力速览
除了以上系统,README 特点中提及的其余能力也都能在仓库中找到对应实现:
- 页面保活策略:精细可控的页面保活,配合
topbar.tabbar标签栏使用,是后台管理系统的标配能力; - 全方位权限验证:由
app.account.auth开关控制,配合 AppAuth、AppNotAllowed 等组件与路由守卫(apps/core/src/router/guards.ts)实现; - 国际化与 RTL 支持:README 宣称支持,相关配置与组件贯穿于
layouts与store模块; - 快捷键体系:独立为
@fantastic-admin/hotkeys包(packages/hotkeys/src/index.ts),并由菜单、标签栏等配置项统一开关; - 移动端适配:
app.mobile控制移动端访问,浏览器升级提示(browser_upgrade)等页面位于各应用的 public 目录。
生态:围绕 Fantastic 体系的周边项目
README 生态一节列出了三个围绕该框架的周边项目:
- Fantastic-startkit:简单好用的 Vue 3 项目启动套件;
- Fantastic-mobile:让 H5 项目拥有稳固工程底座的移动端套件;
- One-step Console:像导播一样编排工作现场的控制台产品。
三者与基础版同属 Fantastic 生态,可作为上手该框架的补充参考(详见 README.md 生态一节)。
小结
Fantastic-admin 基础版的价值在于把"管理系统开发"这件事做成了可配置、可扩展、可被 AI 按规范执行的工程底座:pnpm monorepo 让一套框架同时对接 7 个主流 UI 库;settings 包把导航、主题、顶栏、标签栏、工具栏、权限、主页、版权等全部行为收敛为几十个配置项;19 处插槽与插槽目录约定让扩展无需改框架;9 个 Skills 把生成类任务规范化,供 AI Agent 直接执行。对于希望快速搭建管理系统、或以 AI 辅助开发中后台项目的团队来说,这是一个值得直接上手的基础版方案。