# 异构微前端

​ 这里列举两个异构微前端页面挂载在afcenter菜单中展示的操作步骤,vue3和react类型项目。

# Vue3项目

前提:vue3项目在浏览器可以独立运行,且支持hash路由,如下图:

  • 步骤1:配置微前端。在应用的基本信息里配置微前端模块;

  • 步骤2:配置页面。在资源管理里添加页面,页面类型为异构微前端,选择刚添加的模块名称,以及符合的路由等

  • 步骤3:添加权限。在权限管理下的角色管理中给角色添加权限

  • 步骤4:配置菜单。在菜单管理的新建菜单,选择已添加的菜单页面

至此,刷新页面,即可在相应菜单中展示vue3的页面

# 可能出现的问题
  • 如果项目可以独立加载,但是挂载菜单后页面不展示。

    打开后台,如果报错,出现No 'Access-Control-Allow-Origin'、'no-cors'等字眼,可能是你的项目不允许被跨域访问,可参考vue3demo/vue.config.js路径下的文件

# 与afcenter的交互

异构微前端的项目除了独立运行挂载在菜单上,可以通过url参数;内存信息以及事件总线进行交互。方法如下:

  • url参数

    在编辑页面处配置输入参数

    在页面上打印,代码如下

    console.log(window.parent.location.hash)
    

    效果图:

  • 内存信息

    可以获取到浏览器应用下的信息:本地存储、会话存储、cookie。打印代码如下:

    // 本地存储
    console.log(localStorage.getItem('loginType'), '====loginType')
    // 会话存储,使用插件store,参考src\views\demo\index.vue页面引入的store
    console.log(store.get('showVerifiedCode'),'===showVerifiedCode')
    // 使用插件js-cookie,具体参考src\views\demo\index.vue
    console.log(Cookies.get('language') || 'zh_CN', '====currentLang' )
    

  • 事件总线

    例如,在微前端调用接口token过期时,触发全局的登录信息已过期提醒,代码如下:

window.parent.Vue.prototype.$BaseBus.$emit('request:401')

效果图:

# react项目

前提:react项目在浏览器可以独立运行,且支持hash路由,如下图:

  • 步骤1:配置微前端。在应用的基本信息里配置微前端模块;

  • 步骤2:配置页面。在资源管理里添加页面,页面类型为异构微前端,选择刚添加的模块名称,以及符合的路由等

  • 步骤3:添加权限。在权限管理下的角色管理中给角色添加权限

  • 步骤4:配置菜单。在菜单管理的新建菜单,选择已添加的菜单页面

至此,刷新页面,即可在相应菜单中展示react的页面

与afcenter的交互

异构微前端的项目除了独立运行挂载在菜单上,可以通过url参数;内存信息以及事件总线进行交互。方法如下:

  • url参数

    在编辑页面处配置输入参数

    在页面上打印,代码如下

    console.log(window.parent.location.hash)
    

    效果图:

  • 内存信息

    可以获取到浏览器应用下的信息:本地存储、会话存储、cookie。打印代码如下:

    // 本地存储
    console.log(localStorage.getItem('loginType'), '====loginType')
    // 会话存储
    console.log(sessionStorage.getItem('showVerifiedCode'),'===showVerifiedCode')
    // 使用插件react-cookies,具体参考src\components\Home.js
    console.log(cookie.load('language') || 'zh_CN', '====currentLang' )
    

  • 事件总线

    例如,在微前端调用接口token过期时,触发全局的登录信息已过期提醒,代码如下:

window.parent.Vue.prototype.$BaseBus.$emit('request:401')

效果图:

上次更新: 2023/7/20下午12:25:28