Web应用程序框架领域涌现出了一股创新热潮,这可能让广大开发人员颇为沮丧,却又是必不可少的。
JavaScript
现在想跟上JavaScript圈子可是变得越来越难了。虽然ReactJS前阵子成为报章头条新闻,但没有哪个JavaScript框架能够长期保持领先的地位。一些人声称这是件好事,促使相互竞争的框架在创新方面胜过对方,但过于迅猛的创新步伐却让广大开发人员无所适从。
需要具备怎样的条件才能被公认为是长期的赢家?
谁会赢得Web?
咱们还是打开天窗说亮话吧:牵涉的面很广。正如EmberJS负责人Tom Dale曾对我说的那样:
“切记Web这块蛋糕的一大块是什么。.NET面向Windows,Cocoa面向iOS/Mac,赢得了Web就是赢得了全世界。”
既然如此,没有哪个框架设法主导Web多少也就让人有点奇怪了。反正没有哪个框能长期成为霸主。
毕竟,虽然新的编程语言来来去去,但Java、C++和C#却长期屹立不倒,总是处于或靠近编程语言排行榜的首位,网站Redmonk的分析就表明了这一点,详见:http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/。
Web应用程序框架却不是如此。
快速瞄一眼谷歌趋势(Google Trends,http://www.google.com/trends/explore#q=EmberJS%2C%20BackboneJS%2C%20Sproutcore&cmpt=q&tz=),就会显示JavaScript的人气指数经历了起伏不定的阶段(见图A)。
图A:谷歌趋势显示了JavaScript的人气指数。
Sproutcore是由Charles Jolley设想出来的,由苹果以及后来的Strobe(已被Facebook收购) 开发而成。随着BackboneJS取代而之――它得到了LinkedIn等公司的鼎力支持,Sproutcore最终悄无声息。与此同时,一些Sproutcore开发人员离开Strobe另立门户,开发了EmberJS,如今它在逐渐取代BackboneJS。
当然,如果我们算上AngularJS(谷歌开发的JavaScript语言),一切相比之下都黯然失色,无论按上网搜索量来衡量还是按雇主需求量来衡量,AngularJS都可谓风光无限(见图B)。
图B:AngularJS的崛起之路。
这也许很好。AngularJS也许实际上就是有史以来的***框架!至少,在下一个又酷又炫的框架问世之前是这样。
我们能不能让这个步伐慢一点?
就拿ReactJS来说吧。由Facebook开发的ReactJS在年初备受媒体关注,当时宣布支持原生应用程序。这意味着,React Native框架让开发人员能够使用React和JavaScript,轻轻松松就能构建原生应用程序。这是个好概念,即便并非什么新概念。毕竟,多年来,其他框架早就提供了类似的功能,这自然引出了下面这个问题:我们果真需要ReactJS吗?
Netflix认为需要它。这个技术先锋在其开发者博客上宣称:“我们决定采用React受到了许多因素的影响,尤其是这三大因素:1)启动速度,2)运行时性能,以及3)模块化。”
Netflix认为,ReactJS提供了一种出色的方法,可以减少网络请求(缩短了启动时间),并简化用户界面渲染(提高了运行时性能),另外还有其他优点。
也许Netflix是对的。但是为什么Netflix就不可以用AngularJS、EmberJS或其他框架来实现同样的目的呢?
#p#
不创新就玩完
Brian Leroux是PhoneGap的核心开发人员之一,他认为,目前来自JavaScript框架的创新最终会“融入到Web平台本身”,迫使这些框架不断创新,才能保持领先地步。随着互相竞争的框架失去了创新的劲头,市场会迎来更好的框架。
据一些人统计,我们在开始选定少数几种一贯创新的框架。(Instructure博客的一名开发人员认为,EmberJS已经获胜,因为“无论哪个框架,最终老是被拿来与Ember比较”。)AngularJS显然也是个冠军争夺者,也许是最有实力的冠军争夺者。
哪ReactJS呢?
令人沮丧的是,我们在Web编程领域还没有遇到任何的停滞现象,而这可能完全体现了我们在Web方面还剩下多少工作要做。AngularJS最近因在其2.0版本中没有提供向后兼容而遭到炮轰,我认为这对创新而言也许是好事。
为什么?因为,作为Leroux的密友,我们在Web创新会是什么样、也许应该是什么样方面连皮毛都未触及。我们在想出更优秀的Web编程方式之际,就要一路打破陈规。
但不是每个人都这么认为。EmberJS共同创造者Yehuda Katz就认为,“想让创新步伐慢下来,***的办法就是迫使每个人每隔几年就要重写代码。”于是EmberJS在竭力确保***程度的后向兼容性。如上所述,AngularJS没有这么做,至少到目前为止没有这么做。
但这些在我看来却是必不可少的“减速带”。
在可以预测的将来,我们应该会看到JavaScript框架不断完善。有些框架会消亡,有些会胜出。但是虽然这可能会让开发人员不得劲,但它最终是好事,因为这意味着获胜的是Web。
http://www.techrepublic.com/article/web-application-frameworks-innovate-or-die/