当前位置: 首页 > news >正文

2017JavaScript框架战报——React分战场

我们来看看与React有关的软件包的生态系统。当Facebook构建React时,就有许多来自开源社区的第三方软件包。为提供完整的应用程序体验,这些软件包使用React并添加了附加功能。其中几个中因提供了类似的功能,彼此之间存在竞争。

2017JavaScript框架战报——React分战场

React Router

成熟的Web应用程序共有的一个特点是都提供了多个“路由”,这些“路由”本质上是不同的功能块,在浏览器中表示为单独的URL。React不需要为更简单的应用程序使用路由,有时用在桌面和移动应用程序等环境中,路由也并不是必需的。因此,React Router虽然最受欢迎的React应用程序路由解决方案,但流行度却不及React本身的一半。

2017JavaScript框架战报——React分战场

React的一部分:通过将自己限制在一个明确定义的问题领域内,并具有明确定义的接口,使其本身可以应用于比原始设计更广泛的应用范围。这一决定增加了开发人员使用和处理React的能力,进一步改进并扩展了他的生态环境,创造了一个有益的循环。这一结果出乎意料,因为React作为一个局部的解决方案,本质上不如Ember和Angular这样的完整框架使用起来方便。

Flux

一个完整应用程序的另一个不通过React的部分就是数据层。推出React的同时,Facebook还推出了Flux和GraphQL。两者都不如React流行,这再次显示了React在一小部分问题上的解决问题能力。

2017JavaScript框架战报——React分战场

Flux在React之后不久就被推出,但直到2015年中才与React Router同步渐渐走入大众的视野,这表明了两者在网络应用程序中正在“捆绑”使用。但是,2015年中期之后,它们的轨迹发生了很大的分化,Flux的欢迎程度缓慢下滑。

Redux

Flux垮台的一个原因是Redux的崛起。Redux在2015年年中引入了Redux,与Flux在应用程序功能上有相同的部分,但不同的是开发经验,与此同时Flux开始下滑。现在Redux几乎和React Router一样流行,而且两者紧密地相互追随,并且越来越受欢迎。这表明Redux已经取代Flux成为React网络应用程序中的首选管理状态系统。

2017JavaScript框架战报——React分战场

MobX

MobX是在2016年中推出的Flux和Redux竞争对手。目前它正快速成长,虽然仍然只是这个领域的小玩家,但也值得关注。

2017JavaScript框架战报——React分战场

RxJS

RxJS是另一个与Flux和Redux竞争的状态管理组件。RxJS的流行趋势不能用简单的模式来追踪或解释。首先,它有两个extant版本,一个名为rx的遗留版本和一个名为rxjs的当前版本。虽然rx版本目前正在下滑,而rxjs正在上升,但两者都得有大量使用率。

2017JavaScript框架战报——React分战场

RxJS似乎是作为其他项目的子依赖项驱动的,特别是Angular CLI。这意味着所有使用Angular的驱动器都使用相同的RxJS,也被合并到其他一些流行的命令行工具中。

GraphQL

虽然它与React是同时在Facebook内部开发的,但是GraphQL与React并没有内在的联系。它只是Web客户端查询服务器数据的一种方式。它通过名为Relay和Apollo的两个竞争库得到了一定的普及,这两个库提供用于生成GraphQL和管理数据流的Web应用程序。

2017JavaScript框架战报——React分战场

首先推出的是Relay,目前正在持续成长,但是已经被半年后发布的Apollo盖过了风头。虽然绝对数量还很小,但Apollo的增长轨迹值得深入挖掘。

React生态系统总结

2017JavaScript框架战报——React分战场

回头看过去12个月的变化,我们可以看到各个“玩家”在React生态系统中的位置变化:

* Apollo正在快速增长。

* Flux正在下降。

* React Router和Redux都非常受欢迎,并且有紧密地关系。

* MobX增长看好,但还没有危及到Redux的地位。

* React本身是庞大的。

相关文章:

  • 整理Java基础知识--Character类
  • 网上购物系统(Task005)——通用数据库访问函数集SqlHelper类
  • mysql 密码重置
  • 微软产品组里的十一类人
  • window10转Windows7
  • java生成缩略图
  • Docker 运行 jar
  • 在区块链上表白——使用C#将一句话放入比特币的区块链上
  • Powershell for循环语句示例
  • 关于C#中随机数的生成问题
  • 梦断代码阅读笔记01
  • JSON 之 SuperObject(11): TSuperTableString、TSuperAvlEntry
  • js中Object.create作用,什么时候用?和new是什么区别
  • 分享Silverlight/Windows8/WPF/WP7/HTML5一周学习导读(5月6日-5月12日)
  • 【289】◀▶ Python I/O 读写文本文件
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Babel配置的不完全指南
  • Date型的使用
  • dva中组件的懒加载
  • golang 发送GET和POST示例
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java到底能干嘛?
  • Just for fun——迅速写完快速排序
  • overflow: hidden IE7无效
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • swift基础之_对象 实例方法 对象方法。
  • uni-app项目数字滚动
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 精彩代码 vue.js
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 模型微调
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 突破自己的技术思维
  • 微信小程序--------语音识别(前端自己也能玩)
  • 06-01 点餐小程序前台界面搭建
  • 白色的风信子
  • 阿里云服务器购买完整流程
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​卜东波研究员:高观点下的少儿计算思维
  • #define,static,const,三种常量的区别
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十六)一篇文章学会Java的常用API
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复