抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

JavaScript 框架的开发现状和生态环境

2013 年 10 月 30 日

资深的前端专家 Dave Gruber 最近对十个热门的 Javascript 框架的发展现状做了深入的分析,包括Angular、Backbone、Ember 等,分析的方面包括贡献者数量、生态环境、社区规模等等。

Dave 在统计报告一开始,先阐述了做调查分析的背景:在过去的几年中,我们已经看到了 UX 库和框架的大量增长,而且其中的大部分都是开源的。有很多文章比较了这些框架的用途、方法以及完整性等方面的不同,但却常常忽视了围绕着这些开源项目的社区和生态系统的规模、强度和走势等度量标准。而这些统计信息应该在您的选择中起到关键性的作用。

今年的早些时候,我有机会对自 2012 年开始增长最快的开源项目做一个分析,并且我被名单列表中的 JacaScript 项目的数量震惊了。这使得我对特定的、专注于帮助开发者建立丰富、可扩展的用户界面的 JavaScript 库 / 框架的项目做了更加深入的了解。我的分析用到了开源社区 Ohloh.net 中的元数据和 GitHub 中的集成数据,包括评星的数目(用来帮助用户追踪他们觉得有趣的资料库)以及个别项目吸引到的追随者的数量。

这次分析涵盖了 UI 库、框架和包括服务器端运行时的全套框架,挖掘到了前十名开源项目的社区。Dave 分析的项目都是时下最热门的 UI 项目,包括 AngularJS, Ember.js, SproutCore, Backbone.JS, Knockout.js, Spine, CanJS, Meteor-JS, Derby, 和 Yahoo Mojito。

我的目标是描绘出这些项目的周边社区的状态,并着重找出规模和增长速度,并且努力将这些数据与个别项目的普及度和成功与否相关联。同时在假设生态系统会进一步反映一个项目的普及程度和成功与否的同时,关注各个项目周围的的生态系统。

探索一个项目每月贡献的数量和增长量能够观察出项目的走势并且可以凸显项目捕捉业界广泛兴趣的重要临界点。Dave 统计了项目的每月贡献的参与,也表明了在某个给定月份中贡献代码的开发者数量。从结果上看,SproutCore 是每月贡献参与量的早期领先者。然而当 2011 年 12 月 SproutCore fork 并创建了 Ember 项目后,许多团队中的开发者跟着一起变动,并跳槽到了 Ember 项目中。现在,Ember 和 Angular JS 一起,已经在 2013 年的月代码贡献量上表现出了显著的增长,并从社区整体的增长角度来看成为了新兴的领先者。同时我们注意到,今年春天,在 AngularJS 和 Ember 加速增长的同时,Backbone 和 Meteor 的活跃贡献量在显著下降。

除此之外,Dave 认为,观察项目整个发展历程中的全时(all time)贡献者数量可以帮助我们理解一些不同的观点。一方面,它往往反映出一个项目的管理风格。很多项目由一小组人进行严格的管理,而其它一些项目则完全开放从而接受广泛和多元化的贡献。全时贡献者的数量也可以帮助我们理解项目在任何一个时间段中的相对发展趋势。大规模、制度完善的项目常常拥有较多数量的贡献者,来帮助修补漏洞、撰写说明文档以及其它相关任务。贡献者的总数往往和代码库的总体规模有关。当结合其它社区指标时,比如代码行数、总提交量和月提交量时,这一数据最有价值。

从结果上看,Angular JS 和 Ember 展现出最大的社区,从而反映出它们近一段时间以来的每月贡献增长量。

除了当前的贡献者数量,项目社区的力量也体现在项目生态系统的建立与扩展之上。这就意味着我们不能完全单独依靠项目社区的核心指标来知道一个项目发展走势的全部内容。更加广阔的观察生态系统才能进一步描述出某个项目整体的成功。开源项目的鲁棒性可以通过与之相关的周边项目数量来衡量。在这方面,Backbone.js 和 AngularJS 很明显是赢家。

值得注意的是,Backbone 拥有可观的生态系统,显示了它在业界整体的发展趋势和使用量。为了进一步的验证 Backbone 的生态系统,我在 Github 上对搜索进行过滤,只保留了评星大于等于三星以及和 Backbone 相关的内容,并且得到了 1627 个项目的搜索结果。将此结果与 AngularJS 的三星之上的 794 个项目相比,可以知道 Backbone 的生态系统规模仍然是 AngulatJS 的两倍。

由于全套(full stacj)解决方案的审查角度和其他项目有区别,Dave 对这类项目的增长进行了单独的观察。全套解决方案中既包括客户端框架也包括服务器端框架,可以假设,解决方案涉及到的代码量越多,随着时间推移参与其中的技术人员数量也就更多。

Meteor 和 Mojito 似乎吸引了更强的社区,至少从贡献者的数量上衡量起来是这样的。

Dave 发现,将时间投入到用 JavaScript 创建结构化方法的开发人员数量正在快速增长,反映出了 UI 框架在应用程序开发中的重要地位,并且不同规模的企业对于不同用例方案支持方法的需求也在持续增长。从今年一月份开始,代码贡献量出现了显著的增长,这很可能是受到了 AngularJS 和 Ember 团队的推动而导致的结果。

JavaScript 正吞食占据这个世界。从 2011 年到 2013 年,开发者的平均数量翻了不止一倍。

你可能想知道每个项目的代码库的大小以及代码库数量和贡献者数量之间的联系。通过比较这些数据,Dave 发现社区规模和总提交量和代码基础的大小几乎没有联系。举例说明,Angulat JS 项目中每个贡献者平均贡献 413 行代码,而 Ember 表明每位贡献者平均贡献 146 行代码。每个贡献者提供的代码行数越多表明这个项目编写起来越简单。从而有人将其视为一个项目健康程度的一项衡量指标。

不过你可以找到社区规模(即总体贡献者数量)与总体提交量中的联系,并看到不同项目的平均贡献者提交量的变化非常不同。这可能表示一些项目更容易编写(做出贡献),从而影响到项目的长期发展。

Dave 认为,社区规模和增长情况对于一个项目的发展趋势而言是非常重要的指标。尽管这些指标不能告诉我们项目的全部情况,但它们提供了重要的评价标准,从而被大量投资并且帮助我们基于社区的可行性和可持续性做出决定。它们同时也能帮助我们找到项目生命周期中的临界点,为我们提供了参与项目并产生影响的机会。

最后,Dave 总结道:

丰富的 UI 框架是离我最熟悉也最喜爱的主题,因为我曾在 Adobe 公司工作五年来推动 Flex 框架的产品营销。现在这个项目已经转为了一个 Apache 项目。基于所有的数据分析,我的感受是 Ember 和 AngularJS 是新近涌现出的值得关注的 JS 框架。数据也表明,Backbone 周围的生态系统表明了这个 UI 方案非常受欢迎并且十分可信,因此它一定会有一个持续并且光明的未来。

2013 年 10 月 30 日 06:503469
用户头像

发布了 501 篇内容, 共 218.8 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

七牛云霍锴:实时音视频 SDK 设计实践

七牛云

七牛云存储 音视频 ECUG

关于多线程中抛异常的这个面试题我再说最后一次!

互联网架构师小马

高防服务器在使用过程中可以做到高效、稳定的防止钓鱼攻击

九河云安全

IOS技术分享| 互动连麦场景实现

anyRTC开发者

ios 移动开发 音视频开发 视频直播 直播连麦

入职那天“直接起飞”!双非渣本后端,两个月逆袭字节?

Java 编程 程序员 面试 计算机

三年豹变!拥抱Z时代,UDE迈向消费电子国际大展

科技热闻

2021 年云安全:基本工具和最佳实践业务指南

九河云安全

我终于在六月份实现了跳槽九连杀:字节跳动 Java 研发岗

Java 编程 面试 IT 计算机

涨薪 150%,从小厂逆袭,坐上美团 L8 技术专家(面经 + 心得)

Java 编程 程序员 架构 IT

为了彻底搞懂 hashCode,我钻了一下 JDK 的源码

沉默王二

Java

总结分析组件化漏洞产生的原理

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

2021 年最新版,阿里巴巴 / 今日头条 / 京东 Java 面经大合集(含答案)

Java 编程 面试 IT 计算机

在小厂工作三年的程序员喊话大厂:Java 中高级岗面试为何越来越难?

Java 程序员 架构 面试 IT

我是一个下「笨功夫」的人

非著名程序员

个人成长 认知提升 个人提升 8月日更 8 月日更

做了5年后端研发,靠着这份面试题跟答案,我从12K变成了30K

程序员改bug

Java 编程 架构

针对不同场景的Python合并多个Excel方法

Python研究者

Python Excel 8 月日更

阿里 Java 面试爆出内幕?十万字内部面试题总结(2021合格版)全网开源!

Java 编程 程序员 架构 IT

站在巅峰的阿里面试参考指南!居然能让我成功拿下 12 家大厂 offer?

Java 程序员 架构 面试 IT

从平台到生态,钉钉、飞书和企业微信的巨头之争

ToB行业头条

钉钉 企业微信 飞书

保险=诈骗?区块链赋予保险的“四个机会”

旺链科技

区块链 保险业 信任构建

企业架构概述

涛哥

从源码角度搞懂 Ribbon 的负载策略

普普通通程序员

浪潮云洲智造直播间,继续开讲!

浪潮云

云计算

synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁...

互联网架构师小马

迈入 8K 时代,AI 驱动超高清 “视” 界到来

阿里云视频云

阿里云 高清视频 视频处理 视频制作 视频云

如果用柔性屏做雨伞,那雨伞就不仅仅是雨伞了

船医特拉法尔加

开发者工具

Java菜鸟神操:凭借“Java核心技能精讲”,竟收割了21个Offer

程序员改bug

Java 编程 程序员 架构

从源码角度分析 Mybatis 的 SqlSession 以及 二级缓存的创建过程

普普通通程序员

支付通道接口异常统计上报

try catch

Java 失败上报

同事吃透了这份“阿里 Java 面试核心知识手册”6月份居然斩获 11 张大厂 Offer!

Java 编程 架构 面试 IT

神啦!最全“Java面试宝典+Java核心知识集”,一箭双雕杠秋招

Java 程序员 架构 面试 IT

Study Go: From Zero to Hero

Study Go: From Zero to Hero

JavaScript框架的开发现状和生态环境-InfoQ