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