/* eslint-disable camelcase */
if ((window as any).__POWERED_BY_QIANKUN__) {
__webpack_public_path__ = (window as any).__INJECTED_PUBLIC_PATH_BY_QIANKUN__
}
import { registerMicroApps, start } from 'qiankun'
import apps from './apps'
registerMicroApps(apps)
export default start
编辑src/main.ts
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import start from './childNodes'
start() // 开启应用
createApp(App).use(store).use(router).mount('#app')
一. 前言
基于架构的调整,前端开始转为微前端。经过调研,决定使用qiankun微服务框架来使用,本文将介绍VUE3+TS+qiankun的实践经过。微服务架构的优势之一在于可以结合不同技术栈的节点,基于技术栈的考虑,此处用的都是vue3。
源码:https://github.com/Kuari/Blog/tree/master/Examples/microFrontend
二. 环境
三. 实践
1. 架构
如上图所示,微服务架构将会由多个节点构成,首先由一个主节点
site_base
连接所有子节点,子节点可以不断拓展。2. 主节点
主节点源码可见于https://github.com/Kuari/Blog/tree/master/Examples/microFrontend/site_base
创建主节点,选择vue3+ts
安装
qiankun
在
src/App.vue
中添加路由和渲染节点在
src/main.ts
中引入子节点配置3. 子节点
子节点源码可见于https://github.com/Kuari/Blog/tree/master/Examples/microFrontend/site_1
此处以
site1
为例,site2
同理。创建子节点,选择vue3+ts
编辑
src/App.vue
编辑
src/views/Home.vue
,修改其内容,写一点标识性的文本创建文件
src/pulic-path.ts
,第一行的注视一定要加,避免eslint对于变量的报错编辑
src/router/index.ts
,此处直接返回routes
,而不是router
,并且修改编辑
src/main.ts
创建文件
vue.config.js
4. 验证
主节点和子节点分别独立运行,但是子节点的地址需要跟主节点配置中子节点对应的地址相同。
在主节点上点击子节点的路由,即可在主节点上访问子节点的页面了!
三. 主节点优化
主节点除了如上配置,可以进行两项优化:
优化后主节点源码可见于https://github.com/Kuari/Blog/tree/master/Examples/microFrontend/site_base_optimize
1. 模块化子节点配置
创建文件夹
src/childNodes
,然后创建文件src/childNodes/apps.ts
创建文件
src/childNodes/index.ts
编辑
src/main.ts
2. 过渡效果
此处的过渡效果采用
NProgress
库,先来安装一波编辑
src/childNodes/index.ts
四. 结语
qiankun
框架确实挺不错的,配置也并不是复杂,但是唯一想吐槽的一点是对于ts的支持感觉不太好/狗头,或许是我写得不够好吧,后面会持续优化使用。五. 参考文档