连接地址:https://gitee.com/fang_xue_liang/vue-platforms
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. 引言

1.1 编写目的

说明本系统在工程层面的总体结构、主要模块职责、构建与插件技术选型仓库目录约定技术优势与工程化收益,供研发、测试、运维及后续扩展子应用时对齐边界与约束。

1.2 范围

在内 不在内(除非另行约定)
Monorepo 内门户、系统管理子应用、共享包 @common/* 的职责划分与协作方式
微前端(Qiankun)激活规则、宿主与子应用边界 具体业务需求说明书、详细测试用例
构建、目录与版本管理策略(pnpm catalog、可选 Turbo);Vite 插件与工程化选型概要

1.3 术语与缩写

术语 含义
宿主 / 主应用 app-portal,负责壳、登录、布局、菜单与权限路由,并挂载子应用
子应用 app-system,独立构建部署的 Vue 应用,由 Qiankun 按 URL 激活
@common/* workspace 内共享包(组件、样式、工具、i18n 等),由各应用以依赖方式引用
HTML Entry 子应用以部署后的 index.html 为入口被宿主拉取解析
catalog pnpm-workspace.yaml 中集中锁定依赖版本的机制

2. 总体架构

2.1 逻辑架构

后端 / 网关(示意)

vue-platform Monorepo

浏览器

app-portal 宿主
登录 / 布局 / 菜单 / 权限

主内容区 #subapp-container

Qiankun 子应用
如 app-system

@common/*
组件·样式·工具·i18n

REST API

2.2 仓库与目录结构说明

本仓库采用 pnpm workspace 管理多包;业务应用集中在 vue-apps/共享能力集中在 vue-common/(多子包),设计文档docs/

2.2.1 顶层一览
路径 说明
vue-apps/app-portal 门户宿主:登录、主布局、路由权限、Qiankun 注册与启动、标签页等
vue-apps/app-system 系统管理子应用:用户/角色/菜单/应用/按钮权限等页面,独立 dev/build,由宿主按路由激活
vue-common 共享库根包(文档站 @common)及 vue-common/* 子包(componentsstylesutils 等)
docs/ 概要设计、微前端、权限菜单、构建插件选型等 Markdown文档
pnpm-workspace.yaml 声明 workspace 包路径 + catalog 统一版本
turbo.json 任务管道与构建缓存(可选;根脚本 build:all 使用 pnpm -r run builddev:all 使用 pnpm --parallel
package.json 聚合脚本、全仓开发依赖(如 ESLint、Turbo)
2.2.2 门户 app-portal/src(摘要)
目录 / 文件 职责
main.js / App.vue 应用入口与根组件
permission.js 路由守卫:Token、菜单拉取、白名单与权限路径校验
assets/ 门户专用静态资源
layout/ 主框架,布局
micro/ microApps.config.ts:子应用注册配置
router/ 路由表
store/ Pinia:modules/ 按域拆分,index.ts 统一导出
utils/ 门户专用工具,如 Axios request 封装
views/ 登录、系统内页、微应用壳组件等
2.2.3 子应用 app-system/src(摘要)
目录 职责
api/ 子应用接口模块
common/ 子应用本地方法
components/ 子应用专用组件
router/ 子应用路由
store/ Pinia:modules/ + index.ts
utils/ 工具方法
views/ 各业务页面(用户列表、角色、菜单管理等)
2.2.4 共享库 vue-common(摘要)
路径 npm 作用域(示例) 职责
vue-common/components/ @common/components Base 系列表格、查询条、图表、流媒体播放器等可复用 UI
vue-common/styles/ @common/styles 全局 SCSS、主题变量、暗色覆盖
vue-common/utils/ @common/utils 权限 session、通用工具等
vue-common/i18n/ @common/i18n 国际化资源与插件封装
vue-common/directives/ @common/directives 如权限类指令
vue-common/src/ (文档站源码) 组件演示、路由与页面,本地 pnpm dev 浏览

各子目录下若有 README.md,说明该目录用途与引用方式;版本与依赖以各包 package.json 及 catalog 为准。

2.3 技术栈(与仓库一致)

  • 前端框架:Vue 3、Vue Router 4、Pinia
  • 构建:Vite 5;微前端:qiankun + vite-plugin-qiankun
  • 工程:pnpm workspace、catalogTurbo 可选(根脚本默认不依赖 Turbo 二进制);TypeScript(各包按需)
  • 国际化与工具vue-i18n@vueuse/core(与 Element Plus、自动导入插件协同)

2.4 插件与构建技术选型(概要)

以下聚焦 Vite 插件与工程化关键依赖版本号以 pnpm-workspace.yaml 的 catalog 为准,逐项设计理由与接入细节见 BUILD_PLIGIN_MODELS.md

类别 选型 在本仓库中的作用
核心构建 vite + @vitejs/plugin-vue 开发期 ESM、生产 Rollup 打包;Vue SFC 编译
开发体验 unplugin-auto-import 自动导入 Vue/Pinia/Router 等 API,减少样板 import
开发体验 unplugin-vue-components + Element Plus Resolver 组件按需解析注册,控制包体
门户构建 vite-plugin-html index.html 注入环境变量与页面元信息
门户构建(可选) vite-plugin-ali-oss 构建产物上传 OSS,适配静态托管流水线
微前端 qiankun + vite-plugin-qiankun HTML Entry、子应用生命周期;Vite 子应用 dev/prod 与宿主对接
资源 vite-svg-loader(如 app-system) .svg 以 Vue 组件形式使用
样式 sasspostcssautoprefixer 主题与原子类、前缀处理
Monorepo pnpm workspace + catalog 单一版本源,降低依赖漂移
任务编排 turbo(可选) turbo.json 定义管线;需要远程缓存时可 pnpm exec turbo run build;默认全量构建为 pnpm -r run build
质量 eslinteslint-plugin-vue@typescript-eslint/parser 静态检查
类型 typescriptvue-tsc TS 与 SFC 类型检查
运行时补充 vue-i18n@vueuse/coreaxiosdayjs 国际化、浏览器/响应式工具、HTTP 等

设计原则简述:构建链以 Vite 官方插件 + 社区成熟 unplugin 为主;微前端 qiankun + 官方桥接插件 降低手写胶水代码;样式 SCSS 主题 + Tailwind 按需 兼顾设计系统与迭代效率;依赖 catalog 集中治理 适配多应用并行演进。

2.5 技术优势与工程化收益

维度 说明
微前端解耦 宿主统一认证、菜单与壳;子应用独立仓库边界清晰,可单独发版、技术栈升级窗口更可控(在约定内)。
共享层复用 @common/* 沉淀组件、样式、工具与 i18n,避免多应用复制粘贴;文档站便于组件契约对齐。
构建与体验 Vite 冷启动与 HMR 适合 Monorepo 多入口并行开发;自动导入与按需组件减少重复代码。
依赖治理 catalog 统一版本,升级一处、全仓可审计;pnpm 节省磁盘与安装时间。
流水线与缓存 可选用 Turbo 对 build 等任务做缓存与拓扑排序;默认根脚本以 pnpm -r 保证 workspace 构建顺序。
权限与路由一致性 门户集中守卫与菜单合并;子应用按钮权限与 session 策略可与 @common/utils 对齐(详见权限相关文档)。
扩展性 新子应用按 Qiankun 约定注册即可挂载;新共享能力优先放入 vue-common 子包并纳入 workspace。

3. 模块与子系统设计

3.1 门户(app-portal)

职责 说明
认证与路由守卫 未登录跳转登录页;登录后拉取用户与菜单;路由与权限白名单见 permission.ts
布局与导航 顶栏、侧栏、标签页等;主内容区提供子应用挂载容器
微前端生命周期 registerMicroApps / start / 预取;配置见 micro/microApps.config.tsmicro/bootstrap.ts
国际化与主题 vue-i18n@common/i18n;主题与暗色变量与 Element Plus 协同

3.2 系统管理子应用(app-system)

职责 说明
业务页面 如用户列表、权限等页面,在宿主内以 URL 前缀(如 /main/system/...)呈现
独立构建 自有 vite.config.tsbase 与 Qiankun 插件配置,可与门户并行 dev
共享能力 按需依赖 @common/*,与宿主共用设计令牌与组件时保持 catalog 版本一致

3.3 共享层(vue-common / @common/*)

子包 用途
components 业务无关或可复用组件(表格、查询条、图表、BaseMpegTsPlayer / mpegts.js 流媒体等)
styles 全局 SCSS、主题变量、暗色覆盖
utils / directives / i18n / assets / tailwind 工具函数、指令、文案、静态资源、Tailwind 预设;组合式能力由业务应用按需依赖 @vueuse/core(catalog 版本)
vue-common src 公共组件文档与演示站点(Vite),便于离线查看组件用法

4. 关键技术方案

4.1 微前端集成(Qiankun)

  • 激活:以 pathname 匹配子应用 activeRule,与菜单跳转的 URL 一致;无权限则不展示菜单,用户不进入对应路径,子应用资源不加载。
  • 宿主启动顺序:在应用初始化时注册微应用并启动 qiankun,具体配置见 app-portal/src/main.js
  • 样式隔离:使用 experimentalStyleIsolation: true 实现样式隔离,具体配置见 app-portal/src/main.js
  • 微应用配置:通过 microApps.config.ts 配置微应用信息,包括名称、入口地址、容器选择器和激活规则。

4.2 路由与权限(门户)

  • 路由表预先定义;菜单与权限由后端(或 mock)下发后与本地路由元数据合并,形成可访问路径集合。
  • 守卫配置见 app-portal/src/permission.js

4.3 依赖与版本管理

  • catalog:单一来源锁定依赖主版本,子包通过 catalog: 引用,升级时改 pnpm-workspace.yaml 后全仓 pnpm install
  • Turbo(可选):turbo.jsonbuild 等任务可声明依赖 ^build;与 pnpm -r run build 拓扑顺序目标一致,按需选用。

4.4 构建与部署(概要)

  • 门户与子应用可 独立产出 静态资源;子应用 base 需与网关或 CDN 路径一致。
  • 门户可选 OSS 上传等插件(见根 README 与门户配置)。
  • 环境变量:门户以 VITE_* 为主,示例见 vue-apps/app-portal/.env.example

5. 接口与数据(概要)

5.1 前端视角的接口

  • 认证:登录、Token 存储与请求头携带(以门户 request 封装为准)。
  • 用户与菜单:登录后拉取用户信息、菜单树;用于侧栏渲染与权限校验。
  • 业务接口:子应用内按模块调用;错误码与分页结构宜与门户约定一致,便于统一拦截与提示。

5.2 数据流(概要)

  • 门户:Pinia 用户与标签等状态 + session 等本地存储(见 storestorageManage)。
  • 子应用:自有状态与接口层;与宿主共享登录态依赖同源 Cookie/Token 策略。

6. 非功能需求(概要)

类别 要求
浏览器 以现代 Chromium /主流浏览器为准;具体最低版本由项目约定
性能 子应用按需加载;门户侧可对微应用 entry 预取;大列表需分页与虚拟化(已有组件能力时复用)
安全 HTTPS 部署;Token 防 XSS策略按公司规范;子应用避免污染宿主全局
可维护性 新子应用须登记 microApps.config.ts;路由 name/path 与菜单配置对齐,避免 401/404 误配

7. 开发与运维要点

场景 命令或说明
仅门户 pnpm dev:app-portal
仅子应用 pnpm dev:app-system
联调微前端 pnpm dev:all(并行启动 app-portalapp-system,见根 package.json
公共组件文档 pnpm dev:vue-common
全量构建 pnpm build:allpnpm -r run build

8. 文档与代码映射

文档 内容
README 快速开始、目录、脚本、环境变量
qiankun微前端使用说明 微前端使用指南、配置说明
git使用说明(submodule) Git submodule 使用指南
本文档 概要设计、目录结构、插件选型概要、技术优势、非功能与引用关系

9. AI coding infra

本期先聚焦落地三部分:AI规范Context管理skills 管理;其余工程化约束后续再补充。

9.1 AI规范(AGENTS.md)

  • 开发前如涉及架构调整、公共能力抽取、目录变更或跨模块联动,需先阅读 context/project 中的设计文档。
  • 所有任务遵循 先 plan、后编码 的基本要求,不跳过分析直接进入实现。
  • 涉及方案设计、页面造型、交互调整时,需先在 context 中补充目标、约束与方案说明。
  • AI 生成内容应可复核、可追踪,避免仅凭猜测直接修改。
  • 不允许直接提交代码,提交代码之与务必与用户确认。
  • 提交代码的message中增加前缀"[AI generated.]",用于区分本批次代码主要由AI完成。
  • 定期更新/Context/Task目录下的开发进度文档。

9.2 Context管理

Project
  • 项目架构.md
  • 概要设计.md
  • 详细设计.md
Team
  • xxx编码规范.md
  • xxx技术要求.md

Task

  • 开发进度.md

9.3 skills

  • skills 设计为软链接,由 .github/.cursor 中的 skill 目录指向统一维护位置,便于 Git 管理与团队共享。
  • 建议按框架能力、业务域知识、调试排障、发布运维、设计规范等维度分类。
  • skills 内容应聚焦可复用步骤、注意事项与示例输入输出。
Logo

分享最新、最前沿的AI大模型技术,吸纳国内前几批AI大模型开发者

更多推荐