微前端-无界wujie

本文介绍了无界微前端方案,利用webcomponent容器和iframe沙箱解决了一系列问题,如适配、样式、性能、通信等,并详细展示了如何在Vue项目中集成无界微前端,包括配置参数、页面创建和跨域处理。同时涵盖了去中心化通信方式和生命周期管理的生命周期钩子。
摘要由CSDN通过智能技术生成

无界微前端方案基于 webcomponent 容器 + iframe 沙箱,能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。

  1. 主项目安装无界
    vue2项目:npm i wujie-vue2 -S
    vue3项目:npm i wujie-vue3 -S
  2. 主项目main.js中引入无界
import Wujie from 'wujie-vue2'
const { setupApp, bus: Wujiebus } = Wujie
Vue.use(Wujie)
  1. 主项目main.js中配置参数
setupApp({
  name: 'wujieSon',
  url: 'http://127.0.0.1:8085/', //子工程的访问地址
  exec: true,
  props: {
    jump: name => {
      router.push({ name })
    }
  },
  sync: true,
  alive: true,
  // FeAnalytics重写了原生Fetch方法,其入参接收的是 Object,Wujie在加载HTML时,入参给了String的URL,会报错。
  fetch: (url, options) => {
    return window.fetch(url, { ...options, credentials: 'omit' })
  },
  prefix: { project_approval: '' },
  // plugins,
  degrade:
    window.localStorage.getItem('degrade') === 'true' ||
    !window.Proxy ||
    !window.CustomElementRegistry
  // ...lifecycles
})

在这里插入图片描述
4. 创建无界页面

<template>
  <!--单例模式,name相同则复用一个无界实例,改变url则子应用重新渲染实例到对应路由 -->
  <WujieVue
    width="100%"
    height="100%"
    :props="getProps()"
    name="immediatelyMan"
    :url="subAppPath"
  />
</template>
<script>
import WujieVue from 'wujie-vue2'
// import * as Auth from '@/utils/auth.js'
export default {
  computed: {
    subAppPath() {
      return 'http://127.0.0.1:8085/'     //子工程访问路径
    }
  },
  mounted() {
    // Wujie 保活模式,多个页面跳转同一个子应用的不同路由,需要采用通信方式将子应用的路径传递出去,由子应用自行变更路由
    WujieVue.bus.$emit('route-change', this.$route)
  },
  methods: {
    jump(name) {
      this.$router.push({ name })
    },
    getProps() {
      return {
        
      }
    }
  }
}
</script>

在这里插入图片描述
5. 子工程如果有跨域,在vue.config.js中开启跨域访问。否则子工程不用做什么。

devServer: {
        headers: {
            "Access-Control-Allow-Origin": "*" // 开启应用间的跨域访问
        },
}
  1. 去中心化通信
    无界提供多种通信方式:window.parent 直接通信、props 数据注入、去中心化 EventBus 通信机制:

    1)子应用 js 在和主应用同域的 iframe 内运行,所以 window.parent 可以直接拿到主应用的 window 对象来进行通信。
    2) 主应用可以向子应用注入 props 对象,里面可以注入数据和方法供子应用调用。
    3) 内置的 EventBus 去中心化通信方案可以让应用之间方便的直接通信。
    上面案例中使用的是注入 props 对象的方式通信。

  2. 生命周期
    无界提供完善的生命周期钩子供主应用调用:
    beforeLoad:子应用开始加载静态资源前触发
    beforeMount:子应用渲染前触发 (生命周期改造专用)
    afterMount:子应用渲染后触发(生命周期改造专用)
    beforeUnmount:子应用卸载前触发(生命周期改造专用)
    afterUnmount:子应用卸载后触发(生命周期改造专用)
    activated:子应用进入后触发(保活模式专用)
    deactivated:子应用离开后触发(保活模式专用)

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端是一种将前端应用程序分解为更小、更易于管理的部分的方法,以实现更好的可维护性和可扩展性。wujie是一个面向前端的解决方案,它可以帮助你快速构建和管理前端应用程序。 以下是wujie快速上手的步骤: 1. 安装wujie 你可以通过npm安装wujie: ``` npm install wujie ``` 2. 创建wujie应用程序 使用wujie,你可以创建一个主应用程序和多个子应用程序。创建wujie应用程序可以使用如下命令: ``` npx create-wujie-app my-app ``` 3. 配置wujiewujie应用程序中,你需要配置主应用程序和子应用程序之间的交互。你可以在主应用程序中使用如下代码来配置子应用程序: ```javascript import { registerMicroApps, start } from 'wujie'; registerMicroApps([ { name: 'app1', entry: '//localhost:3000', container: '#app-container', activeRule: '/app1', }, { name: 'app2', entry: '//localhost:3001', container: '#app-container', activeRule: '/app2', }, ]); start(); ``` 在上面的代码中,我们注册了两个子应用程序,并将它们渲染到了主应用程序中的一个名为“#app-container”的DOM元素中。每个子应用程序都有一个名称、入口URL、容器元素和活动规则。活动规则用于确定何时加载特定的子应用程序。 4. 运行wujie应用程序 现在,你可以运行wujie应用程序: ``` npm run dev ``` 这将启动主应用程序和所有子应用程序。你可以通过访问`http://localhost:8080/app1`和`http://localhost:8080/app2`来查看子应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值