国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微前端--qiankun原理概述

這篇具有很好參考價值的文章主要介紹了微前端--qiankun原理概述。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

demo放最后了。。。

一、微前端

一》微前端概述

????????微前端概念是從微服務(wù)概念擴展而來的,摒棄大型單體方式,將前端整體分解為小而簡單的塊,這些塊可以獨立開發(fā)、測試和部署,同時仍然聚合為一個產(chǎn)品出現(xiàn)在客戶面前??梢岳斫馕⑶岸耸且环N將多個可獨立交付的小型前端應(yīng)用聚合為一個整體的架構(gòu)風(fēng)格。

二》微前端架構(gòu)核心

1、技術(shù)棧無關(guān):主框架不限制接入應(yīng)用的技術(shù)棧,微應(yīng)用具備完全自主權(quán)

2、獨立開發(fā)、獨立部署:微應(yīng)用倉庫獨立,前后端可獨立開發(fā),部署完成后主框架自動完成同步更新

3、增量升級:在面對各種復(fù)雜場景時,我們通常很難對一個已經(jīng)存在的系統(tǒng)做全量的技術(shù)棧升級或重構(gòu),而微前端是一種非常好的實施漸進(jìn)式重構(gòu)的手段和策略

4、獨立運行:每個微應(yīng)用之間狀態(tài)隔離,運行時狀態(tài)不共享

三》主流的微前端方案

1、iframe

????????iframe 最大的特性就是提供了瀏覽器原生的硬隔離方案,不論是樣式隔離、js 隔離這類問題統(tǒng)統(tǒng)都能被完美解決。

????????但他的最大問題也在于他的隔離性無法被突破,導(dǎo)致應(yīng)用間上下文無法被共享(主要是本地存儲、全局變量和公共插件),兩個項目不同源(跨域)情況下數(shù)據(jù)傳輸需要依賴 postMessage,隨之帶來的開發(fā)體驗、產(chǎn)品體驗的問題。

2、single-spa 方案

????????Single-spa 是一個將多個單頁面應(yīng)用聚合為一個整體應(yīng)用的 JavaScript 微前端框架(GitHub 主頁)。簡單來說就是將子項目的內(nèi)容(包括容器、js)插入到主項目,從而呈現(xiàn)出子項目的內(nèi)容。

????????相對于 iframe,single-spa 讓父子項目屬于同一個 document,這樣做既有好處,也有壞處。好處就是數(shù)據(jù)/文件都可以共享,公共插件共享,子項目加載就更快了,缺點是帶來了 js/css 污染。

????????single-spa 上手并不簡單,也不能開箱即用,開發(fā)部署更是需要修改大量的 webpack 配置,對子項目的改造也非常多。

二、qiankun

一》qiankun是什么

?????????qiankun 是一個基于 single-spa 的微前端實現(xiàn)庫,它在 single-spa 的基礎(chǔ)上,實現(xiàn)了開箱即用,除一些必要的修改外,子項目只需要做很少的改動,就能很容易的接入。

二》qiankun主要特性

1、基于 single-spa 封裝,提供了更加開箱即用的 API。

2、技術(shù)棧無關(guān),任意技術(shù)棧的應(yīng)用均可 使用/接入,不論是 React/Vue/Angular/JQuery 還是其他等框架。

3、HTML Entry 接入方式,讓我們接入微應(yīng)用像使用 iframe 一樣簡單

4、樣式隔離,確保微應(yīng)用之間樣式互相不干擾。

5、JS 沙箱,確保微應(yīng)用之間 全局變量/事件 不沖突。

6、資源預(yù)加載,在瀏覽器空閑時間預(yù)加載未打開的微應(yīng)用資源,加速微應(yīng)用打開速度。

7、umi 插件,提供了 @umijs/plugin-qiankun 供 umi 應(yīng)用一鍵切換成微前端架構(gòu)系統(tǒng)。

三》single-spa和qiankun的關(guān)系

微前端需要解決的問題分為兩大類:

1、應(yīng)用的加載與切換

????????應(yīng)用的加載與切換要解決的問題包括: 路由問題、應(yīng)用入口、應(yīng)用加載

2、應(yīng)用的隔離與通信

????????應(yīng)用的隔離與通信需要解決的問題包括:js隔離、css樣式隔離、應(yīng)用間通信

微前端--qiankun原理概述

?四》原理概述

1、路由

【1】single-spa是通過監(jiān)聽hashChange和popState這兩個原生事件來檢測路由變化的

【2】當(dāng)路由變化時,single-spa會監(jiān)聽到,并觸發(fā)urlReroute

【3】接著它會調(diào)用reroute,該函數(shù)正確設(shè)置各個應(yīng)用的狀態(tài)后調(diào)用getAppChanges獲取 待清除、待卸載、待加載、待掛載4種不通狀態(tài)下應(yīng)用的數(shù)據(jù)。

【4】對不同的數(shù)組執(zhí)行不同的生命周期方法。

流程圖如下:

微前端--qiankun原理概述

?

2、應(yīng)用入口

????????只要你的應(yīng)用實現(xiàn)了 bootstrap 、mount 和 unmount 三個生命周期鉤子,有這三個函數(shù)導(dǎo)出,我們的框架應(yīng)用就可以知道如何加載這個子應(yīng)用。這三個鉤子也正好是子應(yīng)用的生命周期鉤子。當(dāng)子應(yīng)用第一次掛載的時候,我們會執(zhí)行 bootstrap 做一些初始化,然后執(zhí)行 mount 將它掛載。當(dāng)你應(yīng)用切換走的時候,我們會執(zhí)行 unmount 把應(yīng)用卸載掉。

微前端--qiankun原理概述

?3、應(yīng)用加載

qiankun采用的應(yīng)用加載是在運行是通過加載子應(yīng)用的HTML。

【1】檢查是否有緩存,如果有,直接從緩存中返回

【2】如果沒有則通過fetch函數(shù)去下載配置的html入口、并返回字符串

【3】通過process函數(shù)處理字符串、返回模版、外聯(lián)腳本、外聯(lián)樣式、和應(yīng)用入口腳本。

【4】調(diào)用getEmbedHTML把外聯(lián)的樣式下載下來,并替換到模板內(nèi),使其變成內(nèi)部樣式

【5】返回一個對象,該對象包含處理后的模板,以及getExternalScripts、getExternalStyleSheets、execScripts等幾個核心方法。

應(yīng)用加載及process函數(shù)處理流程圖:

微前端--qiankun原理概述

?4、JS隔離

qiankun的隔離方式有兩種:

?基于proxy對全局window生成一個代理對象

微前端--qiankun原理概述

?

?通過快照沙箱在沙箱掛載和卸載的時候記錄快照,在應(yīng)用切換的時候依據(jù)快照恢復(fù)環(huán)境。

微前端--qiankun原理概述

?5、樣式隔離

qiankun內(nèi)置了兩種樣式隔離的方法:

?ShadowDOM

微前端--qiankun原理概述

?樣式隔離 RFC

微前端--qiankun原理概述

?6、應(yīng)用間通信

????????基于一個全局的globalState對象。這個對象由基座應(yīng)用負(fù)責(zé)創(chuàng)建,內(nèi)部包含一組用于通信的變量,以及兩個分別用于修改變量值和監(jiān)聽變量變化的方法:setGlobalState和onGlobalStateChange。

微前端--qiankun原理概述

?三、總結(jié)

????????雖然阿里說:“可能是你見過最完善的微前端解決方案??”。但是qiankun 也有一些事情沒有做的。比如沒有對 localStorage 進(jìn)行隔離,如果多個子應(yīng)用都用到 localStorage 就有可能沖突了,除此之外,還有 cookie, indexedDB 的共享等。

附demo

GitHub - 14130110048/qiankun-demo: 微前端-qiankun框架demo文章來源地址http://www.zghlxwxcb.cn/news/detail-412906.html

到了這里,關(guān)于微前端--qiankun原理概述的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • qiankun 微前端實例化使用

    qiankun 微前端實例化使用

    一、qiankun使用場景 1.?簡介:qiankun是在single-spa的基礎(chǔ)上實現(xiàn)的,可以保證各個項目獨立使用,也可以集成使用。各系統(tǒng)之間不受技術(shù)棧的限制,集成使用也能保證各樣式和全局變量的隔離。 模塊的插拔式使用,當(dāng)公司項目集是一個大系統(tǒng)下包含多個子系統(tǒng)或者模塊時,可以

    2024年02月04日
    瀏覽(20)
  • 微前端框架篇一,了解qiankun

    微前端框架篇一,了解qiankun

    微前端是一種將復(fù)雜單體應(yīng)用拆分為多個小型獨立前端應(yīng)用,然后將這些小應(yīng)用按需加載并集成到主應(yīng)用的技術(shù)方案。 每個子應(yīng)用都有自己的 JavaScript 和 CSS 代碼。 單頁Web應(yīng)用(single page web application,SPA),就是只有一張Web頁面的應(yīng)用。所有頁面都來回在這張頁面上切換。

    2024年01月22日
    瀏覽(63)
  • qiankun原理解析

    qiankun 是一個基于 single-spa 框架實現(xiàn)的一個微前端框架, single-spa 雖然實現(xiàn)了路由劫持和應(yīng)用加載,但是沒有實現(xiàn)樣式隔離和js隔離,并不是一個完善的微前端框架; qiankun 在實現(xiàn)了路由劫持和應(yīng)用加載的同時還實現(xiàn)了沙箱和import-html-entry 基于 single-spa 封裝了更加開箱即用的a

    2024年02月16日
    瀏覽(14)
  • vue項目集成乾坤(qiankun)微前端

    npm i qiankun -S qiankun文檔官方地址:https://qiankun.umijs.org/zh/guide 新建一個.vue文件 配置路由地址

    2024年02月05日
    瀏覽(25)
  • 微前端:qiankun的五種通信方式

    微前端:qiankun的五種通信方式

    今天盤點一下 qiankun 父子應(yīng)用的通信方式都有哪些,我發(fā)現(xiàn)了 5 種。 1、localStorage/sessionStorage 2、通過路由參數(shù)共享 3、官方提供的 props 4、官方提供的 actions 5、使用vuex或redux管理狀態(tài),通過shared分享 接下來我們一個一個進(jìn)行說明 有人說這個方案必須主應(yīng)用和子應(yīng)用是同一個

    2024年03月21日
    瀏覽(27)
  • 【qiankun】前端微服務(wù)架構(gòu)踩坑記錄

    【qiankun】前端微服務(wù)架構(gòu)踩坑記錄

    目錄 前言 1.Cannot GET /cooperation/board 場景: 分析 解決 2.Invalid options in vue.config.js:\\\"css.requireModuleExtension\\\" is not allowed 原因 解決 3.less版本升級導(dǎo)致除法寫法未轉(zhuǎn)換 原因 解決 4.主子應(yīng)用樣式隔離 場景 解決 5.在webpack5中配置output報錯 報錯如下 ?原因 ?解決 6.微應(yīng)用部署后報錯 場景

    2024年02月15日
    瀏覽(21)
  • 【qiankun】微前端在項目中的具體使用

    在主應(yīng)用的入口文件main.ts中,引入qiankun的注冊方法: 創(chuàng)建一個數(shù)組,用于配置子應(yīng)用的相關(guān)信息。每個子應(yīng)用都需要提供一個名稱、入口URL、掛載點和一些可選配置項。例如: 調(diào)用 registerMicroApps 方法,注冊子應(yīng)用: 調(diào)用 start 方法,啟動qiankun微前端應(yīng)用: 在主應(yīng)用的根文

    2024年02月12日
    瀏覽(16)
  • 微前端架構(gòu)-qiankun在vue3的應(yīng)用

    微前端架構(gòu)-qiankun在vue3的應(yīng)用

    本文章介紹了qiankun在vue3的應(yīng)用,其中子應(yīng)用有vue2、vue3、react、angular qiankun 是一個基于 single-spa 的微前端實現(xiàn)庫,旨在幫助大家能更簡單、無痛的構(gòu)建一個生產(chǎn)可用微前端架構(gòu)系統(tǒng)。 其他幾款([single-spa]、[micro-app]、[百度emp]]) 使用 iframe 整合系統(tǒng)時,假設(shè)我們有系統(tǒng) A, 當(dāng)

    2023年04月08日
    瀏覽(22)
  • 微前端qiankun架構(gòu) (基于vue2實現(xiàn))使用教程

    微前端qiankun架構(gòu) (基于vue2實現(xiàn))使用教程

    node -- 16+ @vue/cli -- 5+ 創(chuàng)建文件夾qiankun-test。 使用vue腳手架創(chuàng)建主應(yīng)用main和子應(yīng)用dev ? 安裝 qiankun: 使用qiankun: 在 utils 內(nèi)創(chuàng)建 微應(yīng)用文件夾 microApp,在該文件夾內(nèi)創(chuàng)建微應(yīng)用出口文件 index.js,路由文件 microAppRouter,配置函數(shù)文件 microAppSetting。 路由文件 microAppRouter 配置函數(shù)文件

    2023年04月19日
    瀏覽(26)
  • 基于vue3+webpack5+qiankun實現(xiàn)微前端

    基于vue3+webpack5+qiankun實現(xiàn)微前端

    一 主應(yīng)用改造(又稱基座改造) 1 在主應(yīng)用中安裝qiankun(npm i qiankun -S) ?2 在src下新建micro-app.js文件,用于存放所有子應(yīng)用。 ?3 改造vue.config.js,允許跨域訪問子應(yīng)用頁面 ?4 改造main.js ? 5 在App.vue中寫響應(yīng)跳轉(zhuǎn)子應(yīng)用(根據(jù)自己的項目找對應(yīng)位置寫,不局限于App.vue) ? 需要注

    2024年02月13日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包