当前位置: 首页 > news >正文

乾坤微前端框架详细使用大全

引言

乾坤微前端框架(Qiankun)是一款轻量级的微前端解决方案,它基于 JavaScript 的 Proxy 特性和 Web Components 技术,提供了一套简单易用的微前端实现方案。本文将详细介绍乾坤微前端框架的安装、配置、使用方法及常见问题解答,帮助开发者快速上手乾坤微前端框架。

1. 乾坤简介

1.1 什么是乾坤?

乾坤是一个轻量级的微前端框架,旨在帮助开发者轻松实现微前端架构。它通过主应用(Main Application)和子应用(Micro Application)的概念,实现了应用间的解耦和重用,提高了开发效率和灵活性。

1.2 为什么选择乾坤?

  • 低侵入性:乾坤几乎不需要对现有的应用进行大的改动。
  • 易于集成:支持多种构建工具和框架。
  • 灵活配置:可以根据项目需求进行定制化配置。

2. 快速上手

2.1 安装乾坤

  1. 安装主应用:安装乾坤的主应用依赖。

     bash 

    深色版本

    1npm install qiankun
  2. 安装子应用:安装乾坤的子应用依赖。

     bash 

    深色版本

    1npm install qiankun

2.2 配置主应用

  1. 引入乾坤
     javascript 

    深色版本

    1import { start } from '@qiankun/preview';
    2
    3start({
    4    apps: [
    5        {
    6            name: 'app1', // 子应用名称
    7            entry: '//localhost:8081', // 子应用入口 URL
    8            container: '#subapp-viewport', // 子应用挂载的 DOM 元素
    9            activeRule: '/app1', // 激活规则
    10        },
    11    ],
    12    prefetch: true, // 是否预加载子应用
    13    sandbox: {
    14        policy: {
    15            disallow未经允许的API
    16        }
    17    },
    18    lifeCycles: {
    19        beforeLoad: [
    20            async (app) => {
    21                console.log('before load', app);
    22            },
    23        ],
    24        afterMount: [
    25            async (app) => {
    26                console.log('after mount', app);
    27            },
    28        ],
    29    },
    30});

2.3 配置子应用

  1. 引入乾坤

     javascript 

    深色版本

    1import { registerMicroApps, start } from 'qiankun';
    2
    3registerMicroApps([
    4    {
    5        name: 'app1', // 子应用名称
    6        entry: '//localhost:8081', // 子应用入口 URL
    7        container: '#subapp-viewport', // 子应用挂载的 DOM 元素
    8        activeRule: '/app1', // 激活规则
    9    },
    10]);
    11
    12start();
  2. 注册生命周期

     javascript 

    深色版本

    1registerMicroApps([
    2    {
    3        name: 'app1',
    4        entry: '//localhost:8081',
    5        activeRule: '/app1',
    6        lifecycle: {
    7            bootstrap: [
    8                (props) => {
    9                    console.log('bootstrap', props);
    10                    return Promise.resolve();
    11                },
    12            ],
    13            mount: [
    14                (props) => {
    15                    console.log('mount', props);
    16                    return Promise.resolve();
    17                },
    18            ],
    19            unmount: [
    20                (props) => {
    21                    console.log('unmount', props);
    22                    return Promise.resolve();
    23                },
    24            ],
    25        },
    26    },
    27]);

3. 进阶配置

3.1 共享状态管理

乾坤支持共享状态管理,可以使用 @qiankun/manager 来实现主应用和子应用之间的状态同步。

  1. 安装依赖

     bash 

    深色版本

    1npm install @qiankun/manager
  2. 配置状态管理器

     javascript 

    深色版本

    1import { start, Manager } from '@qiankun/preview';
    2import { createStore } from '@qiankun/manager';
    3
    4const store = createStore();
    5
    6start({
    7    apps: [
    8        // ...
    9    ],
    10    manager: new Manager({ store }),
    11});

3.2 路由管理

乾坤支持路由级别的子应用管理,可以通过配置 activeRule 来控制子应用的加载时机。

  1. 配置路由
     javascript 

    深色版本

    1start({
    2    apps: [
    3        {
    4            name: 'app1',
    5            entry: '//localhost:8081',
    6            activeRule: '/app1',
    7        },
    8    ],
    9});

3.3 模块联邦

乾坤与模块联邦(Module Federation)技术可以很好地协同工作,实现微前端架构的同时还可以实现代码的按需加载和模块的动态共享。

  1. 安装模块联邦相关依赖

     bash 

    深色版本

    1npm install @module-federation/loader
  2. 配置模块联邦

     javascript 

    深色版本

    1import { registerMicroApps, start } from 'qiankun';
    2import mfLoader from '@module-federation/loader';
    3
    4registerMicroApps([
    5    {
    6        name: 'app1',
    7        entry: '//localhost:8081',
    8        activeRule: '/app1',
    9        loader: mfLoader({
    10            name: 'app1',
    11            filename: 'remoteEntry.js',
    12            exposes: {
    13                './App': './src/App',
    14            },
    15        }),
    16    },
    17]);
    18
    19start();

4. 常见问题解答

4.1 如何解决跨域问题?

  • 使用代理服务器:通过配置代理服务器转发请求到子应用。
  • CORS 配置:确保子应用服务器支持 CORS。

4.2 如何实现子应用间的通信?

  • 使用乾坤提供的通信机制:通过 @qiankun/manager 实现主应用与子应用之间的通信。
  • 自定义通信机制:可以通过全局变量、事件监听等方式实现子应用间的通信。

4.3 如何调试子应用?

  • 使用浏览器开发者工具:开启浏览器的开发者工具进行调试。
  • 使用乾坤提供的调试工具:通过 @qiankun/preview 中的调试工具来辅助调试。

5. 总结

乾坤微前端框架为开发者提供了一个简单易用的微前端解决方案,通过本文的学习,你应该能够掌握乾坤的基本使用方法,以及如何进行更高级的配置和调试。如果你在实际开发中遇到任何问题,欢迎随时提问!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习 之 线性回归算法
  • IntelliJ IDEA ideaIU-2024.2.0.2.exe 启动 IDE 失败
  • 阿里云CentOs ClickHouse安装
  • 安全检测GO内外链跳转页面html源码
  • Java 入门指南:List 接口
  • SwiftUI 革命:打造未来派用户界面的艺术
  • 数据结构——链式队列和循环队列
  • 34.给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。要求算法时间复杂度是 O(log n)
  • 探索Facebook的区块链计划:未来社交网络的变革
  • 8.20 pre day bug
  • 记忆化搜索与状态压缩:优化递归与动态规划的利器
  • 《python语言程序设计》2018版第7章第06题代数:平方根 设计一个名为QuadraticEquation类
  • Verilog刷题笔记54
  • PowerShell 一键配置IP
  • TMS核心架构与功能模块解析
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Git学习与使用心得(1)—— 初始化
  • HTTP中的ETag在移动客户端的应用
  • js中的正则表达式入门
  • leetcode386. Lexicographical Numbers
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • spring boot 整合mybatis 无法输出sql的问题
  • SpriteKit 技巧之添加背景图片
  • 那些年我们用过的显示性能指标
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 区块链分支循环
  • 如何优雅地使用 Sublime Text
  • 数据可视化之 Sankey 桑基图的实现
  • 通过git安装npm私有模块
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信支付JSAPI,实测!终极方案
  • 系统认识JavaScript正则表达式
  • 线性表及其算法(java实现)
  • 一个完整Java Web项目背后的密码
  • - 转 Ext2.0 form使用实例
  • 阿里云服务器购买完整流程
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #70结构体案例1(导师,学生,成绩)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (33)STM32——485实验笔记
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (回溯) LeetCode 78. 子集
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (四)JPA - JQPL 实现增删改查
  • (一)Neo4j下载安装以及初次使用
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)EXC_BREAKPOINT僵尸错误
  • (转载)hibernate缓存
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net core Redis 使用有序集合实现延迟队列