微前端是一種類似于后端微服務的架構,它將微服務的理念應用于瀏覽器端,即將單頁面前端應用由單一的單體應用轉變?yōu)槎鄠€小型前端應用聚合為一的應用。
它不是單純的前端框架或者工具,而是一套架構體系,最早在2016年底被提出,最近兩年才流行起來。
采用微前端的好處
在功能越來越多,依賴越來越負責的大型前端系統中,如果在項目初期沒有很好地考慮后期兼容的靈活性、擴展性以及彈性,很容易出現項目難以維護或者誰都不想碰的尷尬場面,所以初期的設計很重要。
采用微前端,可以將新、舊技術構造的前端項目完美融合到一起,彼此構建,發(fā)布,運行等不受干擾。
微前端的優(yōu)勢:
- 獨立性:不同業(yè)務應用獨立開發(fā)、獨立部署、增量更新;
- 技術棧無關:在同一頁面上使用多個前端框架而不用刷新頁面 (Vue,React等);
- 運行時隔離共享:不同業(yè)務子應用之間可以共享數據以及進行通信,但又能做到 js 和 css 互不影響。
關于single-spa
Single-spa 是一個將多個單頁面應用聚合為一個整體應用的 javascript 微前端框架。
https://zh-hans.single-spa.js.org/
Single-spa 從現代框架組件生命周期中獲得靈感,將生命周期應用于整個應用程序。 它脫胎于 Canopy 使用 React + React-router 替換 AngularJS + ui-router 的思考,避免應用程序被束縛。
現在 single-spa 幾乎支持任何框架,它是很多微前端框架的基石,比如螞蟻金服基于single-spa 的微前端解決方案qiankun。
single-spa 的原理:它相當于一個狀態(tài)機 ,框架只負責維護各個子應用的狀態(tài),其中怎么加載子應用、掛載子應用、卸載子應用等,都由子應用自身控制,從而保持很好的擴展性。
關于qiankun
它主要基于 single-spa 封裝了非常多的能力,把我們在構建微前端系統中遇到的一些問題,如樣式隔離、沙箱、預加載等等這些你需要的能力全部內置到了 qiankun 里面,所以這是一個比較完備的微前端解決方案。
特性
- 基于 single-spa 封裝,提供了更加開箱即用的 API。
- 技術棧無關,任意技術棧的應用均可 使用/接入,不論是 React/Vue/Angular/JQuery 還是其他等框架。
- HTML Entry 接入方式,讓你接入微應用像使用 iframe 一樣簡單。
- 樣式隔離,確保微應用之間樣式互相不干擾。
- JS 沙箱,確保微應用之間 全局變量/事件 不沖突。
- 資源預加載,在瀏覽器空閑時間預加載未打開的微應用資源,加速微應用打開速度。