摆脱浏览器限制译者:安东(沪江Web前端开发工程师)本文原创翻译,转载请注明作者和出处。原文地址:http://developer.telerik.com/...科技世界在发展,JavaScript也在发展。在JavaScript出现在软件世界的最初几年里,它从未想过涉足服务应用程序、移动应用程序和机器人的业务。今天,随着JavaScript的发展,该语言已经进入了聊天机器人、虚拟现实和物联网等新领域。除了不断开辟新的领域,JavaScript在服务端、移动端、桌面端应用生态中的地位也越来越稳固。在这篇文章中,我们将从回顾我们去年所做的一些预测开始,然后展望2017年JavaScript将在浏览器之外开辟哪些领域。我们先来看看JavaScript在服务端应用中的情况.Node.jsNode.js是一个用于构建服务器端应用程序的开源运行时库,是一种不在浏览器中运行的JavaScript代码。在过去的几年中,Node已经从初创公司中流行的技术框架发展成为各种规模公司使用的主流开发技术。Node的包管理工具npm不再是一个托管服务器端应用模块的工具,而是转变为一个标准化的分发JavaScript代码的工具。也许npm上包的数量最能说明Node.js的发展趋势。在去年的预测中,我们制作了下图对比各种语言的包管理数据,可见npm的实力。截至2015年12月,modulecounts.comnpm上的模块数量在过去一年中的增长没有放缓的迹象。事实上,npm包的数量从200,000增长到大约350,000,迫使整个Y轴刻度进行调整。截至2016年12月,modulecounts.com统计的包数增加背后有很多因素,其中之一是许多公司使用Node作为其基础服务。这与我们去年的预测一致。“2016年,我们可以预见会有更多的公司进一步采用Node及其包管理工具npm。由于Node的长期支持计划,微软、IBM、Intel、Progress等大公司将继续使用Node来替代一些传统的企业解决方案,例如.NET和Java。”从Node的增长趋势来看,上述预测结果并不令人意外。关于Node的案例研究表明,一些中型公司已经开始使用Node,包括Netflix、GoDaddy和CapitalOne。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”得到了近10,000个结果。Angular是通过npm分发的众多库之一。2017年,我们相信会有更多的公司从传统的开发方式(如Java和C#)转向N??ode.js。我们相信TypeScript也将有助于推动Node的发展,因为它对Java和C#的开发人员更友好。Node对LTS版本的支持承诺也将有助于这一趋势,因为它保证这些公司使用的版本将在未来几年内得到持续支持和维护。一般来说,大公司不喜欢维护多种开发系统和语言。借助Node,这些公司可以使用单一语言来集成所有开发系统,而不仅仅是服务器端代码。让我们来看看JavaScript是如何影响移动端的。PhoneGap和CordovaPhoneGap及其基石Cordova是JavaScript首次涉足本机开发。Cordova将网页代码封装在WebView中,并使用WebView来驱动原生移动应用程序。这种方法允许Web开发人员使用他们已经拥有的技能(即JavaScript)来开发移动应用程序,因此,多年来,Cordova一直是开发移动应用程序的重要选择。但这种情况正在慢慢开始改变。如今,Cordova面临着许多替代方案的挑战,其中大部分都使用类似于Cordova的基于JavaScript的解决方案。或许Cordova最大的挑战来自谷歌主导的ProgressiveWebApps(简称PWAs)。Google的ProgressiveWebApps主页PWA为网络世界带来了许多近乎原生的功能,例如推送通知、离线访问和主屏幕图标。去年,我们预测谷歌将开始慢慢推出PWA方法。事实证明,这个预测仍然过于保守,因为谷歌已经明确表示他们将开展多项活动来推广PWA。在最近的Chrome开发者峰会上,以及今年的谷歌I/O大会上,谷歌对PWA有很多讨论。PWA与我们的讨论相关,因为它们已经开始侵占Cordova的领地——需要本机功能的Web应用程序。如果您的Web应用程序需要离线访问或推送通知功能,那么选择基于PWA而非Cordova将是更好的解决方案。尽管很难衡量有多少人选择混合使用PWA,但已经有大量证据表明Cordova的使用正在减少。以下是过去两年人们每周下载Cordova的次数。您可以看到,虽然Cordova下载量没有剧烈波动,但增长并不明显。2014年12月至2016年12月“cordova”npm包的每周下载量。(数据来自npm-stat.com)衰退还有一个原因。虽然我们认为PWA正在蚕食Cordova的份额,但我们也认为,移动领域的新开发方式也在蚕食Cordova的份额。NativemobileappsJavaScript驱动的原生移动应用程序是Appcelerator倡导的概念,在Facebook的ReactNative和Progress的NativeScript的帮助下开始流行起来。使用JavaScript开发的原生应用程序不使用WebView,因此无需担心基于Cordova的应用程序遇到的Web性能问题。在去年的讨论中,我们预测2016年将是这些框架成熟并被广泛使用的一年,这些预测现在看来是准确的。ReactNative的每周下载量在过去两年中持续增长。从2014年12月到2016年12月,'react-native'npm包的每周下载量。(数据来自npm-stat.com)NativeScript具有相同的趋势。2014年12月至2016年12月“nativescript”npm包的每周下载量。(数据来自npm-stat.com)变化不仅仅体现在这些JavaScript驱动的原生框架下载数据的增加上。最近的一项调查(StateofJavaScript2016)显示,JavaScript开发人员对ReactNative和NativeScript非常感兴趣。兴趣。在对JavaScript调查的分析中总结了2016年移动开发领域的JavaScript状态调查的结果。在兴趣得分上,“Cordova”和“PhoneGap”得分很低,这可能是它们的性能问题造成的。尽管Cordova和PhoneGap所依赖的移动浏览器和JavaScript引擎已经有了很大的改进,但仍然不如运行原生代码(例如ReactNative)。2017年,随着越来越多的JavaScript开发者开始尝试构建原生应用,我们期待这些框架能够使用JavaScript构建原生应用,从而加速其开发。React框架的快速发展也将有利于ReactNative,而NativeScript宣布将在5月完成对Angular2的支持。很多项目也会从Angular1升级到Angular2,NativeScript也会从中受益。我们也希望JavaScript驱动的原生框架能够吸引原生iOS和Android开发人员,因为它允许您仅用一份代码在两个平台上构建真正的原生应用程序。JavaScript越来越多地蚕食曾经由Objective-C和Java等语言主导的移动领域。但这并不是JavaScript入侵的唯一新领域。让我们将讨论转向下面的桌面应用程序。桌面应用程序传统上,如果要构建Windows或Mac应用程序,则需要使用特定于平台的工具,例如WPF和WindowsForms,或者使用跨平台解决方案,例如Java或Adob??eAir。然而,就像上面讨论的其他软件生态系统一样,基于JavaScript的解决方案正在蚕食这个空间。在去年的讨论中,我们讨论了两个最流行的用于构建桌面应用程序的JavaScript框架——NW.js和GitHub的Electron——并判断它们的使用量在2016年将显着增长。实际上,增长已经发生,Electron现在已成为一个重要的选择用于开发基于JavaScript的桌面应用程序。如果比较npm上“electron”和“nw”的下载量,您会看到“electron”(红线)和ReactNative的趋势相似,而NW.js的下载曲线相对平坦。2016年9月至2016年11月“electron”和“NW”npm包的每周下载量。(数据来自npm-stat.com)2015年12月,在GitHub上,Electron有20,000个star,NW.js有25,000个;今天,Elecron拥有近40,000颗星星,而NW.js只有30,000多颗。Electron也被主流桌面应用所接受。该框架现在支持VisualStudioCode。微软提供的VisualStudioCode是一款广受欢迎的编辑器,截至4月,用户已超过500万。Electron在React和Angular社区也得到了推广,因此可以很容易地在网上找到将Electron与这两个框架一起使用的教程。我们预计Electron将在2017年继续占据主导地位。我们预计Electron将进一步与最流行的框架(主要是React和Angular)集成,从而获得更多软件供应商的关注。随着JavaScript继续侵占传统上由Java和基于Microsoft的技术主导的领域,我们预计Electron将继续用作WPF、Java和Adob??eAir等开发替代方案。使用一种语言来完成您所有的开发需求。这个解决方案不仅足够吸引人,而且还采用了JavaScript的一些最新的开发方式。最后,让我们看看JavaScript在一些新的软件领域中的表现。JavaScript的新领域如果你向分析师询问发展中国家的发展情况,虚拟现实、聊天机器人和物联网(IoT)是他们脱口而出的一大堆流行概念。在所有这些新技术中,JavaScript是聊天机器人领域中最重要的,人们使用JavaScript开发从简单的Slack机器人到用于进行业务交易的复杂机器人的所有内容。在聊天机器人领域,大多数框架都在其SDK中集成了Node库,包括Botkit、微软的BotFramework和Facebook的wit.ai。MicrosoftBotFramework的文档甚至解释了为什么应该使用Node来开发机器人。“Node-basedBotBuilder是一个非常强大的构建机器人的框架。它可以处理各种形式的交互并提供更多的指导。它可以清楚地向用户展示这些可能性。它使用了一些框架(例如Express和Restify),允许开发人员以熟悉的方式开发机器人。”ReusingJavaScript也为很多流行的物联网库(如Losant和zetta)和LeapMotion等设备提供了NodeAPI,Chrome浏览器团队和A-Frame框架团队是其中的典型,虚拟中使用JavaScript的团队也很多现实。GoogleChrome团队有一个令人印象深刻的用JavaScript构建的虚拟现实实验集合,你也可以自己尝试。但是,在C++、Python和C#主导的领域,JavaScript并没有很大的优势。例如,OculusRift设备主要使用C++,而微软的HoloLens要求你用C#编写。我们预计这种趋势将在2017年开始改变。随着JavaScript越来越流行,JavaScript将继续扩展到VR和物联网等领域更快。随着新的软件开发生态系统的出现,我们预计JavaScript将迅速上升为一等公民。JackpotJavaScript在10年前,在服务器上使用JavaScript是不可想象的;今天,Node拥有350万用户,并且每年以100%的速度增长。5年前,使用JavaScript驱动原生iOS或Android应用程序还只是星星之火,而今天NativeScript和ReactNative正以惊人的速度增长。3年前,使用JavaScript构建桌面应用程序很少见,如今Electron的月下载量超过10k。JavaScript不会用于所有场景的编程,因为很多其他语言更适合解决特定场景下的问题。但无论使用什么开发平台,JavaScript的广泛使用肯定会是一个重要的因素。关于这个话题,杰夫·阿特伍德有一句广为流传的名言,这或许是一个恰当的结尾,因为他的演讲总是充满远见。“可以用JavaScript编写的应用程序最终将用JavaScript编写。”iKcamp原创新书《移动Web前端高效开发实战》已在亚马逊、京东、当当网发售。
