码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 微前端学习


    这里写目录标题

    • micro-app
    • qiankun
      • 1.下载npm i qiankun -S
      • 2.主应用配置路由
      • 3.子应用src目录下添加public-path.js文件
      • 4.vue子应用配置
        • 入口文件 main.js 修改,为了避免根 id #app 与其他的 DOM 冲突,需要限制查找范围。
        • vue.config.js设置
      • 5.react子应用配置
      • 6.子应用对应生命周期钩子
      • 7.子应用进来需要挂载点
      • 8.注意静态资源图片不显示
      • 9.主应用向子应用传值
      • 10.子应用更改父应用数据
      • v3写法
    • single-spa

    将多个独立的web应用联合在一起,提供统一接口,使用微前端框架内嵌到主应用里面。
    是什么时候用:比如公司有人用vue有人用react的时候,老项目更新迭代
    主框架不限制接入应用的技术栈
    运行时状态隔离

    micro-app

    官网

    少手最低,主应用只需要配置路由,页面直接引入

    qiankun

    官网

    基于single-spa
    需要在微应用里面引入三个生命周期,子应用需要修改

    1.下载npm i qiankun -S

    2.主应用配置路由

    //应用文件目录
    myapp文件夹————主应用:端口号3010
    mychild1文件夹————子应用:3011
    mychild2文件夹————子应用:3012
    
    • 1
    • 2
    • 3
    • 4
    import { registerMicroApps, start } from 'qiankun';
    
    registerMicroApps([
      {
        name: 'mychild1', // app name registered
        entry: '//localhost:3011',
        container: '#mychild1',
        activeRule: '/mychild2',
      },
     {
        name: 'mychild2', // app name registered
        entry: '//localhost:3012',
        container: '#mychild2',
        activeRule: '/mychild2',
      },
    ]);
    
    start();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3.子应用src目录下添加public-path.js文件

    每个子应用都要加

    if (window.__POWERED_BY_QIANKUN__) {
      __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
    }
    
    • 1
    • 2
    • 3

    4.vue子应用配置

    入口文件 main.js 修改,为了避免根 id #app 与其他的 DOM 冲突,需要限制查找范围。

    vue.config.js设置

    看官网

    5.react子应用配置

    6.子应用对应生命周期钩子

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    7.子应用进来需要挂载点

    在主应用中
    app.vue

    <div id="mychild1"></div>
    <div id="mychild2"></div>
    
    • 1
    • 2

    8.注意静态资源图片不显示

    //子应用的main.js看是否添加了这一行
    //在顶层引入
    import './public-path';
    
    • 1
    • 2
    • 3

    9.主应用向子应用传值

    //主应用
      {
        name: 'mychild1', // app name registered
        entry: '//localhost:3011',
        container: '#mychild1',
        activeRule: '/mychild2',
        props:{
        	name:'我是数据'
    	}
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    //子应用,在钩子函数中接收
    export async function mount(props) {
      props就是数据
    }
    
    • 1
    • 2
    • 3
    • 4

    如果主应用的数据也是后面加载出来的,initGlobalState
    官网

    请添加图片描述

    10.子应用更改父应用数据

    //子应用
    请添加图片描述

    v3写法

    b站视频

    single-spa

    添加链接描述

  • 相关阅读:
    社会媒体营销提问常用的ChatGPT通用提示词模板
    软导作业扫码
    关于新能源汽车的英语翻译
    Java:PKIX path building failed: SunCertPathBuilderException解决方法汇总
    易周金融分析 | 银行理财市场渐趋理性;“睡眠信用卡”持续清退
    44.ES
    旋转矩阵与欧拉角的相互转换
    Oracle-expdp报错ORA-08103: object no longer exists
    《封号码罗》关于js逆向猿人学第一题m值的获取[纯补环境](二十四)
    【C#异步】异步多线程的本质,上下文流转和同步
  • 原文地址:https://blog.csdn.net/weixin_51109349/article/details/127859360
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号