Vue qiankun微前端实现详解
什么是qiankun?
qiankun是一个微前端框架,可以将多个独立的前端应用聚合成一个整体并进行协同工作,达到模块化开发、独立部署、增量升级等目的。
qiankun的优势
- 独立部署:每个应用可以独立部署
- 按需加载:当访问需要的模块时才进行加载
- 模块复用:多个应用之间可以共享Bootstrap、jQuery等公共依赖
Vue中使用qiankun
- 安装依赖
npm install qiankun
- 在子应用中运行
// 导入加载器
import { registerMicroApps, start } from 'qiankun';
// 子应用配置
const apps = [
{
name: 'child-app1', // 子应用名称
entry: '//localhost:8080', // 子应用地址
container: '#micro-app', // 容器id
activeRule: '/child-app1' // 激活规则
}
]
// 注册子应用
registerMicroApps(apps);
// 启动qiankun
start();
- 在主应用中运行
// 导入加载器
import { registerMicroApps, start } from 'qiankun';
// 父应用配置
const apps = [
{
name: 'parent', // 父应用名称
entry: '//localhost:9000', // 父应用地址
container: '#app', // 容器id
activeRule: '/' // 激活规则
}
]
// 注册子应用
registerMicroApps(apps);
// 启动qiankun
start();
示例1:两个Vue应用之间的通信
- 在主应用中监听子应用消息
// 订阅消息
window.addEventListener('message', event => {
// 判断消息是否来自子应用
if (event.origin !== 'http://localhost:8080') {
return;
}
// 打印消息
console.log(event.data); // { type: 'hello', data: 'world' }
});
- 在子应用中发送消息
// 发送消息
window.parent.postMessage({
type: 'hello',
data: 'world'
}, 'http://localhost:9000');
- 在主应用中回复消息
// 订阅消息
window.addEventListener('message', event => {
// 判断消息是否来自子应用
if (event.origin !== 'http://localhost:8080') {
return;
}
// 判断消息类型
if (event.data.type === 'hello') {
// 回复消息
event.source.postMessage({
type: 'world',
data: 'hello'
}, event.origin);
}
});
- 在子应用中接收回复消息
// 订阅消息
window.addEventListener('message', event => {
// 判断消息是否来自父应用
if (event.origin !== 'http://localhost:9000') {
return;
}
// 判断消息类型
if (event.data.type === 'world') {
// 打印消息
console.log(event.data.data); // 'hello'
}
});
示例2:Vue和React之间的通信
- 在React中注册发送消息的方法
// 导入事件总线
import EventEmitter from 'events';
// 实例化事件总线
const emitter = new EventEmitter();
// 注册发送消息的方法
window.sendMessage = (type, data) => {
emitter.emit(type, data);
};
- 在Vue中注册接收消息的方法
// 导入事件总线
import EventEmitter from 'events';
// 实例化事件总线
const emitter = new EventEmitter();
// 注册接收消息的方法
window.addEventListener('message', event => {
// 判断消息是否来自React
if (event.origin !== 'http://localhost:9001') {
return;
}
// 判断消息类型
if (event.data.type === 'hello') {
// 触发事件
emitter.emit('hello', event.data.data);
}
});
- 在Vue中发送消息
// 发送消息
window.parent.sendMessage('hello', 'world');
- 在React中接收消息
// 导入事件总线
import EventEmitter from 'events';
// 实例化事件总线
const emitter = new EventEmitter();
// 注册接收消息的方法
emitter.on('hello', data => {
// 打印消息
console.log(data); // 'world'
});
以上就是“Vue qiankun微前端实现详解”的完整攻略,包含两条示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue qiankun微前端实现详解 - Python技术站