自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊微前端那些事兒

開發(fā) 前端
無論是微前端還是微服務(wù),本質(zhì)上都是為了讓項(xiàng)目開發(fā)迭代變得更快,如果因?yàn)椴捎昧四硞€(gè)技術(shù)而導(dǎo)致項(xiàng)目本身出現(xiàn)了各種問題,我們就是在本末倒置。

什么是微前端

根據(jù)Micro-Frontend 官網(wǎng)的定義,微前端是將網(wǎng)站或者 web 應(yīng)用程序視為由獨(dú)立團(tuán)隊(duì)擁有的功能組合。這么說你可能會(huì)感到難以理解,通俗地講,微前端就是各個(gè)倉庫組件獨(dú)立,彼此可以獨(dú)立開發(fā)和部署,它們彼此之間互不影響,通過通信進(jìn)行溝通,它們整體對(duì)外提供一個(gè)完整的服務(wù)。

提到微前端,就不得不提微服務(wù),可以說很多前端的想法或者邏輯概念,都是從后端演變出來的,曾經(jīng)有人開玩笑地說,正是從那些原來做后端的人開始轉(zhuǎn)向前端之后,前端就開始變得越來越復(fù)雜了。

微服務(wù)是一種開發(fā)軟件的架構(gòu)和組織方法,其中軟件由通過明確定義的 API 進(jìn)行通信的小型獨(dú)立服務(wù)組成。這些服務(wù)由各個(gè)小型獨(dú)立團(tuán)隊(duì)負(fù)責(zé)。

微服務(wù)架構(gòu)使應(yīng)用程序更易于擴(kuò)展和更快地開發(fā),從而加速創(chuàng)新并縮短新功能的上市時(shí)間。

為什么要微前端

之前我們的web應(yīng)用都屬于胖服務(wù)器,也就說所有處理都有服務(wù)器進(jìn)行,而前端只是負(fù)責(zé)簡單的展示,而現(xiàn)在的情況是,服務(wù)器處理的內(nèi)容很少,很多時(shí)候都需要前端進(jìn)行各種計(jì)算和處理。在這種情況下,就需要我們采用微前端來加快前端產(chǎn)品的開發(fā)和迭代。

微前端優(yōu)點(diǎn)

  • 更容易和更快的功能開發(fā)。
  • 獨(dú)立部署;
  • 跨職能團(tuán)隊(duì);
  • 平行發(fā)展;
  • 松耦合;
  • 明確的合同;
  • 更容易添加、更改或刪除任何代碼;
  • 更容易測(cè)試。

構(gòu)建微前端應(yīng)用程序有不同的方法,但主要我們可以將它們分為四個(gè)重要方面:

  • 路由微前端
  • 組成微前端
  • 微前端通信
  • 定義微前端

微前端的組合

微前端由客戶端,服務(wù)器端,邊緣測(cè)組合而成。

  • 客戶端:所有微前端都是在構(gòu)建時(shí)組合和捆綁的。

  • 服務(wù)器端:最初加載一個(gè)容器,微前端在 URL 更改時(shí)延遲加載:內(nèi)容由服務(wù)器返回。
  • 邊緣側(cè):視圖在 CDN 級(jí)別組裝。許多 CDN 提供商為我們提供了使用基于 XML 的標(biāo)記語言的選項(xiàng),稱為 Edge Side Includes (ESI)。

微前端的路由

路由主要取決于組合的類型。在服務(wù)器端組合中,路由是通過服務(wù)器端完成的,因?yàn)檎麄€(gè)應(yīng)用程序邏輯都在服務(wù)器上。在邊緣組合中,CDN 是突出的參與者,因?yàn)樗ㄟ^基于請(qǐng)求的頁面 URL 在邊緣級(jí)別通過嵌入將它們組裝在一起來為微前端提供服務(wù)。

在客戶端組合中,微前端是根據(jù)需求和應(yīng)用程序的當(dāng)前狀態(tài)加載的。例如,如果用戶即將認(rèn)證,則會(huì)加載認(rèn)證微前端或加載登陸頁面。

除了上述路由技術(shù),我們還可以根據(jù)需要使用智能路由來配置應(yīng)用程序。例如,如果我們使用將微前端加載為單頁應(yīng)用程序的應(yīng)用程序外殼。然后,app shell 是所有路由邏輯的中心命令。app shell 將管理所有路由邏輯,然后根據(jù)其配置決定加載哪個(gè)微前端。當(dāng)我們有復(fù)雜的路由時(shí),這是最好的方法之一,因?yàn)橹挥幸粋€(gè)故障點(diǎn)或配置。

微前端之間的通信

與路由一樣,微前端之間的通信也取決于組合的類型。當(dāng)我們?cè)谙嗤虿煌撁嫔鲜褂枚鄠€(gè)微前端時(shí),我們總是希望可以和其他微前端用戶交互。

不同微前端之間的溝通可能不是那么微不足道,尤其是當(dāng)有不同的團(tuán)隊(duì)構(gòu)建它們時(shí)。為了維持獨(dú)立部署的原則,我們需要確保每個(gè)微前端都不知道其他微前端,即使它們是水平分割的并且是同一頁面的一部分。

在這種情況下,我們有幾個(gè)選項(xiàng)可以更好地溝通。

我們可以在前端開發(fā)中注入事件總線機(jī)制,允許解耦的組件通過在同一視圖中發(fā)出事件或總線和不同的微前端來相互通信。如果組件感興趣,它們可以監(jiān)聽這些事件并做出反應(yīng)。

我們可以通過添加一個(gè)容器來實(shí)例化事件總線并將其注入頁面的所有微前端來創(chuàng)建它。

或者,我們也可以使用自定義事件。這些是具有自定義負(fù)載的自定義事件。有效負(fù)載包括標(biāo)識(shí)事件的字符串和為事件自定義的可選對(duì)象。這些自定義事件通過一個(gè)常見的類似對(duì)象的窗口進(jìn)行調(diào)度,以便所有微前端都可以使用它。

定義微前端

在微前端我們可以使用不同的技術(shù)棧,我們可以將vue和react進(jìn)行結(jié)合使用。其中可以單獨(dú)為vue構(gòu)建自己的single-spa,為react構(gòu)建自己的single-spa,最后兩者通過webpack共同引入使用,并且兩者也可以獨(dú)立訪問。具體的代碼在github上有很多實(shí)例。

結(jié)論

無論是微前端還是微服務(wù),本質(zhì)上都是為了讓項(xiàng)目開發(fā)迭代變得更快,如果因?yàn)椴捎昧四硞€(gè)技術(shù)而導(dǎo)致項(xiàng)目本身出現(xiàn)了各種問題,我們就是在本末倒置。

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2021-06-02 08:33:31

TPCTPC-H系統(tǒng)

2021-05-10 08:58:09

Harbor架構(gòu)Registry 服務(wù)

2013-01-11 16:05:41

求職招聘

2022-04-14 11:50:39

函數(shù)組件hook

2022-06-02 08:42:15

Redis數(shù)據(jù)庫

2021-01-13 11:11:29

TCP連接耗時(shí)網(wǎng)絡(luò)協(xié)議

2021-07-11 06:46:17

前端設(shè)計(jì)模式

2018-04-24 09:05:09

容器存儲(chǔ)接口

2020-09-17 13:43:03

等保2.0網(wǎng)絡(luò)安全漏洞

2021-11-11 23:16:33

前端數(shù)據(jù)格式Web

2021-03-02 11:06:17

工業(yè)互聯(lián)網(wǎng)

2019-10-30 14:31:47

Vue 3.0數(shù)組響應(yīng)

2022-03-03 08:01:41

阻塞與非阻塞同步與異步Netty

2016-08-31 10:55:30

螞蟻金服前端

2011-02-25 14:35:00

2018-09-26 06:50:19

2022-02-08 17:39:04

MySQL服務(wù)器存儲(chǔ)

2013-12-26 14:23:03

定位系統(tǒng)GPS監(jiān)測(cè)

2021-06-09 13:28:40

密碼安全身份認(rèn)證數(shù)據(jù)安全

2017-06-02 17:15:20

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)