Fantastic-admin 基础版全解析:面向 AI 编程的 Vue 3 管理系统框架

原创2026-10-02 20:39:421,685 阅读
文章标签:前端AI 技能/插件

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 辅助开发中后台项目的团队来说,这是一个值得直接上手的基础版方案。

登录后查看全文
basic