微前端----qiankun

这篇具有很好参考价值的文章主要介绍了微前端----qiankun。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.qiankun是什么?它解决了哪些问题?

qiankun 是一个基于 single-spa 的微前端实现库,换句话说就是对single-spa进行了封装得到qiankun。

qiankun就是将一个大应用拆分成好多小项目,qiankun解决了我们协同开发的一些问题,其次更方便于我们进行更新代码 。

2.qiankun的实现原理及过程。

(1)监听路由变化

(2)匹配子应用

(3)加载子应用

(4)渲染子应用

我们可以简单概括为当匹配到activeRule的时候,请求获取entry资源,渲染到container中。

3.大家可以结合spa应用的父子组件对比的来理解qiankun

我们拿vue2的父子组件来简单分析一下。

qiankun首先也是在他的基座(主应用)注册子应用

子应用名称:父组件中子组件的名称

其次规定他的地址端口号(父子组件没有):获取entry的html资源

渲染子应用的容器container:父组件中子组件的占位符

触发加载子应用的路径activeRule:相当于子路由

子应用需要配置跨域:因为你这个端口号发生了变化

这个就是对小白来说方便理解这个qiankun,目前在微前端框架领域里,qiankun算是用的最好最多的。

4.qiankun实战配置。

1.首先创建主应用项目、微应用项目

2.主应用安装qiankun   npm i qiankun -S

我这次以react项目作为主应用、子应用是一个vue项目 一个react项目

第一步,在主应用里面注册子应用(在主应用的入口文件里)

import { registerMicroApps, start } from 'qiankun'; // 底层是基于single-spa

const loader = (loading) => {
    console.log(loading)
}
registerMicroApps([{
        name: 'm-vue',  // 子应用的名称
        entry: '//localhost:20000',  // 子应用的入口地址
        container: '#container',  // 渲染的容器
        activeRule: '/vue',  // 触发渲染的路径
        loader,
    },
    {
        name: 'm-react',
        entry: '//localhost:30000',
        container: '#container',
        activeRule: '/react',
        loader
    }
], {
    beforeLoad: () => {
        console.log('加载前')
    },
    beforeMount: () => {
        console.log('挂在前')
    },
    afterMount: () => {
        console.log('挂载后')
    },
    beforeUnmount: () => {
        console.log('销毁前')
    },
    afterUnmount: () => {
        console.log('销毁后')
    },
})
start({
    sandbox:{
        // experimentalStyleIsolation:true
        strictStyleIsolation:true
    }
});

第二步,在主应用的出口文件添加触发子应用的路径

import {BrowserRouter as Router,Link} from 'react-router-dom'
function App() {
  return (
    <div className="App">
        <Router>
          <Link to="/vue">vue应用</Link>
          <Link to="/react">react应用</Link>
        </Router>
         {/* 切换导航, 将微应用渲染container容器中 */}

        <div id="container"></div>
    </div>
  );
}



export default App;

第三步,子应用里面的配置vue.config.js

module.exports = {
    publicPath: '//localhost:20000', //保证子应用静态资源都是像20000端口上发送的
    devServer: {
        port: 20000, // fetch
        headers:{
            'Access-Control-Allow-Origin': '*'
        }
    },
    configureWebpack: { // 需要获取我打包的内容  systemjs=》 umd格式
        output: {
            libraryTarget: 'umd',
            library: 'm-vue'// window['m-vue']
        }
    }
}

第四步,子应用里面的main.js

import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router';
import App from './App.vue'
import routes from './router'

// 不能直接挂载 需要切换的时候 调用mount方法时候再去挂载
let history;
let router;
let app;
function render(props = {}){
    history =  createWebHistory('/vue');
    router = createRouter({
        history,
        routes
    });
    app = createApp(App);
    let {container} = props; // 默认他会拿20000端口的html插入到容器中,
    app.use(router).mount(container ? container.querySelector('#app'):'#app')
}

// 乾坤在渲染前 给我提供了一个变量 window.__POWERED_BY_QIANKUN__

if(!window.__POWERED_BY_QIANKUN__){ // 独立运行自己
render();
   
}

// 需要暴露接入协议
export async function bootstrap(){
    console.log('vue3 app bootstraped');
}

export async function mount(props){
    console.log('vue3 app mount',);
     render(props)
}
export async function unmount(){
    console.log('vue3 app unmount');
    history = null;
    app = null;
    router = null;
}

这是一个简单的实战配置,关注我,下一篇文章整理qiankun的源码,更加彻底的掌握qiankun,大家有啥建议或者观点欢迎评论区留言。文章来源地址https://www.toymoban.com/news/detail-654207.html

到了这里,关于微前端----qiankun的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • qiankun:react18主应用 + 微应用 react18 + vue3

    一:主应用 搭建react项目 安装Antd 在 index.js中引入 安装react-router : 在 index.js中引入 安装 qiankun : 在主应用中注册微应用,在 index.js中引入 注:子应用嵌入到主应用的地方,id要跟index.js下registerMicroApps里面的container设置一致 修改App.js文件,将如下代码放入App.js 修改App.css样

    2024年02月16日
    浏览(30)
  • Vue 和 React 前端框架的比较

    本文研究了流行的前端框架 Vue 和 React 之间的区别。通过对它们的学习曲线、视图层处理方式、组件化开发、响应式数据处理方式和生态系统及社区支持进行比较分析,得出了它们在不同方面的优劣和特点。该研究对于开发者在选择合适的前端框架时提供参考。 Vue 是一款由

    2024年02月13日
    浏览(50)
  • React与Vue:前端框架的比较

    在前端开发领域,React和Vue是两个备受瞩目的框架。它们都提供了构建用户界面的强大工具,但它们在实现方式、性能和设计理念上存在一些关键差异。本文将深入探讨这两个框架之间的主要区别。 首先,让我们从数据流的角度来看。在Vue中,数据流是双向的,这意味着组件

    2024年01月20日
    浏览(39)
  • qiankun微服务怎么用,怎么实现集成react和vue

    Qiankun 是一个能够帮助开发者实现微前端的框架,它可以支持多种前端框架的混合开发,包括 React、Vue 等。下面我将详细介绍如何使用 Qiankun 实现集成 React 和 Vue。 Qiankun 是一个基于 Single-SPA 的微前端解决方案,它是由阿里巴巴前端团队开发的。Qiankun 提供了一套完整的微前端

    2024年02月13日
    浏览(32)
  • 【前端打怪升级日志之微前端框架篇】微前端qiankun框架子应用间跳转方法

    参考链接 qiankun官网:微应用之间如何跳转? 1.主应用、子应用路由都是hash模式    主应用根据 hash 来判断微应用,无需考虑该问题 2.主应用根据path判断子应用 方法 实现 适用条件 参数传递 存在问题 a标签跳转 a href=\\\"/toA\\\"/a 页面重新刷新,原来的状态丢失,用户体验不好 h

    2024年02月07日
    浏览(30)
  • 前端开发框架生命周期详解:Vue、React和Angular

    作为前端开发者,掌握前端开发框架的生命周期是非常重要的。在现代Web应用开发中,Vue.js、React和Angular是三个最流行的前端开发框架。本篇博客将详细解读这三个框架的生命周期,包括每个阶段的含义、用途以及如何最大限度地利用它们。通过详细的代码示例和实用的技巧

    2024年02月13日
    浏览(41)
  • React与Vue性能对比:两大前端框架的性能

    React和Vue是当今最流行的两个前端框架,它们在性能方面都有着出色的表现。 React的加载速度: 初次加载:由于React使用了虚拟DOM(Virtual DOM)技术,它可以通过比较虚拟DOM树与实际DOM树的差异来进行高效的重绘。这使得React在初次加载时相对较快,因为它只会更新需要修改的

    2024年02月03日
    浏览(41)
  • 前端(十一)——Vue vs. React:两大前端框架的深度对比与分析

    😊博主:小猫娃来啦 😊文章核心: Vue vs. React:两大前端框架的深度对比与分析 在当今快速发展的前端领域中,Vue和React作为两个备受瞩目的前端框架,已经成为许多开发者的首选。这两个框架凭借其出色的设计和强大的功能,在构建现代化、高效性能的Web应用方面扮演着

    2024年02月14日
    浏览(43)
  • Vue VS React:两大前端框架的对比与分析

    Vue和React是当前最流行的前端框架之一,它们都有着广泛的应用和开发者社区。下面是Vue和React之间的深度对比与分析: 学习曲线: Vue:Vue拥有简单直观的API和文档,对初学者友好。Vue的设计初衷是逐步增强的,可以从小规模项目逐渐扩展到大规模应用。 React:React的学习曲

    2024年02月14日
    浏览(35)
  • 前端框架之战:React vs Vue vs Angular

    前端框架在现代网页开发中扮演着越来越重要的角色,它们为开发者提供了一种更高效、可扩展的方式来构建复杂的用户界面。在过去的几年里,我们看到了许多前端框架和库的出现,如React、Vue和Angular等。这三个框架分别由Facebook、Google和AngularJS团队开发,它们都是目前最

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包