microApp vue3+vite+ts 子应用接入改造

公司做了一个平台,使用的是microApp,需要把现有的一些系统作为子系统改造一下接入这个平台,所以下面我说的都是子应用的改造,vue2的改造比较简单,主要的vue3+vite+ts的改造。
参考官网

1、设置跨应用支持

vite默认开启跨域支持,不需要额外配置。

2、注册卸载函数

// main.js
const app = createApp(App)
app.mount('#app'
`qiankun` 是一款基于单 SPA 的微前端框架,它可以帮助我们轻松地将多个独立运行的子应用集成到一个主应用中。当我们在 Vue 3 + Vite 环境下使用 `qiankun` 来加载子项目时,可以利用其核心 API —— `loadMicroApp`。 ### loadMicroApp 的用法 #### 参数说明 `loadMicroApp` 函数用于动态加载指定的子应用,并将其挂载到页面上。以下是该函数的基本语法及参数描述: ```javascript import { loadMicroApp } from &#39;qiankun&#39;; const app = loadMicroApp({ name: &#39;subAppName&#39;, // 子应用名称(唯一标识) entry: &#39;//localhost:7100&#39;, // 子应用入口地址 (支持跨域) container: &#39;#container&#39;, // 挂载容器的选择器或 DOM 元素引用,默认为 body 内的第一个 div props: {}, // 需要传递给子应用的数据或其他配置项 }, { beforeLoad: [], // 加载前钩子数组 afterMount: [] // 安装完成后执行的回调 }); ``` --- #### 示例代码 假设我们的主项目是一个 Vue 3 应用,采用 Vite 构建工具;而子项目则位于本地服务端口 `http://localhost:7100` 上。我们可以按照下面的方式去初始化并加载这个子应用: ```vue <template> <div id="micro-app-container"></div> </template> <script setup> import { onMounted } from &#39;vue&#39;; import { registerMicroApps, start } from &#39;qiankun&#39;; onMounted(() => { const microApp = { name: &#39;react-microapp&#39;, entry: &#39;//localhost:7100&#39;, container: &#39;#micro-app-container&#39;, activeRule: &#39;/react-subapp&#39; }; registerMicroApps([microApp]); function mount() { return import(&#39;qiankun&#39;).then(({ loadMicroApp }) => loadMicroApp(microApp) ); } async function init() { await start(); // 启动 qiankun 微前端机制 console.log("QianKun started."); } init(); }) </script> ``` 在上面的例子中: - 我们通过 `registerMicroApps()` 注册了一个名为 `react-microapp` 的子应用; - 使用了 `activeRule` 属性规定何时激活对应的子应用路由规则; - 调用了 `start()` 方法启动整个系统的生命周期管理流程。 --- #### 常见选项解释 | **属性名** | **类型** | **默认值** | **描述** | |----------------|------------------------|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `name` | String | - | 子应用唯一的标志符 | | `entry` | String or Object | - | 子应用打包后的资源路径(如静态文件服务器URL) 或者模块联邦生成的对象形式 | | `container` | Selector / HTMLElement | `document.body` | 将子应用插入其中的实际DOM元素选择器字符串或者直接传入DOM节点实例 | | `props` | Object | `{}` | 可选字段,表示需要向子应用暴露的一些全局状态或者其他上下文信息。这些数据会在子应用内作为 props 接收到 | 此外还存在两个额外的可选参数分别是 `beforeLoad` 和 `afterMount`, 分别代表装载之前触发以及安装之后触发展示自定义逻辑的机会点。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_Huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值