Skip to content

组件系统

沈孟平
最后更新于 2026-04-23 19:53:53

本模板的通用组件统一存放在 components 目录下,它是单独的一个子包,支持独立构建并发布。 并且本模板的组件均基于 Naive UI 进行封装,样式系统采用 unocss,所以暂不支持样式的 tree shaking

组件地图

这套组件库不是对 Naive UI 的逐个镜像封装,而是围绕中后台高频场景做的“业务增强版”组件。可以按下面的方式理解:

分类代表组件主要解决的问题
页面骨架AtPageContainerAtPageHeaderAtTitle页面结构统一、标题区一致、内容区滚动边界清晰
数据录入AtFormAtSearchAtUploadAtCronInput声明式表单、搜索栏、上传、Cron 表达式输入
复杂选择AtTreeFilterAtMultipleFilterAtComplexSelector树状筛选、多级标签筛选、组织/人员等复杂层级选择
数据展示AtTableAtPaginationAtEmptyAtLoadingAtIconMsg列表请求、分页、空状态、加载态、结果反馈
容器与交互AtModalAtConfirmAtExpandTransitionAtConfigProvider弹窗、二次确认、折叠动画、全局配置
编辑与协议AtMonacoEditorAtMonacoDiffEditorAtSchemaGenerator代码编辑、Diff 对比、JSON Schema 可视化配置
视觉与辅助AtIconAtIconBtnAtLinkAtRuler图标、图标按钮、链接增强、标尺辅助

推荐先看哪些组件

如果你想快速建立对这个组件库的理解,建议优先阅读下面几页:

  1. AtForm:很多高阶组件的基础能力都来自这里。
  2. AtSearch:本质是搜索场景下的 AtForm
  3. AtTable:负责列表页最核心的数据请求、分页、排序、列配置。
  4. AtModal:弹窗编辑、查看详情等场景的统一容器。
  5. AtConfigProvider:统一表格、弹窗和 Monaco 相关的全局行为。

常见组合方式

  • 列表页:AtPageContainer + AtSearch + AtTable
  • 表单弹窗:AtModal + AtForm
  • 复杂人员/组织选择:AtComplexSelectorAtTreeFilter
  • 协议/字段配置:AtSchemaGenerator + AtMonacoEditor
  • 全局兜底:根节点挂载 AtConfigProvider

如何使用

  1. 安装
bash
ni @gupo-admin/components
  1. main.ts 中引入全局样式
ts
import '@gupo-admin/components/style.css'
  1. 按需引入组件使用即可,也可以配置 unplugin-vue-components 插件实现组件的自动引入
ts
Components({
  dts: './types/components.d.ts',
  dirs: ['src/components'],
  extensions: ['vue', 'tsx', 'jsx'],
  resolvers: [NaiveUiResolver(), (name: string) => {
    if (name.startsWith('At')) {
      return { name, from: '@gupo-admin/components' }
    }
  }],
}),

子入口

除了组件主入口,组件库还提供独立的 hooksutils 子入口:

ts
import { useRequest } from '@gupo-admin/components/hooks'
import { opacityColor } from '@gupo-admin/components/utils'

依赖说明

  • 组件内部基于 vuenaive-ui@vueuse/core 等能力构建。
  • monaco-editor 相关组件需要确保项目已安装对应 peer dependency,并按文档完成初始化。
  • 组件库默认输出 es 模块和类型声明,适合在 Vite 项目中直接使用。

Last updated: