# qiankun-TMVC **Repository Path**: td_code/tmvc ## Basic Information - **Project Name**: qiankun-TMVC - **Description**: 基于qiankun+vue-element-admin 的微前端工程; 针对VUE对qiankun的依赖注入进行二次封装,使用更简单; 【完整基座及子应用工程代码】; 完整的说明文档都在doc中,pdf形式体现。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: http://www.aigoubuluo.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 43 - **Created**: 2024-10-12 - **Last Updated**: 2024-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于 1、qiankun+vue elementui admin 2、qiankun+React antd admin 3、qiankun+…… 的微前端应用改造 ## 前言 ``` sh 使用技术栈qiankun将vue-elment-admin框架打造为微前端基座处理。 本项目文件目录包含:micro-main 是主要项目、micro-con 是子项目。 ``` ### 线上演示 主应用Demo:[点击进入](http://tmvc.hmmui.com:8089/) 微应用Demo:[点击进入](http://tmvc.hmmui.com:9999) - 简单介绍一下使用的技术栈,此架构所使用主要两个开源项目以下是详细介绍: >(1)qiankun 是蚂蚁金服开源的一套完整的微前端解决方案。具体描述可查看[文档](https://qiankun.umijs.org/zh/) 和 [Github](https://github.com/umijs/qiankun) >(2)vue-elment-admin 是用于管理界面的生产就绪前端解决方案。它基于vue并使用 UI Toolkit element-ui,具体可查看[文档](https://panjiachen.github.io/vue-element-admin-site/)和[Github](https://github.com/PanJiaChen/vue-element-admin) [在线查看Gitee](https://panjiachen.gitee.io/vue-element-admin/) 国内用户可访问该地址在线预览 - 结合以上内容,下面将通过一个微服务Demo 介绍 Vue 项目如何接入 qiankun,和微应用如何完美注入到微服务中代码地址: ### 其他技术栈 [npm](https://www.npmjs.com/) [WebPack](https://webpack.docschina.org/) [vue](https://github.com/vuejs/vue) [element UI](https://github.com/ElemeFE/element) ### 微前端开源下载地址 [下载地址](https://gitee.com/tmvc/tmvc) ### 微前端工具包 [下载地址](https://gitee.com/tmvc/tmvc-utils.git) ## 微服务基座说明 #### 1. 基座说明 | 名称 | 技术栈 | 框架| | :----: |:----: |:----: | | micro-main | VUE、Qiankun | vue-elment-admin | ``` sh 本文使用的是 qiankun2.0 之后的版本和方法,底层使用vue-elment-admin、详细描述可查看上方连接。 ``` #### 2.命令操作 >注入依赖 ``` sh $npm install 全局注入 $npm install tmvc-base 全局注入基座依赖文件 //本地如果已有包含qiankun的应用可直接执行此命令 $npm install qiankun ``` #### 3. 安装下载配置依赖文件 >依赖文件下载[micro-router下载地址](https://gitee.com/aigoubuluo_admin/micro-router.git) ``` sh 导入子应用配置文件至src目录下: 在将将下载后的文件microRouter文件夹复制到项目中的src目录下 ``` ``` vue ``` #### 4. 添加子应用挂载节点 ``` vue 在src/layout/components/AppMain.vue 加入以下:
``` #### 5. 修改路由配置文件 >微应用配置路由[下载地址](https://gitee.com/aigoubuluo_admin/micro-router.git) ``` sh 在src/router/index.js添加以下配置: $ import startQiankun from 'tmvc-base'// 注入乾坤基座配置 // 调用qiankun启动服务 startQiankun() ``` > 微应用路由文件 ``` sh 创建在 src/router/modules/微应用路由名称 在将文件注入到 src/router/index.js当中。 ``` #### 6. 路由说明 > 2.6.1 基座路由说明 ``` sh 在基座配置子项目文件当中路径为:src/microRouter.js 文件内容的name与activeRule的名称必须一致例子如以下: { name: 'vue-son', //微应用名称 entry: VUE_SON_APP,//微应用服务地址 container: '#Appmicro',//基座id activeRule: '/vue-son'//访问名称,注意必须和微应用名称相同 }, ``` > 微应用路由设置如以下 ``` sh 路径为:src/modules/vue-son-menu.js 对应的基座当中设置的微应用名称,微应用路由配置必须与配置的microRouter.js当中的“name“对应起来,可参考以下例子: const appRouter = { path: '/vue-con', component: Layout, redirect: 'doc1', name: 'vue-con', meta: { title: '微·子系统2', icon: 'table' }, children: [ { path: '/vue-son', children: [ { path: 'dashboard', name: 'Dashboard', meta: { title: '子应用·测试页面4', icon: 'menuSon' } } ] }, { path: '/vue-son/form', children: [ { path: 'form', name: 'Form', meta: { title: '子应用·测试页面5', icon: 'menuSon' } } ] } ] } export default appRouter ``` ## 微应用注入说明 ```sh 微应用例子是以目前主流的框架vue-elment-admin框架为主,基于qiankun底层的微前端框架,进行了生命周期、通讯、依赖等一系列封装,方便维护及快速注入到微应用,仅供参考。详细框架介绍可参考前言篇里内容。 ``` #### 1. 微应用注入说明 微应用底层使用vue-elment-admin框架,详情可查看前言里的介绍。 | 名称 | 技术栈 | 框架| | :----: |:----: |:----: | | micro-son | VUE| vue-elment-admin | #### 1.命令操作 >注入依赖 ``` sh $npm install 全局注入 $npm install tmvc 全局注入微应用依赖文件 ``` #### 2.main.js改造 >在src/ mian.js 底部注入以下文件 ``` sh // 微前端配置文件注入 import tmvc from 'tmvc' // name 导出微应用生命周期 const { bootstrap, mount, unmount } = tmvc.microMain() export { bootstrap, mount, unmount } ``` #### 3.vue-config.js 依赖文件 >在vue-config.js配置底部复制以下代码,供微应用使用。 *注意路径一定要写对否则会启动报错 ``` sh // 微前端子项目配置注入 const { microConfig, headers } = require('./src/microApp/micro-config.js') module.exports.devServer.headers = headers// 配置跨域 必须 module.exports.configureWebpack.output = microConfig// umd格式注入 必须module.exports.publicPath = `//localhost:${port}`// 端口号配置 不是必须设置 ``` #### 4.左侧菜单隐藏处理 每个独立的微应用都有属于自己的菜单栏,那么我们注入到“微服务“里时需要将菜单隐藏处理,这里我做了以下操作: 以目前项目里“ /src/layout/index.vue“为实例: >Data里声明以下: ``` sh isMicroApp: window.__POWERED_BY_QIANKUN__// 配置微前端菜单显示与否 ``` >view层展示以下: ``` vue
``` 著作说明:TMVC团队[博客地址访问](https://blog.csdn.net/tamil2021/article/details/119332074) ### 致谢 (Acknowledgements) - [vue-cli](https://github.com/vuejs/vue-cli) - [qiankun](https://github.com/umijs/qiankun) - [npm](https://www.npmjs.com/) - [WebPack](https://webpack.docschina.org/) - [vue](https://github.com/vuejs/vue) - [elementUI](https://github.com/ElemeFE/element) - [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) - [基于React+antd实现后台模板](https://github.com/z-9527/react-admin-master)