微前端的使用和注意事项 - qiankun

一、为什么使用微前端

  • 微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。
  • 微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。
  • 微前端的核心价值在于 "技术栈无关"。

二、使用方式

三、主应用和微应用间通信

可参考:https://juejin.cn/post/6844904151231496200

  • qiankun 官方提供的通信方式

Actions 通信。

  • 使用Vuex进行状态管理

在做微前端集成时,将主应用的store共享给所有微应用

  1. 主应用向微应用传递store实例

    registerMicroApps(
    [
    {
    name: "chai-project",
    entry: "//localhost:8080",
    container: '#yourContainer',
    activeRule: "/chaiQiankunTest/ffff",
    props: {
    store //共享主应用的store实例
    }
    }
    ],
    {
    beforeLoad: [
    app => {
    console.log("before load", app);
    }
    ], // 挂载前回调
    beforeMount: [
    app => {
    console.log("before mount", app);
    }
    ], // 挂载后回调
    afterUnmount: [
    app => {
    console.log("after unload", app);
    }
    ] // 卸载后回调
    }
    )

  2. 微应用使用主应用共享的store实例

    import Vuex from 'vuex'
    Vue.use(Vuex);
    function render (props) {
    const store = props.store;
    // 在 render 中创建 VueRouter,可以保证在卸载微应用时,移除 location 事件监听,防止事件污染
    router = new Router({
    // 运行在主应用中时,添加路由命名空间 /chaiQiankunTest/ffff
    base: window.POWERED_BY_QIANKUN ? 'chaiQiankunTest/ffff' : '/',
    mode: 'history',
    routes
    });

    // 挂载应用
    instance = new Vue({
    router,
    store,//主应用共享的store实例
    render: (h) => h(App)
    }).$mount('#app');
    }

四、注意事项

  • 微应用之间如何跳转

微应用之间的跳转,或者微应用跳主应用页面,直接使用微应用的路由实例是不行的,如 react-router 的 Link 组件或 vue 的 router-link,原因是微应用的路由实例跳转都基于路由的 base。

有以下几种办法可以跳转:

  1. history.pushState()

  2. 直接使用原生 a 标签写完整地址

    app1

  3. 修改 location href 跳转

    window.location.href = 'http://localhost:8080/app1'

相关推荐
@大迁世界8 小时前
Firefox 本地模式:localhost 再见了 ?
前端·架构
lingyubb10 小时前
配音工具怎么选?从 TTS 合成链路看 6 个可量化参数
状态模式
米米商聊10 小时前
同名附件为什么被 Map 覆盖?重复键与一对多索引
前端·javascript
echome88811 小时前
Python 异常处理:try、else、finally 的正确搭配
开发语言·前端·python·异常处理·编程技巧
时间的情敌11 小时前
OpenLayers 实战|Vue3 + OpenLayers 完整工程案例(加载天地图、要素、弹窗、绘制、WFS)
前端·openlayers
陈随易11 小时前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
前端的日常12 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
计算机魔术师12 小时前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么12 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒12 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端