微前端的使用和注意事项 - 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'

相关推荐
hackeroink1 小时前
【2024版】最新推荐好用的XSS漏洞扫描利用工具_xss扫描工具
前端·xss
迷雾漫步者3 小时前
Flutter组件————FloatingActionButton
前端·flutter·dart
向前看-3 小时前
验证码机制
前端·后端
燃先生._.4 小时前
Day-03 Vue(生命周期、生命周期钩子八个函数、工程化开发和脚手架、组件化开发、根组件、局部注册和全局注册的步骤)
前端·javascript·vue.js
高山我梦口香糖5 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
m0_748235245 小时前
前端实现获取后端返回的文件流并下载
前端·状态模式
m0_748240256 小时前
前端如何检测用户登录状态是否过期
前端
black^sugar6 小时前
纯前端实现更新检测
开发语言·前端·javascript
寻找沙漠的人7 小时前
前端知识补充—CSS
前端·css