前兩天拉庶,我們報道了 npm?2018 年的第一個 JavaScript 現(xiàn)狀報告的第一部分缅叠,該部分講述了 2017 前端框架的現(xiàn)狀唧喉,我們也從中看到在前端框架領(lǐng)域 React 的主導(dǎo)地位困檩。
今天绳锅,npm 發(fā)布了報告的第二部分?—— 對強(qiáng)大的 React 的生態(tài)系統(tǒng)進(jìn)行了分析仇让。
來看看與 React 有關(guān)的軟件包的生態(tài)系統(tǒng)典奉。
剛開始?Facebook 構(gòu)建 React 時,許多這些軟件包來自開源社區(qū)的第三方丧叽。這些軟件包使用 React 并為其補(bǔ)充功能以提供完整的應(yīng)用程序體驗卫玖。它們中有幾個都提供了類似的功能,彼此競爭踊淳。
React Router
豐富的 Web 應(yīng)用程序都有一個共同特點假瞬,那就是提供多個“路由”,這些“路由”本質(zhì)上是不同的功能塊迂尝,在瀏覽器中表示為單獨的 URL脱茉。
React 不需要為簡單的應(yīng)用程序使用路由,路由有時會用在桌面和移動應(yīng)用程序等環(huán)境中垄开,而它并不是必需的琴许。因此,React Router 雖然是最受歡迎的 React 應(yīng)用程序路由解決方案溉躲,但使用量卻只有 React 本身的一半榜田。
這是我們從 React 學(xué)到的一部分:通過將自己限制在一個明確定義的問題領(lǐng)域并具有明確定義的接口,它使其本身可以應(yīng)用于比原始設(shè)計者更廣泛的應(yīng)用范圍锻梳。這個決定增加了開發(fā)者在 React 上的使用和工作頻率箭券,進(jìn)一步改進(jìn)了 React,并擴(kuò)展了它的生態(tài)系統(tǒng)疑枯,創(chuàng)造了一個有益的循環(huán)辩块。這是一個令人驚訝的結(jié)果,因為作為一個部分的解決方案神汹,React 本質(zhì)上不如 Ember 和 Angular 這樣的完整框架使用起來方便庆捺。
Flux
在一個完整應(yīng)用程序中,React 未解決的一個部分是數(shù)據(jù)層屁魏。當(dāng)年 Facebook 推出 React 時滔以,還推出了Flux(一種管理應(yīng)用程序中的狀態(tài)的方法)和 GraphQL(一種用于在客戶端和服務(wù)器之間進(jìn)行通信的系統(tǒng))。不過兩者都不如 React 本身流行氓拼。
Flux 在 React 發(fā)布之后不久就被推出你画,直到 2015 年中才得到普及抵碟,但是 2015 年中期之后,它們的軌跡發(fā)生了很大的分化坏匪,F(xiàn)lux 的受歡迎程度在緩慢下滑拟逮。
Redux
Flux 沒落的一個解釋是 Redux 的崛起。針對應(yīng)用程序适滓,Redux 和 Flux 提供了相同的功能敦迄,但給開發(fā)者帶去了不同的體驗,Redux 于 2015 年中期推出凭迹,迅速發(fā)展并超過了 Flux罚屋,而 Flux 則在同一時間開始下滑。
Redux 現(xiàn)在幾乎和 React Router 一樣流行嗅绸,而且兩者緊密地相互追隨脾猛,并且越來越受歡迎。這表明 Redux 已經(jīng)取代 Flux鱼鸠,成為 React 網(wǎng)絡(luò)應(yīng)用程序的首選狀態(tài)管理系統(tǒng)猛拴。
MobX
MobX 于 2016 年年中推出,是 Flux 和 Redux 的競爭對手蚀狰。目前它正在快速增長愉昆,但仍然是這個領(lǐng)域的“萌新”,不過值得關(guān)注麻蹋。
RxJS
React 生態(tài)中很奇怪的一個項目 RxJS撼唾,它是另一個與 Flux 和 Redux 競爭的狀態(tài)管理組件。RxJS 的流行不容易追蹤和解釋哥蔚。首先,它現(xiàn)存有兩個版本蛛蒙,一個是傳統(tǒng)版本rx糙箍,一個是當(dāng)前版本rxjs。這兩個下載量都很大牵祟,雖然rx在下降深夯,而rxjs在增長。
RxJS 的使用似乎是作為其他項目的子依賴诺苹,特別是 Angular CLI 的驅(qū)動咕晋。這意味著所有使用 Angular 的驅(qū)動器都使用相同的 RxJS。它也被合并到其他一些流行的命令行工具中收奔。
GraphQL
雖然它和 React 一樣掌呜,在 Facebook 內(nèi)部開發(fā)并同時發(fā)布,但 GraphQL 與 React 并沒有內(nèi)在的聯(lián)系坪哄;它只是 Web 客戶端查詢服務(wù)器數(shù)據(jù)的一種方式。它通過名為 Relay 和 Apollo 這兩個具有競爭性的庫獲得了流行诗祸,這兩個庫提供了一個 Web 應(yīng)用程序乾戏,用于便捷生成 GraphQL 和管理數(shù)據(jù)流。
Relay 發(fā)布得比較早禁悠,并且正在增長,但是已經(jīng)被半年后發(fā)布的 Apollo 超越兑宇,Apollo 已經(jīng)越來越受歡迎碍侦,并且增長速度明顯加快。雖然 Apollo 的絕對數(shù)量還很小隶糕,但是它的增長軌跡值得深入挖掘瓷产。
React 生態(tài)系統(tǒng)總結(jié)
再看看過去 12 個月的增長,我們可以看到相關(guān)軟件包在 React 生態(tài)系統(tǒng)中的相對位置若厚。趨勢也變得清晰:
Apollo?正在快速增長
Flux 在慢慢沒落
React Router 和 Redux 都非常受歡迎拦英,并且在使用中緊密聯(lián)系,所以我們將它們放在了一起
MobX 有著良好的增長测秸,但尚未能挑戰(zhàn) Redux 的地位
React 本身就十分龐大