qiankun 是一个基于 single-spa 的微前端实现库,借助于它可以快速搭建一个微前端架构系统。
使用微前端结构后可以:
主要解决的问题:
主应用
主应用不限技术栈,只需要提供一个容器 DOM,然后注册微应用并 start 即可。
这里以 create-react-app 脚手架为例:
npx create-react-app my-app cd my-app npm start
然后安装 qiankun:
$ yarn add qiankun # 或者 npm i qiankun -S
编辑 src/index.js ,注册微应用并启动:
import { registerMicroApps, start } from 'qiankun'; registerMicroApps([ { name: 'reactApp', entry: '//localhost:7100', container: '#container', activeRule: '/app-react', }, { name: 'vueApp', entry: '//localhost:8080', container: '#container', activeRule: '/app-vue', }, { name: 'angularApp', entry: '//localhost:4200', container: '#container', activeRule: '/app-angular', }, ]); // 启动 qiankun start();
当微应用信息注册完之后,一旦浏览器的 url 发生变化,便会自动触发 qiankun 的匹配逻辑,所有 activeRule 规则匹配上的微应用就会被插入到指定的 container 中,同时依次调用微应用暴露出的生命周期钩子。
例如点击主应用的某个菜单后路由变更为 /app-react,则 qiankun 会找到匹配的微应用 reactApp,发起网络请求,把 //localhost:7100 的内容插入到当前页面 id 为 container 的容器中。
上述是自动模式,如果微应用不是直接跟路由关联的时候,你也可以选择手动加载微应用的方式:
import { loadMicroApp } from 'qiankun'; loadMicroApp({ name: 'reactApp', entry: '//localhost:7100', container: '#container', });
微应用
1.导出相应的生命周期钩子函数
微应用需要在自己的入口 js (通常就是你配置的 webpack 的 entry js) 导出 bootstrap、mount、unmount 三个生命周期钩子,以供主应用在适当的时机调用。
bootstrap
mount
unmount
/** * bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。 * 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。 */ export async function bootstrap() { console.log('react app bootstraped'); } /** * 应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法 */ export async function mount(props) { ReactDOM.render(<App />, props.container ? props.container.querySelector('#root') : document.getElementById('root')); } /** * 应用每次 切出/卸载 会调用的方法,通常在这里我们会卸载微应用的应用实例 */ export async function unmount(props) { ReactDOM.unmountComponentAtNode( props.container ? props.container.querySelector('#root') : document.getElementById('root'), ); } /** * 可选生命周期钩子,仅使用 loadMicroApp 方式加载微应用时生效 */ export async function update(props) { console.log('update props', props); }
qiankun 基于 single-spa,所以你可以在这里找到更多关于微应用生命周期相关的文档说明。
无 webpack 等构建工具的应用接入方式请见这里
2.配置微应用的打包工具为了让主应用能正确识别微应用暴露出来的一些信息,微应用的打包工具需要增加如下配置:
webpack:
const packageName = require('./package.json').name; module.exports = { output: { library: `${packageName}-[name]`, libraryTarget: 'umd', jsonpFunction: `webpackJsonp_${packageName}`, }, };
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
华为L410笔记本需要使用到会议功能,有没有对应的软件可以使用? “联系人”有会议功能 “联系人”有会议功能
主题:如题 外接usb键盘正常吗 外接usb键盘正常吗
请大佬们指点:如何让银河麒麟系统使用笔记本电脑的独立显卡! 笔记本 为DELL G5 独显是 GTX 1650 Ti
笔记本外接显示器 使用不了 在win下又可以 独立显卡驱动没有正确安装。
我自用的神舟T6 x5e的笔记本(i5 8300h 1050)还有惠普Elite x2 G4平板电脑二合一(i7 8665u 核显620)发热太厉害了开机一会风扇狂转,发热十分严重尤其是惠
uos家庭版 3060驱动怎么搞 我现在笔记本外接显示器使用不了 https://bbs.chinauos.com/zh/post/11174 同问,3050开机进不了系统
文件操作是每个项目中必备的一个模块,Hutool中的FileUtil类库封装了大多数文件操作,非常方便,今天给大家分享一下具体的使用示例。1、pom.xml导入依赖包cn.hutoolhutool-all5.8.02、新增测
Hello大家好我是小联之前和大家分享过新电脑到手后,首次开机的解包教程以及系统解包完成后Office2021的激活流程今天我们继续来跟大家聊一聊新机激活后可能会碰到的常见问题没看过解包和激活流程图文的可以直接点击下方图片跳转↓部分桌面图标找不到有小伙伴反映,自己的电脑解包完成后,桌面只有回收站,“此电脑”等其他图标找不到了,该怎么办?别慌,方法很简单!1、首先我们先在桌面点击鼠标右键,并选择【个
近日,由中国公路学会主办,陕西交控集团承办的“2023高速公路收费系统国产化改造关键技术研讨会暨陕西西镇高速现场会”在西安召开。由西安公路研究院联合麒麟软件、飞腾、中国长城等打造的“基于信创的国产化高速公路收费系统”(简称“国产收费系统”)受到广泛关注。国产收费系统采用银河麒麟操作系统为底层平台,成为全国首个在整段高速公路——西镇高速公路投入使用的国产收费系统,为高速公路收费领域提供了一揽子的国产
扫一扫关注公众号
添加我为好友,拉您入交流群!
请使用微信扫一扫!