文档章节

2016年度 JavaScript 展望(上)

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2016/04/20 16:27
字数 2552
阅读 52
收藏 2

【编者按】本文作者为资深 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 等相似包管理器的两倍左右。

2016年度 JavaScript 展望(上)

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个月的支持。

2016年度 JavaScript 展望(上)

这一开发周期的目的,是为了同时满足那些想走在前沿的开发者与需要稳定版本的大公司的需求。不可避免地,这样的开发周期也对 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 提供更好的支持](aimed at providing better support for client-side 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 的性能问题。这催生了 IonicOnsen 等以性能为中心的 UI 框架,以及 Kendo UI Mobile,由 PhoneGap 团队与 Telerik 公司联合开发的工具改进,还有 Crosswalk 提供的全新 Web 视图,以及 Telerik 插件市场中的多款高质量插件。

2016年度 JavaScript 展望(上)

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 官方技术博客

本文转自 OneAPM 官方博客

原文地址:http://developer.telerik.com/featured/what-to-expect-from-javascript-in-2016-beyond-the-browser/

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
谁是 2016 年的 JavaScript 之最?

JavaScript 社区正在不断地发展创新,趋势在不断地变化着。本文将通过比较过去1年里在Github上的 star 数,告诉你 2016 年的主要趋势。在2015年,React成为最大赢家,Redux在与Flux的大战中赢...

两味真火
2017/01/20
6.6K
22
勿以 star 数论高低!React 在前端框架世界仍是领先地位

上周在前端的 JavaScript 框架世界发生了一件称得上是“里程碑”的事:Vue.js 在 GitHub 上的 star 数量终于超过了 React.js 的 star 数量。 通过使用一个叫做 Star History 的工具,我们可以...

局长
2018/06/21
6.5K
42
Vue.js 超越 React.js?勿以 star 数论高低!

上周在前端的 JavaScript 框架世界发生了一件称得上是“里程碑”的事:Vue.js 在 GitHub 上的 star 数量终于超过了 React.js 的 star 数量。 通过使用一个叫做 Star History 的工具,我们可以...

前端小攻略
2018/12/26
0
0
Facebook发布全新JavaScript引擎:Hermes

摘要: JS引擎开始升级了... 原文:技术栈中的爱马仕?Facebook发布全新JavaScript引擎:Hermes 作者:Carson_Ho Fundebug经授权转载,版权归原作者所有。 前言 目前,用户的流畅体验是用户能...

Fundebug
07/20
122
0
eBay 将开源 UI 库 Marko 移交给 JS 基金会

JS 基金会近日宣布正在接管 Marko。Marko 由 eBay 在 2012年 开发,并于 2016年 开源。 该项目是一个快速、友好的 UI 库,旨在简化 Web 开发。 Marko 平均每月从 npm 下载约 20万 次,目前已...

王练
2017/10/29
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

Handler消息传递机制分析

Handler的用途和用法 写过Android程序的人大概都会遇到ANR(Application Not Responding)。如果程序在一段时间内没有响应,系统就会弹出一个对话框,让用户选择继续等待还是强制关闭应用。为...

tommwq
今天
5
0
JS前端MD5加密

Bootstrap官网获得md5 js地址:https://www.bootcdn.cn/blueimp-md5/ <!--MD5加密--><script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script> 使用方法: md5(pwd)......

被毒打的程序猿_先瑞
今天
6
0
BigDecimal 去后面无用的0的方法

BigDecimal a=new BigDecimal("0.1000"); System.out.println(a.stripTrailingZeros().toPlainString());...

xiaodong16
今天
7
0
JAVA--高级基础开发

[集合版双色球] 十二、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码...

李文杰-yaya
昨天
27
0
聊聊rocketmq broker的CONSUMER_SEND_MSG_BACK

序 本文主要研究一下rocketmq broker的CONSUMER_SEND_MSG_BACK CONSUMER_SEND_MSG_BACK rocketmq/common/src/main/java/org/apache/rocketmq/common/protocol/RequestCode.java public class......

go4it
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部