微前端--无界方案之官网demo操作说明

本文介绍如何使用官方提供的无界微前端框架搭建个人项目,并解决跨域问题,实现不同前端框架间的路由配置与页面加载。

下载运行

deom下载

官方demo在GitHub(访问有问题,需要设置,本人未设置)

链接:https://github.com/Tencent/wujie (别处给的,也能用)

pnpm下载

其中的包需要通过pnpm下载,使用npm下载存在问题!!!

npm install pnpm -g

注:默认下载最新版pnpm,支持的node为14.6以上,以下版本请到pnpm官网找历史版本

运行

npm run start

出现一下界面,即为成功:

加入个人项目

创建项目

在examples中创建一个自己的项目(本人用的vue2,所以创建一个vue2的项目,其他类推)

注:主页面项目就是我们所有项目最终运行的地方,相当于main

<think>好的,用户想了解在Vue2老项目改造为微前端时,应该选择乾坤、micro-app还是无界。我需要先分析每个框架的优缺点,然后结合Vue2项目的具体情况给出建议。 首先,乾坤(qiankun)是蚂蚁金服开源的微前端框架,社区活跃,文档齐全,适合中大型项目。但可能需要更多的配置,特别是对于老项目,可能需要调整路由和入口文件。另外,Vue2的支持应该没问题,但可能需要处理一些兼容性问题。 然后是micro-app,这个框架比较轻量,基于Web Components,接入相对简单,可能更适合快速改造。对于Vue2的支持应该也不错,不过社区和生态可能不如乾坤成熟,遇到问题时资源可能较少。 无界(wujie)是腾讯开源的,特点是利用Web Component和iframe相结合的方式,可能隔离性更好,对样式和JS冲突处理更优。不过,文档和社区支持可能不如前两者,特别是对于Vue2的具体案例,需要确认兼容性。 接下来考虑用户的项目情况。老项目可能希望改动尽可能少,快速集成。如果项目结构复杂,需要更完善的沙箱机制和状态管理,乾坤可能是更稳妥的选择。如果希望快速接入且项目不复杂,micro-app或无界可能更合适。 另外,用户可能需要具体的示例,所以需要选择一个框架,给出一个简单的改造步骤。乾坤在Vue2中使用较多,示例和文档丰富,可能更适合作为推荐。需要演示主应用和子应用的配置,如何修改路由和入口文件,以及如何处理依赖共享。 还要注意Vue2的版本是否和微前端框架兼容,比如生命周期钩子的处理,乾坤可能需要主应用和子应用都进行一些配置调整。同时,可能需要处理样式隔离问题,乾坤使用Shadow DOM,但有时候会有兼容性问题,需要测试。 最后,综合稳定性、社区支持和Vue2的兼容性,乾坤可能是最优选,尽管配置稍复杂。micro-app和无界作为备选,适合特定场景。需要给出一个具体的乾坤改造示例,包括主应用安装qiankun,修改main.js注册子应用,子应用导出生命周期钩子,调整路由和打包配置等步骤。</think>在 Vue2 老项目改造为微前端时,**乾坤(qiankun)**、**micro-app** 和 **无界(wujie)** 各有优缺点。以下是技术选型分析和最优改造示例: --- ### 一、框架对比 | 特性 | 乾坤 (qiankun) | micro-app | 无界 (wujie) | |--------------------|--------------------------------------------------------------------------------|--------------------------------------------------------------------------|------------------------------------------------------------------------------| | **成熟度** | 高(蚂蚁金服开源,社区活跃) | 中(社区逐渐增长) | 中(腾讯开源,较新但迭代快) | | **接入成本** | 中(需手动配置路由、生命周期) | 低(基于 Web Components,近乎零配置) | 低(类似 iframe 但更轻量) | | **沙箱隔离** | 支持 JS/CSS 沙箱 | 支持 CSS 沙箱,JS 隔离较弱 | 支持完善的 JS/CSS 沙箱 | | **通信机制** | 基于 `props` 或全局状态 | 基于 CustomEvent | 基于 iframe 通信机制 | | **适用场景** | 复杂项目、需强隔离性 | 轻量级项目、快速接入 | 需要 iframe 级隔离但追求体验 | --- ### 二、推荐方案 #### 1. **选择乾坤(qiankun)** 如果: - 项目复杂度高,需要强沙箱隔离 - 已有微前端经验,追求长期稳定性 - 需要细粒度控制子应用生命周期 #### 2. **选择 micro-app** 如果: - 追求快速改造,接入成本低 - 子应用技术栈多样(支持 Web Components) - 不需要严格的 JS 隔离 #### 3. **选择无界(wujie)** 如果: - 需要 iframe 级别的隔离但避免 iframe 的性能问题 - 子应用需要保留完整的浏览器环境(如依赖 `window` 的库) --- ### 三、最优改造示例(以乾坤为例) #### 步骤 1:主应用改造 ```bash # 安装乾坤 npm install qiankun -S ``` ```javascript // main.js import { registerMicroApps, start } from 'qiankun' // 注册子应用 registerMicroApps([ { name: 'vue2-subapp', entry: '//localhost:7101', // 子应用独立运行地址 container: '#subapp-container', activeRule: '/vue2-subapp', props: { /* 传递全局状态 */ } } ]) // 启动乾坤 start() ``` #### 步骤 2:子应用改造 ```javascript // 子应用入口文件 src/public-path.js if (window.__POWERED_BY_QIANKUN__) { __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__ } // 子应用 main.js import './public-path' let instance = null function render(props = {}) { const { container } = props instance = new Vue({ router, store, render: h => h(App) }).$mount(container ? container.querySelector('#app') : '#app') } // 独立运行时直接渲染 if (!window.__POWERED_BY_QIANKUN__) { render() } // 导出乾坤生命周期钩子 export async function bootstrap() {} export async function mount(props) { render(props) } export async function unmount() { instance.$destroy() instance.$el.innerHTML = '' instance = null } ``` #### 步骤 3:配置子应用打包(vue.config.js) ```javascript module.exports = { devServer: { port: 7101, headers: { 'Access-Control-Allow-Origin': '*' // 允许跨域 } }, configureWebpack: { output: { library: `vue2-subapp`, libraryTarget: 'umd', jsonpFunction: `webpackJsonp_vue2-subapp` } } } ``` --- ### 四、注意事项 1. **路由冲突**:主/子应用使用不同 base URL(如主应用用 `/main`,子应用用 `/subapp`) 2. **依赖共享**:通过 `externals` 复用公共库(如 Vue、Vuex) 3. **样式隔离**:乾坤默认启用沙箱,但复杂场景可补充 CSS Modules 或 BEM 命名规范 --- ### 五、总结 - **推荐乾坤**:适合长期维护的复杂项目,社区资源丰富。 - **备选方案**:micro-app 适合快速轻量改造,无界适合 iframe 替代场景。 - **改造关键点**:生命周期管理、路由隔离、依赖共享。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值