qiankun + vue 中使用 keep-alive 維持微應(yīng)用實例

image.png

背景

qiankun + vue2.6 + element-ui, 通過標(biāo)簽卻換不同功能, 當(dāng)前一個子應(yīng)用下可以對應(yīng)多個功能, 及 存在統(tǒng)一應(yīng)用下切換,跨應(yīng)用切換。 當(dāng)前已通過路由嵌套實現(xiàn)子應(yīng)用獨立管理各自路由,主應(yīng)用負(fù)責(zé)跨應(yīng)該路由切換。子應(yīng)用使用手動加載。

目的

  • 同時維持多個子應(yīng)用實例
  • 應(yīng)用切換不丟失
  • 加載失敗時,可二次重載
  • 需要同時維持多個子應(yīng)用實例
  • 子應(yīng)用加載成功后切換不丟失
  • 子應(yīng)用加載失敗后可重載

問題

  • 手動加載子應(yīng)用失敗后,二次加載乾坤未重載的應(yīng)用
  • 子應(yīng)用切換后將丟失,造成多次需要重復(fù)加載
  • 初始加載時間過長

主要的目的是盡量減少子應(yīng)用的二次加載,避免資源的重復(fù)請求.

方案

觸發(fā)重載

image.png

加載失敗后,我們需要用戶再次開啟功能時,進行重載。 而qiankun當(dāng)前對統(tǒng)一子應(yīng)用做的緩存處理,首先需要觸發(fā)qiankun 重載。參考
這里在構(gòu)建配置文件時,為請求地址添加一個更新編號, 當(dāng)需要重載時,更新該編號, 再次手動加載時,將觸發(fā)子應(yīng)用的二次加載.

維持實例

這里通過keep-alive 保存我們子應(yīng)用實例。需要解決的問題是,當(dāng)應(yīng)用加載失敗時, 我們需要通知keep-alive 排除之前保存的實例對象。 所以需要設(shè)置 exclude 屬性. 加載子應(yīng)用時,監(jiān)聽加載結(jié)果。成功: exclude 組件名出棧, 失?。篹xclude 組件名入棧.


image.png

image.png

image.png

需要注意的是, keep-alive 是通過組件名稱判斷緩存的, 所以在加載前,我們需要先為每個子應(yīng)用分配獨立的組件并注冊到容器組件中.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 手動控制子應(yīng)用加載 qiankun默認(rèn)提供可配置的引用加載方式, registerMicroApps 。這種方...
    copyLeft閱讀 7,151評論 6 4
  • 理論基礎(chǔ) js中數(shù)組常用的方法有哪些? Array.map():將數(shù)組中的每個元素調(diào)用一個提供的函數(shù),結(jié)果作為一個...
    _Y_X_閱讀 799評論 0 1
  • 轉(zhuǎn)載自:https://blog.csdn.net/Missbelover/article/details/882...
    天字一等閱讀 1,653評論 0 10
  • 1.移動組件命令位置:建模環(huán)境→裝配→組件位置→移動組件 快捷鍵:無 要移動的組件: 選擇組件:選擇要移動的...
    bfe6b8d07462閱讀 531評論 0 0
  • 在第一版的基礎(chǔ)上進行了優(yōu)化,新增一些面試題/知識點,對一些知識點進行更加深入的描述。 一、對于MVVM的理解? M...
    DreamofLimb閱讀 1,456評論 0 0

友情鏈接更多精彩內(nèi)容