DAY4 2025.1.23 乾坤子应用初步(解决子应用进入和返回时CSS加载不出问题)

78 阅读2分钟

DAY4 2025.1.23 乾坤子应用初步(解决子应用进入和返回时CSS加载不出问题)

乾坤子应用:是一种微前端解决方案,由主应用和很多子应用组成,主应用通过乾坤系统的配置实现低耦合的调取子应用,Kmoke项目的“看板”等功能正是基于此实现

根据segmentfault.com/a/119000002…的教程

可以总结为三点:1.创建微应用容器 2.注册微应用 3.启动qiankun 注:渲染顺序是先主应用再子应用,卸载则相反

1.创建微应用容器:按正常流程创建,有路由有界面

2.注册微应用:用qiankun的(自动模式)registerMicroApp注册微应用,有两个重要的步骤

①定义一个apps数组(const apps=[ ]),数组内的元素为对象,其中包含name,container(代表挂载的DOM元素,目前看下来id选择器#居多),entry(微应用入口,通过地址加载微应用)和activeRule(微应用触发的路由规则,一般只有自动模式有)这四个属性。

注意:手动模式loadMicroApp正常没有activeRule这个属性,但是由于自动模式会导致路由的keep-alive失效,所以可以用手动+router.beforeEach守卫来达到自动注册的目的,此时也可以添加activeRule属性。

②registerMircoApp():是注册微应用的函数,第一个参数为apps数组,代表子组件注册信息,第二个参数为全局生命周期钩子

3.启动主应用:一般在主应用的入口main.js里面调用start()启动主应用

4.接下来,连接子应用,每个子应用调用都有bootstrap()(在初始化时调用一次)、mount()(子应用每次进入挂载时调用)、unmount()(子应用每次退出卸载时调用),update(只有手动模式加载微应用时生效)这四个函数应当在子应用的入口main.js里以export导出的方式说明(我看这个教程说是异步的,目前不知道为什么)

关于Kmoke子应用:目前在对于整体项目的观察和阅读中,发现如下几组支持乾坤子应用的组合(组合起来方便阅读) ①main.js:定义子应用4个属性

②micro-app.js和store.js:前者引用后者,并利用.map为每个子应用添加container和props属性,并返回新数组;后者利用Vue.observable定义全局变量,定义获取state的方法下发到子应用

③qiankunapp.js:Vuex整体子应用相关状态管理

④home.vue:作为公共组件,有一个id为repAppContainer的DOM元素div,我推测或许在路由部分有一个匹配机制,能更改这个div,或者更改不同子应用的container属性值

⑤router.js:路由匹配相关