微前端系列(九)
微前端的溝通
在微前端中,跨應用溝通是一個非常麻煩的事,你沒辦法像平時習慣的一個 “import” 語法來傳遞共用。那到底在微前端怎麼做跨應用溝通呢?
其實我們可以知道,所有微前端其實都是運行在同一個 global 之下,所以只要在一樣的 global 就一定可以被溝通。
那這個 global 是誰?凡是在這個 website 下,singleton 的所有對象都可以是溝通媒介。舉凡,同一個 backend service 、同一個 window object、被定義為 singleton 的 object 都符合這個條件。
那有沒有具體方法呢?
其實我可以舉幾個常見的手法來說。
- 使用套件來協助溝通,這樣不需要維護複雜的機制。常見的方法是使用 module federation 共用同一包狀態管理器,由它的內部機制來溝通。
- 使用 browser 機制溝通。通過 EventTarget 來做事件派發,可以向 window, document … 等等物件來進行溝通。或是使用 broadcast channel, message event, service worker 等等方式觸發。搭配 localStorage, sessionStorage, cookie, … 等等方式進行資料傳遞。
- 使用後端串接 web socket 來溝通,以後端作為溝通橋樑,將資料存在後端,並使用 ws 進行事件觸發。
其實說穿了,每個方法都很像,其實原理顯而易見。如果是你,你用什麼方式呢?