【编者按】本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是《jQuery UI 实践》 一书的作者。
本文系 OneAPM 工程师编译呈现,以下为正文的第一部分。点此阅读第二部分。
在过去的几年间,JavaScript 这种原本用于 Web 浏览器端的脚本语言,越来越多地出现在更广泛的软件应用中。现在,JavaScript 可用作服务器端代码,运行 iOS 与 Android 应用,甚至控制机器人。很难想象还有什么软件生态系统是 JavaScript 没有影响到的。
JavaScript 之所以能在这些新领域长驱直入,很重要的一个原因就是性能。然而,几年以前,在服务器端运行 JavaScript 还是完全不可想像的。在2008年,谷歌开始开发浏览器,并进军 JavaScript 引擎世界,继而触发了一场性能大战,最终极大地提升了该语言的速度。最近的一些努力,诸如 asm.js 只是锦上添花罢了。
本文将会介绍,除了用 JavaScript 框架运行服务器端 JavaScript、创建移动 apps 以及桌面应用之外,未来将何去何从?文中将直接引述许多 JavaScript 解决方案的开发者之观点。让我们首先了解 Node.js 的发展,这或许是 JavaScript 的首个新领域。
Node.js
Node.js 是一款基于谷歌 V8 JavaScript 引擎的开源式运行时环境。尽管许多公司与框架都试图在服务器端运行 JavaScript,Node.js 却是首个大规模成功做到这一点的运行时环境。
从2009年首次推出开始,Node.js 的流行度可谓突飞猛进。使用 Ndoe.js 的公司数不胜数,而此前新近建立的 Node.js 基金会则包括 IBM,Intel,PayPal 以及 Microsoft 等巨头。Node.js 包管理器——npm,更是成为2014年软件世界中规模最大的包管理器,现在其包含的模块数是 Java 与 Ruby 等相似包管理器的两倍左右。
npm 包管理器的增长情况。图片来源:modulecounts.com
然而,Node.js 的成功并非没有经历波折。2014年底,一群开发者为此流行框架创建了一个分支,他们认为此前缺少活跃积极的新贡献者,导致 Node.js 版本更新太慢。这一新的框架,io.js很快虏获了众多追随者与社群的支持,这也让许多人担心 Nodo.js 世界将会长期处于分裂状态。幸好,2015年6月,Node.js 与 io.js 实现合并,这些担忧也不复存在。
此次合并在一定程度上促进了 LTS 计划( Node.js 版本长期支持计划)的诞生。根据该计划,Node.js 每年都会指定一个版本为 LTS 版本,并为其提供长达18个月的支持。
这一开发周期的目的,是为了同时满足那些想走在前沿的开发者与需要稳定版本的大公司的需求。不可避免地,这样的开发周期也对 Node.js 的未来产生了重要影响。笔者就“2016年 Node.js 的最大变化”采访了 Node 基金会的 Mikeal Rogers,他的回答如下:
“全新的开发周期将成为最大的变化。每年,我们都会发布两个主要版本,而只有其一将得到长期的支持。这确实是前所未有的变化。此前,我们并未真正意义上实现 LTS 计划。因此,对广大开发者而言,这是全新的变化;对企业而言,这是提高产品采纳率的新机遇。” ——Node 基金会,Mikeal Rogers。
Node.js 2016年展望
在2016年,Node.js 与其包管理器 npm 的采纳率有望进一步提升。诸如 Microsoft、IBM、Intel、Progress Software 等大公司对 Node 的持续采用,以及诸如长期支持计划等企业友好型功能的推出,可能预示着 Node.js 在企业间的采纳率持续增长,甚至取代一些 .NET 及 Java 提供的典型企业级解决方案。
此外,npm 模块的指数级增长也有望继续保持,因为 npm 最近推出的版本专注于为客户端 JavaScript 提供更好的支持,从而削减 Bower 等客户端 JavaScript 包管理器的需求。随着越来越多的开发者开始在 npm 注册客户端脚本与 jQuery 插件,npm 的触角只可能进一步延伸。实际上,根据 Mikeal Rogers 的观点,npm 增长的主因其实是 Node.js 生态系统的进一步完善。
”几年前,我对 npm 的增长率进行量化,进而创建了一副 npm 增长预测图。当时,许多人认为这图简直是天方夜谭,因为图中预测在一年多的时间里,模块数量将超过10万,而且增长率不会趋于平衡状态。但实际情况却是,仅仅数日,模块数量就超过了10万,这让我也颇感惊讶。
如果你仔细了解 npm 的增长模式,你会发现推进 npm 持续增长的动力来自 node.js 生态系统。这里是为众多使用案例创建子平台的最佳环境。即便生态系统的一些部分会趋于平衡状态,但是新的快速成长的生态系统很快就会取而代之。” ————Node 基金会,Mikeal Rogers。
作为以上观点的佐证,几乎本文涉及的所有 JavaScript 解决方案,包括 Cordova,React Native 与 NativeScript 都使用 npm 作为包管理器。如果你在 npm 搜索一下 “jquery”、“polymer”、“meteor”或“react”,就能了解 npm 现在的规模是多么庞大。当然,随着 npm 的普及率持续增长,Node.js 的采纳率也是一路高歌猛进。作为软件世界首个主流的服务器端 JavaScript 框架,其未来可谓一片光明。
下面,让我们来一些不在服务器端运行 JavaScript,而是使用 JavaScript 运行移动 apps 的技术。
PhoneGap and Cordova
与 Node.js 是首个将 JavaScript 运行在服务器端的主流解决方案相类似,PhoneGap 是首个使用 JavaScript 运行本地移动 apps 的主流解决方案。最初,PhoneGap 于2009年由 Nitobi 创立,在 2011年10月由 Adobe 公司收购。作为收购的一部分,PhoneGap 的源代码被捐赠给 Apache 软件基金会,此项目也更名为 Cordova。如今,Cordova 已经成为一个免费的开源框架,得到许多公司的支持。而 PhoneGap 则是 Adobe 所有的一个 Cordova 分支。
多年来,Cordova 都在与性能不佳的名声做斗争。其中,最广为人知的抱怨出现在2012年,出自科技界最有影响力的人之口:
“当我反省过去几年的经历时,发现我们公司犯下的最大错误,是在 HTML5 中投入了太多努力……” Facebook 创始人,Mark Zuckerberg。
从2012年开始,一些公司开始介入解决 Cordova 的性能问题。这催生了 Ionic、Onsen 等以性能为中心的 UI 框架,以及 Kendo UI Mobile,由 PhoneGap 团队与 Telerik 公司联合开发的工具改进,还有 Crosswalk 提供的全新 Web 视图,以及 Telerik 插件市场中的多款高质量插件。
Telerik 插件市场
除了这些公司提供的性能援助,由移动 OS 创造者提供的新功能,诸如 Android 的自动更新 Web 视图与 iOS 的新 WKWebView API,有效地帮助了 Cordova 的性能提升。基于此,笔者采访了前 Adobe PhoneGap 团队成员 Brian LeRoux,咨询他对 Cordova 的未来作何设想。
“现而今,Cordova 已经变得相当稳定。我们努力保持简洁,用插件接口实现各种功能,并尽可能在 Android M 与 iOS 9 等平台更新中保持主动。虽然经历了几年的颠簸,但是现在’小模块化’的思想终于开始落地生根,这让我颇感欣慰。如果不是要在自己的项目中延展使用 Cordova,终端设备开发者恐怕无法了解这一思想的好处。” Brian LeRoux
Cordova 2016年展望
与 Node.js 相似,Cordova 的稳定性对于刚开始在移动开发领域试水的大公司而言尤为诱人。而使用 Cordova 结合 HTML,CSS 以及 JavaScript 打造移动 apps 的方法对众多 web 开发者来说也极具吸引力,尤其是与使用 Xcode 与 Android Studio 进行本地开发的方式相比。
尽管 Cordova 的普及率持续走高,其开发方式却遭到了两个方面的挑战。挑战一来自努力推广渐进式应用(progressive apps)的谷歌,此类应用包含启动时屏幕、主屏幕布局以及离线访问等功能。目前,渐进式应用仍处于早期阶段,其功能仅限于 Android 版 Chrome 浏览器。然而,在2016年,谷歌肯定会继续推广渐近式应用的概念。
Cordova 开发的第二个更为迫切的挑战来自 JavaScript 世界的一项新近发展:使用 JavaScript 构建真正的本地移动应用。
本文的后半部分将重点介绍2016年本地移动应用(Native mobile apps)与桌面应用可能的新发展,以及 JavaScript 可能触及的新领域。敬请期待。
本文系 OneAPM 工程师编译呈现。OneAPM Browser Insight 是一个基于真实用户的 Web 前端性能监控平台,能够帮大家定位网站性能瓶颈,网站加速效果可视化;支持浏览器、微信、App 浏览 HTML 和 HTML5 页面。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
原文地址:http://developer.telerik.com/featured/what-to-expect-from-javascript-in-2016-beyond-the-browser/