翻譯 | 擺脫瀏覽器限制的JavaScript

譯者:安冬 (滬江Web前端開發工程師)
本文原創翻譯,轉載請註明做者及出處。
原文地址:http://developer.telerik.com/...前端

技術世界在發展,JavaScript也在同步發展。JavaScript在軟件世界建起地盤的頭幾年,它從沒想過涉足服務應用程序、移動端應用程序以及機器人之類業務。今天,隨着JavaScript的發展,這門語言已經進入了聊天機器人、虛擬現實以及物聯網等新領域。react

除了不斷開拓新領域,在服務端、移動端以及桌面端應用等生態中,JavaScript的地位也愈來愈穩固。在本文中,咱們將首先回顧去年所作的若干預測,而後展望2017年JavaScript會在瀏覽器以外開拓哪些新地盤。先來看看JavaScript在服務端應用程序中的狀況吧。jquery

Node.js

Node.js是構建服務器端應用程序的開源運行時庫,這類JavaScript代碼不是在瀏覽器中運行的。在過去的幾年裏,Node已經從初創公司中流行的技術框架演變爲各類規模公司所使用的主流開發技術。web

Node的包管理工具npm也再也不是託管服務端應用程序模塊的工具,而是轉變爲了分發JavaScript代碼的規範化的工具。也許npm上的包的數量是最能表現Node的發展趨勢。在去年的預測中,咱們製做了下面的圖表,比較了各類語言中包管理的數據,顯示出了npm的優點。npm

截至2015年12月,modulecounts.com的模塊數量編程

在過去一年裏,npm的增加並無放緩的跡象。事實上,npm包的數量從20萬增加到了大約35萬,促使整個Y軸比例尺都被迫調整。react-native

截至2016年12月,modulecounts.com統計的包數量api

增加背後的因素有不少,其中一個就是不少公司在基礎服務中使用了Node。這同咱們去年預測的結果相吻合。瀏覽器

「在2016年,咱們能夠預見到更多的公司將會進一步採用Node和他的包管理工具npm。由於Node的長期支持計劃,微軟、IBM、Intel、Progress等大公司將會繼續使用Node,用來替代一些.NET、Java之類的傳統企業解決方案。」安全

從Node的增加趨勢來看,上面的預測結果並不意外。關於Node的案例研究代表,一部分中等規模的公司已經開始使用Node,包括Netflix,GoDaddy和Capital One等。

Node在關鍵基礎設施中獲得了應用,其中最惹人注目的非NASA莫屬了。你也能夠看看NASA對Node的研究,在這裏我只摘錄一段話。

「在考慮宇航員的生命安全時,輕微的打嗝或者服務中斷都會釀成生死事故。從EVA(艙外活動)的數據到太空中宇航員的各個領域裏,Node.js都有助於確保全部人與事的安全。」

可是Node的發展並不是只有NASA幫忙。Node的包管理工具npm已經成爲了存儲跨環境JavaScript代碼的不二選擇,包管理工具的統一化反之也推進了Node的發展。

在本文中,咱們討論的每一個框架、每項技術都使用npm來存儲和分發其源代碼。在npm中搜索「jquery」,「polymer」,「react」,「cordova」或「nativescript」,你大概就能瞭解npm如今的規模。隨着JavaScript的普及,npm也愈來愈受歡迎。npm越普及,Node.js發展越快。咱們相信,這個趨勢將會在一段時間內繼續保持下去。

在npmjs.com搜索「angular」獲得近1萬個結果。Angular是經過npm分發的衆多類庫之一。

在2017年,咱們相信更多的公司將從傳統的開發方式(好比JAVA和C#)切換到Node。咱們相信TypeScript也將有助於推進Node的成長,由於它對Java和C#的開發人員更加友好。Node對LTS版本的支持承諾也將有助於這一趨勢,由於它保證了這些公司使用的版本會在將來幾年獲得持續的支持和維護。

總的來講,大公司不喜歡維護多套開發系統和語言,而藉助Node,這些公司能夠用單一語言來整合全部的開發系統,還不只僅是是服務器端的代碼。下來咱們看看JavaScript是如何影響移動端的。

PhoneGap和Cordova

PhoneGap以及它的基石Cordova,是JavaScript進入原生開發領域的初次嘗試。Cordova將web代碼封裝在WebView中,藉由WebView來驅動原生的移動應用。這種方法容許Web開發人員使用他們已經掌握的技能(即JavaScript)來開發移動應用程序,正由於如此,在不少年裏,Cordova都是開發移動應用的重要選擇。

可是這種狀況開始慢慢改變了。今天,Cordova面臨了不少替代方案的挑戰,它們大部分使用與Cordova相似的基於JavaScript的方案。也許Cordova最大的挑戰來自谷歌主導的Progressive Web Apps(簡稱PWAs)。

Google的Progressive Web Apps主頁

PWAs爲web世界了帶來了不少近似原生的功能,好比推送通知、離線訪問和主屏幕圖標等。去年,咱們預測Google將開始慢慢推行PWA方法。事實證實,這一預測仍是過於保守,由於Google已經明確表示,他們將開展多種活動來推廣PWAs。在最近的Chrome開發者峯會,以及今年的Google I/O會議上,谷歌都爲PWAs安排了大量討論。

PWAs和咱們的討論息息相關,由於它已經開始蠶食 Cordova的領域——須要使用原生功能的Web應用程序。若是你的web應用須要離線訪問或者推送通知的功能,選擇基於PWA 而不是 Cordova會是個更好的方案。儘管很難測量有多少人在混合應用中選擇了PWAs,但已經有不少證據代表Cordova的使用量正在縮減。下面是最近兩年Cordova每週被人們下載的次數。你能夠看到,儘管Cordova下載數沒有大幅波動,但增幅已經沒有那麼明顯了。

從2014年12月至2016年12月,「cordova」npm軟件包的每週下載量。(數據來自npm-stat.com)

衰退還有一個緣由。儘管咱們認爲PWA正在蠶食Cordova的份額,但咱們也相信,移動領域中更新的開發方式也在蠶食了Cordova的份額。

Native mobile apps

JavaScript驅動的原生移動應用,這種概念由Appcelerator倡導,藉助Facebook的React Native和Progress的NativeScript,目前已經流行開來。用JavaScript開發的原生應用程序不使用WebView,所以,不須要考慮基於Cordova的應用程序遇到的Web性能問題 。

在去年的討論中,咱們預測2016年將會是這些框架成熟並普遍使用的一年,如今看來這些預測是準確的。在過去的兩年裏,React Native的每週下載次數在持續增長。

從2014年12月到2016年12月,「react-native」npm軟件包的每週下載量。(數據來自npm-stat.com)

NativeScript也有一樣的趨勢。

從2014年12月至2016年12月,「nativescript」npm軟件包的每週下載量。(數據來自npm-stat.com)

變化不僅體如今這些JavaScript驅動的原生框架的下載數據提高上,最近的一項調查研究(State of JavaScript 2016)代表,JavaScript開發人員對React Native和NativeScript都很感興趣。

State of JavaScript 2016對移動開發領域興趣調查的結果

對JavaScript調查分析總結出了這些結果。

在興趣分數上,「Cordova」和「PhoneGap」的得分很低,這也許是它們的性能問題致使的。雖然Cordova和PhoneGap所依賴的手機瀏覽器和JavaScript引擎有了很大提高,但仍是不如運行原生代碼(如React Native)。

在2017年,隨着愈來愈多的JavaScript開發人員開始嘗試構建原生應用,咱們期待這些使用JavaScript構建原生應用的框架可以加速發展。React框架的快速發展也將使React Native獲益,而NativeScript則宣佈在5月份完成Angular 2的支持,不少項目也會從Angular 1升級到Angular 2,NativeScript也將會從中獲益。咱們也但願JavaScript驅動原生框架可以吸引原生iOS和Android開發人員,由於它容許你只用一份代碼就能在兩個平臺上構建真正的原生應用程序。

JavaScript愈來愈多地侵佔了曾經以Objective-C和Java等語言爲主的移動端領域。但這不是JavaScript正在侵入的惟一新領域。下面咱們將討論轉到桌面應用程序 。

桌面應用

根據傳統,若是要構建Windows或Mac應用程序,就要使用針對專門平臺的工具,如WPF和Windows Forms,或者採用跨平臺的方案,好比Java或Adobe Air 。不過,像上文中討論的其餘軟件生態同樣,基於JavaScript的解決方案也在蠶食這個領域。

在去年的討論中,咱們討論了用來構建桌面應用程序的兩個最流行的JavaScript框架——NW.js和GitHub的Electron,同時判斷其使用量在2016年將大幅增加。從現實來看,增加已經出現了,Electron如今也已經成爲開發基於JavaScript的桌面應用程序的重要選擇。

若是比較「electron」和「nw」在npm上下載量,你將會看到「electron」(紅線)和React Native的趨勢相似,而NW.js的下載曲線相對平坦。

從2016年9月至十一月2016年,「electron」和「NW」npm包的周下載量。(數據來自npm-stat.com)

2015年12月,在GitHub上,Electron有2萬個 star,NW.js有2萬5千個;今天,Elecron擁有近4萬個star,NW.js則剛剛超過3萬。

Electron也被主流桌面應用所接納。該框架如今爲Visual Studio Code提供支持。Visual Studio Code由微軟提供,是廣受歡迎的編輯器,到4月份已經得到了超過五百萬用戶。Electron還在React和Angular社區作了推廣,因此在這兩個框架中使用Electron的教程能夠很容易地在網上被找到。

咱們預計,Electron在2017年將會繼續佔據統治地位。咱們期待Electron可以跟最流行的框架(主要是React和Angular)進一步集成,從而得到軟件供應商更多的關注。並且隨着JavaScript繼續侵入傳統上由Java和基於Microsoft技術主導的領域,咱們但願Electron將繼續被用做WPF,Java和Adobe Air等開發的替代品。

使用單一語言完成你的全部開發需求,這個方案不但有足夠吸引力,還採起了JavaScript的一些最新的開發方式。最後,讓咱們看看JavaScript在一些新的軟件領域的表現。

JavaScript的新邊界

若是你向分析師詢問發展中國家的發展狀況,他們脫口而出的是虛擬現實,聊天機器人和物聯網(IoT)等一系列流行概念。

在全部這些新技術中,JavaScript在聊天機器人這個領域是最重要的,人們使用JavaScript來開發從簡單的Slack機器人乃至進行商業交易的複雜機器人。在聊天機器人領域中,大多數的框架在他們的SDK中都集成了Node庫,包括Botkit,Microsoft的Bot Framework和Facebook的wit.ai。微軟的Bot框架的文檔甚至介紹了爲何要用Node來開發機器人。

「基於Node的Bot Builder是頗有力的構建機器人的框架,能夠處理各類形式的交互,給出更多的引導,它能夠將這些可能性很清楚地展現給用戶,它使用一些框架(如Express和Restify),可讓開發人員用熟悉的方式來開發機器人。」

重用JavaScript一樣爲許多流行的IoT庫(如Losant和zetta)以及Leap Motion等設備提供了Node API。 Chrome瀏覽器團隊和A-Frame框架團隊就是其中的典型,還有很多團隊在虛擬現實中使用JavaScript。

Google Chrome小組擁有一系列使人印象深入的虛擬現實實驗,它們都是基於JavaScript構建的,你也能夠本身嘗試。

然而在C ++,Python和C#主導 的領域,JavaScript並不具備很大的優點。好比,Oculus Rift設備主要使用C ++,Microsoft的HoloLens則須要你用C#編寫。

咱們預計這一趨勢將在2017年開始發生改變。隨着JavaScript的普及以及運行速度的提升,JavaScript將繼續延伸到像VR和物聯網這樣的領域。隨着新的軟件開發生態系統的涌現,咱們期待JavaScript可以快速上升爲一等公民。

萬金油 JavaScript

10年前,在服務器上使用JavaScript是不可想象的; 今天,Node擁有350萬用戶,年增加率達100%。5年前,使用JavaScript來驅動原生iOS或Android應用程序還只是星星之火, 今天NativeScript和React Native正以驚人的速度增加。3年前,使用JavaScript構建桌面應用程序不多見, 今天Electron每個月下載超過1萬次。

JavaScript不會用於全部場景下編程,由於許多其它語言更適合於解決某些具體場景下的問題。可是無論採用什麼開發平臺,JavaScript的普遍使用必定會是個重要因素。關於這個話題,Jeff Atwood有一句廣爲流傳的話,也許用它來結尾再合適不過了,由於他的發言老是充滿了預見性。

「能夠用JavaScript編寫的應用程序,最終都將用JavaScript編寫。」


圖片描述

iKcamp原創新書《移動Web前端高效開發實戰》已在亞馬遜、京東、噹噹開售。

相關文章
相關標籤/搜索