摘要:在考慮宇航員的生命安全時,輕微的打嗝或者服務中斷都會釀成生死事故。也許最大的挑戰來自谷歌主導的簡稱。在最近的開發者峰會,以及今年的會議上,谷歌都為安排了大量討論。由微軟提供,是廣受歡迎的編輯器,到月份已經獲得了超過五百萬用戶。
譯者:安冬 (滬江Web前端開發工程師)
本文原創翻譯,轉載請注明作者及出處。
原文地址:http://developer.telerik.com/...
技術世界在發展,JavaScript也在同步發展。JavaScript在軟件世界建起地盤的頭幾年,它從沒想過涉足服務應用程序、移動端應用程序以及機器人之類業務。今天,隨著JavaScript的發展,這門語言已經進入了聊天機器人、虛擬現實以及物聯網等新領域。
除了不斷開拓新領域,在服務端、移動端以及桌面端應用等生態中,JavaScript的地位也越來越穩固。在本文中,我們將首先回顧去年所做的若干預測,然后展望2017年JavaScript會在瀏覽器之外開拓哪些新地盤。先來看看JavaScript在服務端應用程序中的情況吧。
Node.jsNode.js是構建服務器端應用程序的開源運行時庫,這類JavaScript代碼不是在瀏覽器中運行的。在過去的幾年里,Node已經從初創公司中流行的技術框架演變為各種規模公司所使用的主流開發技術。
Node的包管理工具npm也不再是托管服務端應用程序模塊的工具,而是轉變為了分發JavaScript代碼的規范化的工具。也許npm上的包的數量是最能表現Node的發展趨勢。在去年的預測中,我們制作了下面的圖表,比較了各種語言中包管理的數據,顯示出了npm的優勢。
截至2015年12月,modulecounts.com的模塊數量
在過去一年里,npm的增長并沒有放緩的跡象。事實上,npm包的數量從20萬增長到了大約35萬,促使整個Y軸比例尺都被迫調整。
截至2016年12月,modulecounts.com統計的包數量
增長背后的因素有很多,其中一個就是很多公司在基礎服務中使用了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都有助于確保所有人與事的安全?!?/p>
但是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和CordovaPhoneGap以及它的基石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 appsJavaScript驅動的原生移動應用,這種概念由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能夠快速上升為一等公民。
萬金油 JavaScript10年前,在服務器上使用JavaScript是不可想象的; 今天,Node擁有350萬用戶,年增長率達100%。5年前,使用JavaScript來驅動原生iOS或Android應用程序還只是星星之火, 今天NativeScript和React Native正以驚人的速度增長。3年前,使用JavaScript構建桌面應用程序很少見, 今天Electron每月下載超過1萬次。
JavaScript不會用于所有場景下編程,因為許多其它語言更適合于解決某些具體場景下的問題。但是不管采用什么開發平臺,JavaScript的廣泛使用一定會是個重要因素。關于這個話題,Jeff Atwood有一句廣為流傳的話,也許用它來結尾再合適不過了,因為他的發言總是充滿了預見性。
“可以用JavaScript編寫的應用程序,最終都將用JavaScript編寫?!?/p>
iKcamp原創新書《移動Web前端高效開發實戰》已在亞馬遜、京東、當當開售。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85054.html
摘要:為此決定自研一個富文本編輯器。例如當要轉化的對象有環存在時子節點屬性賦值了父節點的引用,為了關于函數式編程的思考作者李英杰,美團金融前端團隊成員。只有正確使用作用域,才能使用優秀的設計模式,幫助你規避副作用。 JavaScript 專題之惰性函數 JavaScript 專題系列第十五篇,講解惰性函數 需求 我們現在需要寫一個 foo 函數,這個函數返回首次調用時的 Date 對象,注意...
摘要:進去之后,點擊用戶賬戶下的添加或刪除用戶賬戶。當主機控制的時候,按鍵,選擇切換用戶,進去剛剛自己創建的用戶里面,就完成脫離主機了。怎樣能讓電腦脫離主機控制?一般的情況是行不通的,在學校機房里面都有相應的軟件來管理這些學生用的電腦,而上課的時候,老師們把模式自動調成上課的模式,這就意味著只能使用一部分軟件,當在運行別的無關軟件的時候就會自動屏蔽,以前我也嘗試過用任務管理器來關掉這個客戶端,但是...
摘要:怎樣擺脫電腦主機控制步在一開始的時候點擊開始菜單,選擇控制面板,點擊用戶賬戶和家庭安全。當主機控制的時候,按鍵,選擇切換用戶,進去剛剛自己創建的用戶里面,就完成脫離主機了。怎樣擺脫電腦主機控制?1、步在一開始的時候點擊開始菜單,選擇控制面板,點擊用戶賬戶和家庭安全。2、進去之后,點擊用戶賬戶下的添加或刪除用戶賬戶。3、進去管理賬戶界面之后,點擊創建一個新帳戶。4、輸入用戶名稱,點擊創建帳戶,...
摘要:在其他方面,我們只需要考慮針對特定任務時所使用框架的成本。當我們必須使用或不應該使用框架時我強烈主張要了解編寫某個工具的目的。 非常有價值的建議:哪些框架是合理的,哪些并不合理。 作者:Tod Hansmann 來源:https://opensource.com/articl...翻譯:瘋狂的技術宅說明:本專欄文章首發于公眾號:jingchengyideng 。 showImg(htt...
閱讀 3904·2021-11-22 09:34
閱讀 1490·2021-11-04 16:10
閱讀 1721·2021-10-11 10:59
閱讀 3271·2019-08-30 15:44
閱讀 2035·2019-08-30 13:17
閱讀 3445·2019-08-30 11:05
閱讀 744·2019-08-29 14:02
閱讀 2618·2019-08-26 13:34