Web應用程序框架:不創新就玩完
譯文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/