為什么需要學(xué)習(xí)微前端吼渡?我們通過3w(what,why恩溅,how)的方式來講解微前端
1隔箍、什么是微前端?
image.png
微前端就是將不同的功能按照不同的維度拆分成多個子應(yīng)用脚乡,通過主應(yīng)用來加載這些子應(yīng)用
微前端的核心在于拆蜒滩,拆完后再合。
2奶稠、為什么去使用微前端俯艰?
- 不同團(tuán)隊開發(fā)同一個應(yīng)用技術(shù)棧不同怎么破?
- 希望每個團(tuán)隊都可以獨立開發(fā)锌订,獨立部署怎么破竹握?
- 項目中還需要老的應(yīng)用代碼怎么破?
我們是不是可以將一個應(yīng)用劃分成若干個子應(yīng)用辆飘,將子應(yīng)用打包成一個個的lib啦辐,當(dāng)路徑切換時加載不同的子應(yīng)用,這樣每個子應(yīng)用都是獨立的蜈项,技術(shù)棧也不用做限制了芹关!從而解決了前端協(xié)同開發(fā)問題
3、怎么落地微前端战得?
類似操作系統(tǒng)充边,會安裝很多應(yīng)用,每點一個功能就起一個應(yīng)用常侦。微前端相當(dāng)于把前端頁面用多個功能和服務(wù)進(jìn)行安裝浇冰。
2018年 Single-SPA 誕生了,Single-SPA 是一個用于微前端服務(wù)化的JS前端解決方案(本身沒有出來樣式隔離聋亡,js執(zhí)行隔離)實現(xiàn)了路由劫持和應(yīng)用加載
2019年 qianku 基于Single-SPA肘习,提供了開箱即用的API(Single-SPA + sandbox + import-html-entry)做到了 技術(shù)棧無關(guān)、并且接入簡單(像iframe 一樣簡單)
總結(jié): 子應(yīng)用可以獨立構(gòu)建坡倔,運行時動態(tài)加載主子應(yīng)用漂佩,完全解耦脖含,技術(shù)棧無關(guān),靠的是協(xié)議接入(子應(yīng)用必須導(dǎo)出bootstrap投蝉、mount养葵、unmount方法)
nginx解決、iframe解決
這不就是iframe嗎瘩缆?
如果使用iframe中的子應(yīng)用切換路由時关拒,用戶刷新頁面之前的數(shù)據(jù)就丟了
應(yīng)用通信:
- 基于URL來進(jìn)行數(shù)據(jù)傳遞,但是傳遞消息能力弱
- 基于CustomEvent實現(xiàn)通信
- 基于props主子應(yīng)用間通信
- 使用全局變量
- Redux進(jìn)行通信
公共依賴:
- CDN extenals
- wepack 聯(lián)邦模塊