前兩天,我們報道了 npm?2018 年的第一個 JavaScript 現狀報告的第一部分,該部分講述了 2017 前端框架的現狀,我們也從中看到在前端框架領域 React 的主導地位。
今天,npm 發布了報告的第二部分?—— 對強大的 React 的生態系統進行了分析。
來看看與 React 有關的軟件包的生態系統。
剛開始?Facebook 構建 React 時,許多這些軟件包來自開源社區的第三方。這些軟件包使用 React 并為其補充功能以提供完整的應用程序體驗。它們中有幾個都提供了類似的功能,彼此競爭。
React Router
豐富的 Web 應用程序都有一個共同特點,那就是提供多個“路由”,這些“路由”本質上是不同的功能塊,在瀏覽器中表示為單獨的 URL。
React 不需要為簡單的應用程序使用路由,路由有時會用在桌面和移動應用程序等環境中,而它并不是必需的。因此,React Router 雖然是最受歡迎的 React 應用程序路由解決方案,但使用量卻只有 React 本身的一半。
這是我們從 React 學到的一部分:通過將自己限制在一個明確定義的問題領域并具有明確定義的接口,它使其本身可以應用于比原始設計者更廣泛的應用范圍。這個決定增加了開發者在 React 上的使用和工作頻率,進一步改進了 React,并擴展了它的生態系統,創造了一個有益的循環。這是一個令人驚訝的結果,因為作為一個部分的解決方案,React 本質上不如 Ember 和 Angular 這樣的完整框架使用起來方便。
Flux
在一個完整應用程序中,React 未解決的一個部分是數據層。當年 Facebook 推出 React 時,還推出了Flux(一種管理應用程序中的狀態的方法)和 GraphQL(一種用于在客戶端和服務器之間進行通信的系統)。不過兩者都不如 React 本身流行。
Flux 在 React 發布之后不久就被推出,直到 2015 年中才得到普及,但是 2015 年中期之后,它們的軌跡發生了很大的分化,Flux 的受歡迎程度在緩慢下滑。
Redux
Flux 沒落的一個解釋是 Redux 的崛起。針對應用程序,Redux 和 Flux 提供了相同的功能,但給開發者帶去了不同的體驗,Redux 于 2015 年中期推出,迅速發展并超過了 Flux,而 Flux 則在同一時間開始下滑。
Redux 現在幾乎和 React Router 一樣流行,而且兩者緊密地相互追隨,并且越來越受歡迎。這表明 Redux 已經取代 Flux,成為 React 網絡應用程序的首選狀態管理系統。
MobX
MobX 于 2016 年年中推出,是 Flux 和 Redux 的競爭對手。目前它正在快速增長,但仍然是這個領域的“萌新”,不過值得關注。
RxJS
React 生態中很奇怪的一個項目 RxJS,它是另一個與 Flux 和 Redux 競爭的狀態管理組件。RxJS 的流行不容易追蹤和解釋。首先,它現存有兩個版本,一個是傳統版本rx,一個是當前版本rxjs。這兩個下載量都很大,雖然rx在下降,而rxjs在增長。
RxJS 的使用似乎是作為其他項目的子依賴,特別是 Angular CLI 的驅動。這意味著所有使用 Angular 的驅動器都使用相同的 RxJS。它也被合并到其他一些流行的命令行工具中。
GraphQL
雖然它和 React 一樣,在 Facebook 內部開發并同時發布,但 GraphQL 與 React 并沒有內在的聯系;它只是 Web 客戶端查詢服務器數據的一種方式。它通過名為 Relay 和 Apollo 這兩個具有競爭性的庫獲得了流行,這兩個庫提供了一個 Web 應用程序,用于便捷生成 GraphQL 和管理數據流。
Relay 發布得比較早,并且正在增長,但是已經被半年后發布的 Apollo 超越,Apollo 已經越來越受歡迎,并且增長速度明顯加快。雖然 Apollo 的絕對數量還很小,但是它的增長軌跡值得深入挖掘。
React 生態系統總結
再看看過去 12 個月的增長,我們可以看到相關軟件包在 React 生態系統中的相對位置。趨勢也變得清晰:
Apollo?正在快速增長
Flux 在慢慢沒落
React Router 和 Redux 都非常受歡迎,并且在使用中緊密聯系,所以我們將它們放在了一起
MobX 有著良好的增長,但尚未能挑戰 Redux 的地位
React 本身就十分龐大