微前端——qiankun

一. 什么是微前端

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。

微前端架构具备以下几个核心价值:

  • 技术栈无关
    主框架不限制接入应用的技术栈,微应用具备完全自主权

  • 独立开发、独立部署
    微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新

  • 增量升级

    在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略

  • 独立运行时
    每个微应用之间状态隔离,运行时状态不共享

二. qiankun框架

文档地址 https://qiankun.umijs.org/zh

qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统 。

qiankun  孵化自蚂蚁金融科技基于微前端架构的云产品统一接入平台,在经过一批线上应用的充分检验及打磨后,我们将其微前端内核抽取出来并开源,希望能同时帮助社区有类似需求的系统更方便的构建自己的微前端系统,同时也希望通过社区的帮助将 qiankun 打磨的更加成熟完善。

特性

  • 📦 基于 single-spa 封装,提供了更加开箱即用的 API。
  • 📱 技术栈无关,任意技术栈的应用均可 使用/接入,不论是 React/Vue/Angular/JQuery 还是其他等框架。
  • 💪 HTML Entry 接入方式,让你接入微应用像使用 iframe 一样简单。
  • 🛡​ 样式隔离,确保微应用之间样式互相不干扰。
  • 🧳 JS 沙箱,确保微应用之间 全局变量/事件 不冲突。
  • ⚡️ 资源预加载,在浏览器空闲时间预加载未打开的微应用资源,加速微应用打开速度。
  • 🔌 umi 插件,提供了 @umijs/plugin-qiankun 供 umi 应用一键切换成微前端架构系统。

三. qiankun框架实例

准备建立三个项目实际操作,主要用的vue和react技术栈(不限技术栈),qiankun-base充当主应用(主应用为vue),qiankun-vue 和 qiankun-react 充当子应用。

1. 创建应用

1.创建基座

vue create qiankun-base

2.创建子应用1

vue create qiankun-vue

3.创建子应用2

create-react-app qiankun-react

2.项目配置

1、基座qiankun-base配置

项目创建好后我们首先进行主应用qiankun-base的配置,进入man.js文件进行配置,在main.js中加入以下代码,要注意的是,

entry 是我们两个子项目的域名和端口,我们必须确保两个子项目运行在这两个端口上面,container 就是我们的容器名,就是我们子应用挂载的节点,相当于Vue项目里面的app节点,activeRule 就是我们的激活路径,根据路径来显示不同的子应用
 

(1) 引入qiankun插件

npm i qiankun -S

(2) main.js配置

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.config.productionTip = false
Vue.use(ElementUI);


// 引入qiankun
import { registerMicr
### Qiankun 微前端框架使用指南 #### 项目创建与初始化 为了开始使用 Qiankun 构建微前端架构的应用程序,需先安装必要的依赖项。通过 npm 或 yarn 安装 `qiankun` 及其相关工具包可以轻松完成这一过程[^2]。 ```bash npm install qiankun --save ``` #### 主应用配置 主应用作为整个系统的入口点,负责管理各个子应用之间的交互逻辑。在 Vue.js 中可以通过自定义插件的方式集成 Qiankun,在项目的根目录下新建一个名为 `micro-app-config.js` 的文件来设置基本参数: ```javascript // micro-app-config.js import { registerMicroApps, start } from 'qiankun'; registerMicroApps([ { name: 'app1', // 子应用名称 entry: '//localhost:8081', // 子应用地址 container: '#container', // HTML 元素节点 ID activeRule: '/app1' // 激活路径规则 }, ]); start(); ``` 此段代码实现了向 Qiankun 注册一个简单的子应用实例,并指定了该子应用对应的 URL 地址、容器 DOM 结构以及激活条件等属性[^4]。 #### 子应用开发 对于每一个单独的子应用而言,只需要遵循标准的单页应用程序(SPA)模式即可正常工作。这里以 Vue CLI 创建的基础模板为基础展示如何将其转换成兼容 Qiankun 的形式: ```html <!-- public/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>App</title> </head> <body> <!-- 预留位置供父级调用 mount 函数挂载组件 --> <div id="root"></div> <!-- 加载 app.js 文件 --> <script src="/dist/app.js"></script> <!-- 导出 lifeCycles 方法以便被主应用识别 --> <script type="text/javascript"> window.__POWERED_BY_QIANKUN__ = true; function render(props){ const { container } = props; App.mount({ target: container ? container.querySelector('#root') : '#root' }); } if (!window.__IS_QIANKUN__) { render({}); } export async function bootstrap() {} export async function mount(props) { console.log('props from main framework', props); render(props); } export async function unmount() { await App.unmount(); } </script> </body> </html> ``` 上述代码片段展示了如何调整常规 SPA 使之适应成为 Qiankun 下的一个子模块。特别注意的是加入了对 `__POWERED_BY_QIANKUN__` 和 `__IS_QIANKUN__` 这两个全局变量的支持,用于区分当前环境是否处于 Qiankun 控制之下;同时还暴露出了三个生命周期钩子函数(`bootstrap`, `mount`, `unmount`)方便与其他部分协同运作[^5]。 #### 启动服务 最后一步是在本地环境中分别启动所有的参与方——即主应用和各路子应用的服务进程。通常情况下会采用不同的端口号来进行隔离测试,比如主站位于 http://localhost:7099/ ,而其他的小型站点则可能分布在诸如 http://localhost:8081/, http://localhost:8082/ 等地方[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值