Skip to content

前端结构约定

Forge 前端基于 Vue 3.5 + Vite 7 + Naive UI 构建,采用组合式 API(<script setup>)。你需要了解各目录的职责,才能快速定位文件位置。

目录结构

forge-admin-ui/src/
├── api/              # API 接口定义(按模块拆分)
├── components/       # 公共组件
├── composables/      # 组合式 API
├── layouts/          # 布局组件
├── router/           # 路由配置
├── stores/           # Pinia Store
├── utils/            # 工具函数
├── views/            # 页面视图
├── styles/           # 全局样式
└── config/           # 应用配置

各目录职责

目录职责文件命名
api/后端接口定义,按模块拆分user.tsrole.ts
components/可复用公共组件DictSelect.vueFileUpload/
composables/组合式函数useDict.tsusePermission.ts
layouts/布局骨架组件BasicLayout.vue
router/路由表与动态路由生成index.tsguards.ts
stores/Pinia 状态管理user.tspermission.ts
utils/工具函数request.tsencrypt-request.ts
views/页面视图,按模块分子目录system/user/index.vue
styles/全局样式与 UnoCSS 配置variables.scss
config/应用配置app.ts

核心组件速查

组件路径用途
AiCrudPage内建组件零代码 CRUD 页面(配置 api-config + schema)
DictSelect@/components/DictSelect.vue字典下拉选择
DictTag@/components/DictTag.vue字典标签渲染
FileUpload@/components/file-upload/文件上传
AuthImage@/components/common/AuthImage.vue鉴权图片(自动带 Token)
RegionTreeSelect@/components/RegionTreeSelect.vue行政区划树选择
IconSelector@/components/IconSelector.vue图标选择器

API 层约定

  • 统一请求工具import { request } from '@/utils/http'
  • 加密请求import { postEncrypt } from '@/utils/encrypt-request'
  • 接口路径格式METHOD@/api/module/action
  • 占位符格式:id(冒号),不是 {id}
  • 分页参数:前端传 pageNum + pageSize

按钮样式约定

使用 UnoCSS 语义化颜色类:

vue
<a class="text-primary cursor-pointer hover:text-primary-hover" @click="handleEdit(row)">编辑</a>
<a class="text-error cursor-pointer hover:text-error-hover" @click="handleDelete(row)">删除</a>
类名场景
text-primary编辑、查看、授权
text-info详情、统计
text-warning刷新缓存、重置
text-error删除、强制下线
text-success启用、发布、通过

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架