微前端(Micro-Frontends)是一種類似於微服務的架構,它將微服務的理念應用於瀏覽器端,即將 Web 應用由單一的單體應用轉變為多個小型前端應用聚合為一的應用。各個前端應用還可以獨立運行、獨立開發、獨立部署。微前端不是單純的前端框架或者工具,而是一套架構體系。
1.可以把它理解成一個Iframe,就像這樣。。。
但是他不是一個iframe
為什么這么說,因為iframe有其局限性。
- iframe 最大的特性就是提供了瀏覽器原生的硬隔離方案,不論是樣式隔離、js隔離這類問題統統都能被完美解決。但他的最大問題也在於他的隔離性無法被突破,導致應用間上下文無法被共享,隨之帶來的開發體驗、產品體驗的問題。
- url 不同步。瀏覽器刷新 iframe url 狀態丟失、后退前進按鈕無法使用。
- UI 不同步,DOM 結構不共享。想象一下屏幕右下角 1/4 的 iframe 里來一個帶遮罩層的彈框,同時我們要求這個彈框要瀏覽器居中顯示,還要瀏覽器 resize 時自動居中..
- 全局上下文完全隔離,內存變量不共享。iframe 內外系統的通信、數據同步等需求,主應用的 cookie 要透傳到根域名都不同的子應用中實現免登效果。
- 慢。每次子應用進入都是一次瀏覽器上下文重建、資源重新加載的過程。
why not a iframe 傳送門
如果想繼續入坑的話,不妨了解一下
Qiankun (Single Spa) qiankun官方文檔傳送門
Webpack5 / Module Federation
這是小紅書B端ARK應用的設計理念,root是基座,layout整體布局
總結
- 微前端並不能減少資源體積,反而會增加 Webpack 5 Module Federation 微前端可以提高 Ark 開發體驗
優點:
- 獨立開發子應用 新的子應用體積小啟動快。 子應用可以使用新的特性
缺點:
- 需要手動在 root 里增加配置 需要 appcenter 配置新的應用 需要 設置新的 路由解析
如果沒有確切的需求,還是不用增加子應用