Tagtag Starter 前端采用现代化的架构设计,基于 Vue 3 + TypeScript + Vite 构建,使用 Monorepo 结构管理代码。本文档将详细介绍前端架构的设计理念、技术栈、核心组件和最佳实践。
Tagtag Starter 前端架构遵循以下设计理念:
将 UI 拆分为可复用的组件,每个组件负责一个独立的功能,提高代码复用率和可维护性。
业务逻辑、UI 展示和状态管理分离,使代码结构清晰,易于测试和维护。
充分利用 TypeScript 提供的静态类型检查,提高代码质量和开发效率。
适配不同屏幕尺寸的设备,提供良好的用户体验。
采用代码分割、懒加载、虚拟滚动等优化手段,提高应用性能。
设计灵活的扩展机制,便于添加新功能和集成第三方库。
| 技术 | 版本 | 用途 |
|---|---|---|
| Vue 3 | 3.x | 响应式前端框架,提供 Composition API。 |
| TypeScript | 5.x | 静态类型检查,提高代码质量。 |
| Vite | 5.x | 现代化前端构建工具,提供快速的开发体验。 |
| Pinia | 2.x | Vue 3 官方状态管理库。 |
| Vue Router | 4.x | Vue 官方路由管理库。 |
| Tailwind CSS | 3.x | 实用优先的 CSS 框架,提高样式开发效率。 |
| Shadcn UI | 最新 | 可定制的 UI 组件库,基于 Tailwind CSS。 |
| pnpm | 10.x | 高效的包管理器,支持 Monorepo 结构。 |
| Axios | 1.x | HTTP 客户端,用于 API 请求。 |
| Echarts | 5.x | 数据可视化库。 |
Tagtag Starter 前端采用 Monorepo 结构管理代码,使用 pnpm 作为包管理器。这种结构的优势包括:
多个应用可以共享组件、工具类和配置,减少重复代码。
所有应用使用相同版本的依赖,避免版本冲突。
共享构建配置和脚本,提高开发效率。
团队成员可以更方便地共享和复用代码。
统一版本号管理,简化发布流程。
注意:以下描述均在 cd frontend 后的目录结构基础上进行说明。
frontend
├── apps # 应用层
│ └── tagtag # 主应用
│ ├── public # 静态资源
│ └── src # 源代码
├── packages # 核心包层
│ ├── @core # 核心共享库
│ │ ├── base # 基础设计系统、图标和共享工具
│ │ ├── composables # 通用组合式函数
│ │ ├── preferences # 应用偏好设置管理
│ │ └── ui-kit # UI 组件库
│ ├── constants # 常量定义
│ └── effects # 业务副作用与逻辑封装
└── internal # 内部工具层
├── lint-configs # 代码规范配置
├── node-utils # Node.js 工具函数
├── tailwind-config # Tailwind CSS 配置
├── tsconfig # TypeScript 配置文件
└── vite-config # Vite 构建配置
apps)包含具体的应用实现,每个子目录对应一个独立的前端应用。
apps/tagtag)核心组件:
src/api/: API 请求定义和封装core/: 核心 API(认证、用户、菜单)modules/: 模块 API(IAM、系统、存储)request.ts: Axios 实例配置src/views/: 页面视图组件_core/: 核心页面(登录、个人中心、404 等)dashboard/: 仪表盘页面modules/: 模块页面(IAM、系统、存储)src/router/: 路由配置routes/: 路由定义access.ts: 路由守卫guard.ts: 权限守卫src/store/: Pinia 状态管理auth.ts: 认证状态管理src/layouts/: 布局组件auth.vue: 认证布局basic.vue: 基础布局src/components/: 业务组件src/locales/: 国际化配置langs/: 语言包packages)提供可复用的核心功能和组件,供应用层使用。
子模块:
packages/@core)子模块:
base: 基础设计系统、图标和共享工具design/: 设计系统和设计令牌icons/: 图标库shared/: 共享工具类typings/: 类型定义composables: 通用组合式函数use-is-mobile.ts: 移动端检测use-layout-style.ts: 布局样式管理use-namespace.ts: 命名空间管理use-scroll-lock.ts: 滚动锁定管理use-sortable.ts: 排序功能preferences: 应用偏好设置管理ui-kit: 封装的 UI 组件库shadcn-ui: 基于 Shadcn UI 的基础组件form-ui: 表单组件封装layout-ui: 布局组件封装popup-ui: 弹窗、抽屉等组件封装tabs-ui: 标签页组件封装menu-ui: 菜单组件封装packages/constants)packages/effects)access: 权限控制逻辑common-ui: 通用 UI 组件hooks: 通用 Hooksuse-app-config.ts: 应用配置管理use-content-maximize.ts: 内容最大化管理use-design-tokens.ts: 设计令牌管理use-hover-toggle.ts: 悬停切换管理use-pagination.ts: 分页管理use-refresh.ts: 刷新功能use-tabs.ts: 标签页管理use-watermark.ts: 水印功能layouts: 布局组件plugins: 第三方插件集成echarts: ECharts 图表集成motion: 动画集成vxe-table: 表格集成internal)提供构建、开发和维护所需的工具和配置。
核心组件:
lint-configs/: ESLint, Prettier, Stylelint 等代码规范配置node-utils/: Node.js 工具函数tailwind-config/: Tailwind CSS 配置封装tsconfig/: TypeScript 配置文件
base.json: 基础 TypeScript 配置library.json: 库 TypeScript 配置node.json: Node.js TypeScript 配置web-app.json: Web 应用 TypeScript 配置web.json: Web TypeScript 配置vite-config/: Vite 构建配置封装
使用 Pinia 进行状态管理,将应用状态划分为多个模块,每个模块负责一个独立的功能域。
状态管理流程:
useStore 钩子获取状态Tagtag Starter 前端实现了基于角色的权限控制(RBAC),包括:
v-access 指令控制组件的显示和隐藏AccessControl 组件控制子组件的显示和隐藏v-access 指令控制按钮的显示和隐藏Tagtag Starter 前端支持多语言切换,使用 Vue I18n 实现。
国际化配置:
src/locales/langs/: 语言包文件src/locales/index.ts: 国际化配置使用方式:
<template>
<div>{{ $t('common.save') }}</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
</script>
pnpm installpnpm run devpnpm run buildpnpm run previewv-memo 和 v-once 指令使用 Vitest 进行单元测试,测试组件、工具函数和状态管理。
测试组件之间的交互和 API 调用。
使用 Cypress 进行端到端测试,测试完整的用户流程。
Tagtag Starter 前端架构采用现代化的设计理念和技术栈,基于 Vue 3 + TypeScript + Vite 构建,使用 Monorepo 结构管理代码。这种架构设计具有良好的可扩展性、可维护性和性能,适合构建复杂的企业级应用。
通过本文档的介绍,您应该对 Tagtag Starter 前端架构有了全面的了解。如果您想深入了解某个具体的模块或组件,可以查看相关的源代码和文档。