微前端(4)wujie
这篇记录 wujie 相关实验。
wujie
wujie 基于 webcomponent 容器 + iframe 沙箱,能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。
实验步骤
- 主应用是 vue 框架,可直接使用 wujie-vue(官方提供基于 vue 封装)
- 子应用的资源和接口的请求都在主域名发起,所以会有跨域问题,子应用必须做 cors 设置
代码实例
main-app/src/main.ts
主应用中使用 wujie-vue3,这是基于 vue3 已经封装好的语法糖。
1 |
|
main-app/src/views/layout/components/app-main.vue
中使用,可通过 props 传参。
1 |
|
child-app/src/XXX.vue
子系统获取传值如下:
1 |
|
通过 bus 通信
wujie 通信方式有通过 window.parent 直接通信,通过 Props 数据注入(见上文)和去中心化 EventBus 通信方式。main-app/src/main.ts
1 |
|
child-app/src/main.ts
1 |
|
child-app/src/XXX.vue
1 |
|
生命周期
beforeLoad:子应用开始加载静态资源前触发
beforeMount:子应用渲染前触发(生命周期改造专用)
afterMount:子应用渲染后触发(生命周期改造专用)
beforeUnmount:子应用卸载前触发(生命周期改造专用)
afterUnmount:子应用卸载后触发(生命周期改造专用)
activated:子应用进入后触发(保活模式专用)
deactivated:子应用离开后触发(保活模式专用)
Q & A
挂载到哪里最合适? - 应用切换时 URL 不会发生改变,如果使用动态路由,怎么获取对应的后缀?通过 props 传值?
- “无界微前端不仅能够做到静态资源的预加载,还可以做到子应用的预执行”,怎么操作?
使用感受
- 改造成本不高,主要是主应用需要改造,子应用的适配只需要开启跨域支持即可(不涉及通信的情况下)
默认运行的方式是重建模式。当子应用设置为保活模式,切换子应用后仍然可以保持子应用的状态和路由不会丢失。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!