微前端的主要挑戰是創建快速響應的客戶端。我們絕不能忽視這樣一個事實,即前端生活在一個內存、CPU和網絡有限的環境中,否則我們可能會以緩慢的UI告終。
快速的用戶界面對產品的成功至關重要。最近的一項調查指出,“1秒內加載的網站的轉化率是5秒內加載網站的3倍”。用戶每等一秒鐘,錢就會被扔出窗外。
除了微服務面臨的所有挑戰之外,微前端設計還帶來了一些問題:
l 隔離:每個團隊的代碼最終必須在同一瀏覽器上共存。我們必須謹慎地隔離單獨的模塊,以避免代碼或風格的沖突。
l 共享資源:為了避免重復和保持前端精簡,組件應該盡可能共享資源和庫,這可能會產生不必要的耦合。
l 易接近:嚴重依賴JavaScript來呈現頁面會對可訪問性產生負面影響。
l 式樣:當UI由不同團隊開發的組件組成時,保持一致的外觀會更加復雜。小的文體不一致會讓人感覺不和諧。
協調:有了這么多可移動的部分,API需要非常明確和穩定。團隊必須協調微前端中不同組件之間以及與后端微服務之間的通信方式。
微服務是構建可以獨立工作的小型自治團隊的一種流行方式。不幸的是,就其本質而言,微服務只能在后端工作。即使使用最好的微服務架構,前端開發仍然需要高度的相互依賴,這將引入耦合和通信開銷,從而降低每個人的速度。