微前端系列(十三)
微前端選 CSS 方案要格外小心,因為 CSS 不分作用域。這篇比較 CSS Module、Component Selector、CSS in JS、Atomic CSS,也分出全域、Hash、Document 三種作用域模式。
共 19 篇
微前端選 CSS 方案要格外小心,因為 CSS 不分作用域。這篇比較 CSS Module、Component Selector、CSS in JS、Atomic CSS,也分出全域、Hash、Document 三種作用域模式。
browser history 在整個應用中是唯一的,多個微應用各開路由器就會打架。解法還是單向資料流:微前端應用不要直接操作路由器。
History Router、Locale、Browser Storage 都是單例狀態,在微前端裡最容易發生循環修改與資料流混亂。同步的狀態修改我最推薦用 Flux 單向資料流管理。
前端有流量成本,所以「共用」比微服務更需要煩惱。Module Federation 目前幾乎沒有更完善的替代方案,代價是模組化會被綁在特定的 chunk system。
微前端的跨應用溝通沒有 import 可以用。但所有微應用都跑在同一個 global 底下,這篇講三種做法:套件共享、瀏覽器事件機制、後端 WebSocket。
很多人把微前端和 Module Federation 劃上等號,但 MF 不是必要的,也不是 Framework,它只是一種 bundle 的概念,用來解決版本管理與模組共享。
接著就是以 Component 化的角度來看看微前端的實作方法。 iframe WebComponent Frontend Framework Component (react, vue, angular) iframe 這是最古老最穩定的
三種服務端解決方案的優劣:xhr/fetch 插 script 上下限最大、module-federation 完整但綁打包工具、微前端框架最省力卻失去微調能力。
我為什麼開始玩微前端?公司有多個前端框架並行、產品要架在 Local 且組態多變、還希望能給第三方動態掛載功能——這三個原因把我推上這條路。
微前端要面對的五個核心問題:應用間溝通、模組共用、全域單例狀態、樣式管理、CI/CD。這篇逐一說明每個問題到底出在哪。
實施微前端的主流方案:Application 層級有 xhr/fetch 插 script、module-federation、微前端框架;Component 層級有 iframe、WebComponent、框架元件。
微前端的好處是解耦、拆分職責、CI/CD 更快、沒有超大專案的維護壓力。壞處也很實在,這篇把優劣一起攤開來分析。
微前端、微應用、前端微服務講的是同一件事。這篇是系列開場,也澄清一個常見誤會:把服務切成 npm package 並不算微前端。
微前端就是把微服務的概念套進前端。這篇講什麼時候該考慮導入:專案大到影響編譯時間、跨部門共同維護、需要多框架共存,以及第一個麻煩點——溝通。
路由器看似簡單其實很複雜。popstate 只監聽得到 forward、back、go,pushState 和 replaceState 是聽不到的。解法還是回到單向資料流。
正式接到 CTO 的需求,要從零著手開發一套自己的微前端框架,這篇是動工前留下的紀錄。
微前端目前炫技成分居多,生態系極不成熟。後端拆微服務有伺服器壓力分配的必要性,微前端沒有這種優勢,反而大幅提高溝通與程式碼複雜度。
Module Federation 讓微前端的各應用有效共用函式庫,但它是「同版本共享」而非多版本共存。這篇講共享機制的維護、權重規則與它帶來的打包代價。
做微前端半年,大部分時間都花在架構和打包上。這篇談踩坑最深的 vite、微前端為什麼比微服務普及得慢,以及它需要的那片知識海。