前一篇文章中,我们介绍了 2017 年 JavaScript 框架的整体情况.我们也了解到在众多的前端框架中,目前最为庞大又在快速增长的当属 React 了,本文就来重点介绍 React 的生态系统.
首先看看与 React 有关的软件包的生态系统.在 Facebook 构建 React 之初,就有许多来自于开源社区第三方库的软件包.这些软件包使用 React 补充其它功能,以便提供完整的应用程序解决方案.当然,安装包中也存在着提供相似功能的彼此竞争关系.
React Router
丰富的 web 应用程序具有的一个共同特点就是:提供了多个 "路由".这些 "路由" 本质上是不同的功能块,在浏览器中表现为单独的 URL.React 不需要为简单的应用程序使用路由,同时在一些桌面和移动应用程序环境中,路由也不是必需的.因此,React Router 虽然是最受欢迎的 React 应用程序的路由解决方案,但 React Router 的相对流行程度却只有 React 的一半.
了解 React 的开发者都知道,React 应用于一个明确定义的问题领域并具有明确定义的接口,这也使其本身可以应用于比原本设计的更广泛的应用领域.这种方式虽然增加了开发者使用 React 的 pool,但也进一步提升了 React,扩展了 React 的生态系统,创造了一个有益的循环.React 作为一个部分的解决方案,本质上是不如 Ember 和 Angular 这样的完整框架使用起来方便的.
Flux
React 作为一个非完整的解决方案,其中一个尚未解决的问题就是应用程序的数据层部分.当引入 React 时,Facebook 还推出了 Flux(一种管理应用程序中状态的方法)和 GraphQL(一种用于在客户端和服务器之间进行通信的系统).这两者都不如 React 本身流行.
Flux 在 React 之后不久就被推出了,但却直到 2015 年中期才得到普及.在这期间,Flux 与 React Router 一起呈同步上升趋势,这也表明 Flux 和 React Router 正在网络应用程序中配合使用.但是,2015 年中期之后,Flux 和 React Router 的轨迹发生了很大的分化,Flux 在受欢迎程度上缓慢下滑.
Redux
造成 Flux 受欢迎下降的一种原因是 Redux 的崛起.Redux 和 Flux 针对的是应用程序功能中完全相同的部分,Redux 于 2015 年中期正式推出,并且使用率迅速提高,而 Flux 则在同一时期开始逐渐下滑.Redux 现在几乎和 React Router 的相对流行程度相当,而且两者相互紧密相关,并且都越来越受欢迎.这也表明 Redux 已经取代 Flux 成为 React 网络应用程序中首选的状态管理系统.
MobX
MobX 是 2016 年中期推出的,也是 Flux 和 Redux 的竞争对手.虽然 MobX 的使用率还不高,但是目前正在快速增长,值得关注.
RxJS
RxJS 是 Flux 和 Redux 的另一个竞争的状态管理组件.RxJS 的流行情况不好统计.首先,RxJS 有两个现存版本,一个是传统版本 rx,一个是当前版本 rxjs.这两个版本下载量都很大,其中 rx 下载量正在下降,而 rxjs 下载量正在增长.
RxJS 的使用基本是作为其它项目子依赖的驱动,特别是对于 Angular CLI.这意味着所有使用 Angular 的驱动器,都需要使用相同的 RxJS.同时,RxJS 也被合并到其它一些流行的命令行工具中.
GraphQL
GraphQL 与 React 是由 Facebook 同时开发的,但是这两者之间并没有内在的联系.GraphQL 是 Web 客户端查询服务器数据的一种方式.GraphQL 通过名为 Relay 和 Apollo 的两个竞争库得到了普及,Relay 和 Apollo 提供了一个 Web 应用程序,用于生成 GraphQL 和管理数据流.
Relay 首先被发布,并且正在增长,但是半年后发布的 Apollo 却上升的更快,同时也越来越受到欢迎,并且增长速度还在明显加快.虽然 GraphQL 开发者使用量的绝对数还很小,但是 Apollo 的增长轨迹意味着 GraphQL 很值得开发者关注.
React 生态系统概述
通过上图中 React 生态系统 12 个月的变化趋势,可以得到以下结论:
Apollo 的使用率正在快速增长.
Flux 的使用率正在下降.
React Router 和 Redux 都非常受欢迎,并且在使用中具有紧密相关的联系.
MobX 具有良好的增长,但其使用率还远没有到达 Redux.
React 本身的生态系统是巨大的.
JavaScript 开发工具推荐
SpreadJS 纯前端表格控件 是基于 html5 的 JavaScript 电子表格和网格功能控件,提供了完备的公式引擎,排序,过滤,输入控件,数据可视化,Excel 导入 / 导出等功能,适用于 .NET,Java 和移动端等各平台在线编辑类 Excel 功能的表格程序开发.
来源: http://www.bubuko.com/infodetail-2472903.html