GoWind 开源生态GoWind 开源生态
首页
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind Toolkit
GitHub
首页
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind Toolkit
GitHub
  • 介绍

    • GoWind Admin 产品介绍
    • GoWind Admin 安装指南
  • 后端文档

    • 后端架构总览
    • 后端核心模块详解
    • 后端 API 与 Protobuf 定义
    • 后端配置与部署
    • 后端扩展开发
  • 前端文档

    • 前端架构总览
    • 前端核心功能详解
  • 二开教程

    • 后端新增业务模块实战教程
    • 前端新增业务页面实战教程
    • 前后端联调完整实战教程
  • 高级教程

    • Lua 脚本扩展实战教程
    • 权限系统深度解析教程
    • 多租户架构实战教程
    • 任务调度与异步处理教程
    • 文件上传与对象存储教程
    • 事件总线与解耦架构教程
    • 前端主题定制与国际化教程
    • 性能优化与监控教程
    • SSE 实时推送
    • 登录策略与安全加固
    • 加密工具实战

前端架构总览

GoWind Admin 前端提供 三个版本 的实现,均对接同一套后端 API,开发者可根据团队技术栈和项目需求选择合适的版本。

一、前端版本概览

版本目录技术栈本地端口说明
Vue3 Vbenfrontend/admin/vue-vbenVue3 + TypeScript + Vite + Ant Design Vue + Vben Admin5666功能最完整,推荐使用
Vue Elementfrontend/admin/vue-elementVue3 + TypeScript + Vite + Element Plus3000轻量纯净版
Reactfrontend/admin/reactReact19 + TypeScript + Vite + Ant Design V67000React 技术栈版本

二、Vue3 Vben 版架构详解

Vben 版本基于 Vben Admin 企业级前端框架构建,采用 Monorepo 架构。

1. 技术栈

类别技术说明
框架Vue 3Composition API + <script setup>
语言TypeScript全量类型安全
构建工具Vite + Turbo快速热更新 + Monorepo 增量构建
UI 组件库Ant Design Vue企业级 UI 组件
状态管理PiniaVue3 官方推荐状态管理
路由Vue Router动态路由 + 权限路由
HTTP 客户端Axios请求/响应拦截器封装
代码规范ESLint + Prettier + Stylelint统一代码风格
包管理pnpm + workspaceMonorepo 工作区管理

2. 项目结构

frontend/admin/vue-vben/
├── apps/                       # 应用目录
│   └── admin/                  # 管理端应用
│       ├── src/
│       │   ├── api/            # API 请求层
│       │   │   ├── service/    # 服务端 API 定义
│       │   │   ├── composables/ # Vue Composable 封装
│       │   │   └── generated/  # 自动生成的 TypeScript 代码
│       │   ├── views/          # 业务页面
│       │   │   ├── app/        # 应用页面模块
│       │   │   ├── dashboard/  # 仪表盘
│       │   │   ├── message/    # 消息页面
│       │   │   └── profile/    # 个人中心
│       │   ├── router/         # 路由配置
│       │   │   └── routes/modules/  # 动态路由模块
│       │   ├── stores/         # Pinia 状态管理
│       │   ├── locales/        # 国际化
│       │   ├── layouts/        # 布局组件
│       │   ├── adapter/        # 适配器
│       │   ├── transport/      # HTTP 传输层
│       │   ├── constants/      # 常量定义
│       │   ├── plugins/        # 插件
│       │   └── utils/          # 工具函数
│       ├── public/             # 静态资源
│       ├── .env.development    # 开发环境配置
│       └── .env.production     # 生产环境配置
│
├── packages/                   # 通用包(Monorepo 共享)
│   ├── @core/                  # 核心功能包
│   ├── constants/              # 共享常量
│   ├── effects/                # 副作用处理
│   ├── icons/                  # 图标库
│   ├── locales/                # 共享国际化
│   ├── preferences/            # 偏好设置
│   ├── stores/                 # 共享状态管理
│   ├── styles/                 # 共享样式
│   ├── types/                  # 共享类型定义
│   └── utils/                  # 共享工具函数
│
├── internal/                   # 内部工具
├── scripts/                    # 构建脚本
├── turbo.json                  # Turbo 构建配置
└── pnpm-workspace.yaml         # pnpm 工作区配置

3. Monorepo 架构

项目采用 pnpm workspace + Turbo 的 Monorepo 架构:

  • apps/admin:具体的应用入口,包含业务代码
  • packages/:共享的包,被应用引用
    • @core:核心 UI 组件和布局
    • constants:共享常量
    • locales:国际化文本
    • stores:共享状态
    • types:TypeScript 类型定义
    • utils:工具函数

4. 启动与构建

# 安装依赖
pnpm install

# 启动开发服务
pnpm dev:antd

# 构建生产版本
pnpm run build:antd

5. 环境配置

文件说明
.env通用环境变量
.env.development开发环境配置(API 地址等)
.env.production生产环境配置

三、Vue Element 版架构

Vue Element 版本是一个轻量级的纯净版实现,不依赖 Vben Admin 框架。

1. 技术栈

类别技术
框架Vue 3
UI 组件库Element Plus
构建工具Vite
CSS 方案UnoCSS
语言TypeScript

2. 项目结构

frontend/admin/vue-element/
├── src/
│   ├── api/            # API 请求层
│   ├── assets/         # 静态资源
│   ├── components/     # 公共组件
│   ├── composables/    # Vue Composable
│   ├── constants/      # 常量
│   ├── core/           # 核心模块
│   ├── directives/     # Vue 指令
│   ├── layouts/        # 布局组件
│   ├── locales/        # 国际化
│   ├── pages/          # 页面组件
│   ├── plugins/        # 插件
│   ├── router/         # 路由配置
│   ├── stores/         # 状态管理
│   ├── styles/         # 全局样式
│   ├── types/          # 类型定义
│   └── utils/          # 工具函数
├── mock/               # Mock 数据
├── public/             # 静态资源
└── types/              # 全局类型

3. 启动

cd frontend/admin/vue-element
pnpm install
pnpm dev

四、React 版架构

React 版本基于 React 19 构建,不依赖 UMI 框架,采用轻量化方案。

1. 技术栈

类别技术
框架React 19
UI 组件库Ant Design V6 + @ant-design/pro-components
路由React Router
状态管理Zustand
构建工具Vite
语言TypeScript

2. 项目结构

frontend/admin/react/
├── src/
│   ├── api/            # API 请求层
│   ├── components/     # 公共组件
│   ├── config/         # 配置
│   ├── core/           # 核心模块
│   ├── hooks/          # 自定义 Hooks
│   ├── layouts/        # 布局组件
│   ├── locales/        # 国际化
│   ├── pages/          # 页面组件
│   ├── router/         # 路由配置
│   ├── stores/         # Zustand 状态管理
│   ├── styles/         # 全局样式
│   ├── types/          # 类型定义
│   └── utils/          # 工具函数
├── build/              # 构建配置
├── mock/               # Mock 数据
└── public/             # 静态资源

3. 启动

cd frontend/admin/react
pnpm install
pnpm dev

五、前端 API 层设计

三个版本的前端共享类似的 API 层设计思路。

1. Vben 版 API 层

Vben 版的 API 层采用 三层结构:

api/
├── generated/          # Protobuf 自动生成的 TypeScript 类型
├── service/            # 原始 API 请求函数(基于生成的类型)
└── composables/        # Vue Composable 封装(带状态管理)

Service 层

直接封装 HTTP 请求,对应后端的每个 Service:

// api/service/user.ts
export function getUserList(params: GetUserListRequest) {
  return request.get<GetUserListResponse>('/admin/v1/user', { params })
}

Composable 层

在 Service 层基础上封装为 Vue Composable,提供响应式状态管理:

// api/composables/user.ts
export function useUserList() {
  const loading = ref(false)
  const data = ref<User[]>([])

  async function fetchList(params: GetUserListRequest) {
    loading.value = true
    try {
      const res = await getUserList(params)
      data.value = res.items
    } finally {
      loading.value = false
    }
  }

  return { loading, data, fetchList }
}

2. 代码自动生成

前端 TypeScript 类型由后端 Protobuf 定义自动生成:

# 生成所有版本的 TypeScript 代码
make ts

生成配置:

  • buf.vue-vben.admin.typescript.gen.yaml - Vben 版
  • buf.vue-element.admin.typescript.gen.yaml - Element 版
  • buf.react.admin.typescript.gen.yaml - React 版

六、前端路由与权限

1. 动态路由

前端路由采用 动态路由 模式:

  • 基础路由(登录、404 等)在代码中静态定义
  • 业务路由根据后端返回的菜单权限动态生成
  • 路由守卫负责权限校验和重定向

2. 权限控制

前端支持三个层面的权限控制:

层面说明
路由级根据用户角色/权限动态注册路由,无权限的路由不注册
菜单级根据权限数据过滤菜单显示
组件级通过权限指令/组件控制按钮等元素的显示隐藏

3. 认证流程

  1. 用户提交登录请求(用户名 + 密码 + 验证码)
  2. 后端返回 Access Token 和 Refresh Token
  3. 前端将 Token 存储到本地(localStorage 或 Cookie)
  4. 后续请求在 Header 中携带 Authorization: Bearer <token>
  5. Token 过期时自动使用 Refresh Token 刷新
  6. 登出时清除本地 Token 并通知后端撤销

七、相关文档

  • 前端核心功能详解
  • 后端 API 与 Protobuf 定义
Edit this page
Last Updated:: 6/4/26, 11:13 PM
Contributors: Bobo
Next
前端核心功能详解