文档章节

2016年度 JavaScript 展望(下)

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2016/04/20 17:16
字数 2508
阅读 94
收藏 9

【编者按】本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是《jQuery UI 实践》 一书的作者。

本文系 OneAPM 工程师编译呈现,以下为正文的第二部分。点此阅读第一部分

##本地移动 apps 在2015年,出现了一种新的基于 JavaScript 的移动应用开发类别:JavaScript Native。与基于 Cordova 或 PhoneGap 的应用不同,JavaScript 本地应用使用平台的本地控制与范型建立用户界面,无需涉及浏览器或 web 视图。

JavaScript Native 框架试图提供一种两全其美的方式建立 iOS 与 Android 应用:使用 JavaScript 编写程序逻辑(而不是 Java,Swift 等),使用平台的本地用户界面 API 建立适应原生 OS 的应用,从而实现可能的最佳性能。

2016年度 JavaScript 展望(下)

使用 JavaScript 打造的移动 apps 举例,点此获得源代码

React NativeNativeScript是2015年最早公开发布的两个 JavaScript Native 框架,后来者还包括 Fusetabris.js。自然,不同的框架提供了不同的功能。比如说,React Native 允许重用 React JavaScript 框架,而 NativeScript 允许直接调用 iOS 与 Android APIs。但是,他们都具备使用 JavaScript 搭建真正本地 apps 的高级方法。

尽管使用 JavaScript 建立本地 apps 的想法对 web 开发者而已相当诱人,但与 Cordova 之类的框架相比,JavaScript Native 框架也存在如下的一些缺陷:

  • 由于 JavaScript Native 框架不使用浏览器,你必须学习用于搭建界面的框架相关的 APIs,而不是像打造 Cordova 应用那样简单地使用 HTML 语言。

  • 由于 JavaScript Native 应用是本地应用,在建立较为大型的应用时,内存管理是需要额外考虑的问题,这与建立本地 iOS 与 Android 应用时如出一辙。

  • 最后,由于 JavaScript Native 框架非常新兴,可参考的案例与教程都很有限。与那些经历多年发展的框架相比,这些框架还很不成熟。

就这些框架在2016年的发展,笔者采访了来自 React Native 团队的 Christopher Chedeau (aka Vjeux)以及 NativeScript 的产品经理 Valio Stoychev。两者都不谋而合地关注于稳定性。

“就 React Native 而言,我们已经度过了早期的新鲜阶段,现在正进入的这个阶段要求我们变得更加牢靠。你可以发现,在性能工具优化、核心 APIs 提升,错误消息优化以及边缘案例修复方面,我们投入了大量的努力。这样,Facebook 内外的工程师才能随心所欲地打造更加高质量的移动 apps。“ ——Facebook,Christopher Chedeau (Vjeux)。

”随着用户基础的不断扩张,我们要为用户确保一个鲁棒的框架,才能在此基础上打造切实可行的应用。因此,我们打算继续在性能及调试工具方面努力,从而提高 NativeScript 开发者的体验。此外,另一重心是与 Angular 2 团队的合作,预计将贯穿2016年。” ——Telerik,Valio Stoychev。 ##JavaScript Native 2016年展望 对 JavaScript Native 平台而言,2016年的重点是提升稳定性与采纳率。随着 React Native 与 NativeScript 等框架不断巩固其功能集,预计围绕这些框架的工具也会越来越多,比如 Telerik 用于搭建 NativeScript 应用的 Telerik Platform

当然,时间会告诉我们,2015年 JavaScript Native 应用的大热能否在2016年转化为大规模的使用。但是,使用这些框架成功打造的大量高质量应用(查看 React Native 案例展示NativeScript 案例展示)似乎在暗示,用 JavaScript Native 方法打造应用的模式将会流行很长一段时间。

对需要结合本地 UIs 与本地应用的公司而言,JavaScript Native 框架相比于使用 Xcode 与 Objective-C/Swift 打造 iOS 应用以及使用 Android Studio 与 Java 打造 Android 应用,提供了更加强有力的选项,尤其是考虑到多数公司的开发者都具备一定 JavaScript 开发能力。

总而言之,JavaScript Native 应用对 JavaScript 开发者而言是令人激动的全新战场。JavaScript 开发者不再需要学习本地编程语言就可以编写本地移动应用。然而,本地移动应用并不是 JavaScript 渗入的唯一领域——在传统的桌面应用领域,JavaScript 也有涉足。

##Desktop 应用 习惯上,如果想搭建一个 Windows 或 Mac 应用,你会使用 WPF 与 Windows Forms 之类的平台特定工具或 Java、Adobe Air 之类的跨平台接口。但是,与本文中讨论的其他软件生态系统一样,基于 JavaScript 的解决方案正慢慢地侵入这一版图。

该领域内首个基于 JavaScript 的解决方案是 Node-WebKit,由 Intel 创建并于2011年底实现开源。Node-WebKit 现在又称为 NW.js,因为它已经从 WebKit 切换为 Chromium。NW.js 的实现方式与 Cordova 有些类似,只不过它针对的是桌面应用。

2016年度 JavaScript 展望(下)

NW.js 最早由 Intel 开发,于2011年公开发布。

NW.js 会将 web 应用打包至本地 shell,同时提供访问本地桌面 APIs,诸如文件选择器、窗口菜单等功能。这种组合允许你使用基于统一标准的 web 技术打造 Windows,OS X 以及 Linux 桌面应用。

如果快进一两年,你会发现 NW.js 并非使用这种基础架构的唯一框架。2015年4月,GitHub 宣布推出 Electron,一款相似的用于创建跨平台应用的框架。

2016年度 JavaScript 展望(下)

GitHub 于 2015年4月宣布推出 Electron

Electron 最早作为 Atom(GitHub 的 web 端文本编辑器)的 shell 开发出来,之后经过拆分更易于在其他项目中使用。因为 GitHub 的支持,Electron 的流行度突飞猛进,现在在 GitHub 上有超过2万颗星(很快赶上 NW.js 的2.5万颗星)。

2015年,作为 Microsoft 全新跨平台 Visual Studio Code IDE 背后的引擎,Electron 再次登上头条。此外,浏览一下社群创造的 Electron 资源列表,就会了解 Electron 在开发社群是多么受欢迎。

##桌面应用 2016年展望 与本文讨论过的许多技术相似,用于搭建桌面应用的这些跨平台 JavaScript 工具的未来似乎前途无量。有了 GitHub、Microsoft 甚至 Slack 这些先例——Slack 其实并非基于 NW.js 或 Electron 搭建,但是也使用了 web 技术创建本地应用——其他公司可以信心满满地使用 web 技术搭建桌面应用。预计,在2016年,NW.js、Electron 之类的项目将会创建出更多的桌面应用。

##2016年 JavaScript 的新领域 尽管本文讨论的话题似乎有些分散——服务器端代码、移动 apps 以及桌面应用,叙述的主体却是基本一致的:短短几年时间里,在这些环境中运行 JavaScript 从不可想象演进为大势所趋。在不到十年时间里,JavaScript 从用于处理图片翻转的小儿科语言,进化为可能是世界上最流行的编程语言。JavaScript 的未来,似乎无可限量。

2007年,Jeff Atwood 发出豪言:”任何能用 JavaScript 编写的应用,最终都会由 JavaScript 写就。“这句话简直如先知一般准确。事实上,JavaScript 已经延伸到许多本文未曾涉及的领域,例如通过 Johnny-Five 这类项目运行在硬件,甚至在苹果最近宣布的用于 Apple TVs 的 tvOS 中成为创建本地应用的一等公民

促使 JavaScript 不断成长的一大原因,是人们对使用单一开发模型打造多种范型软件的渴望。大多数公司,尤其是小公司,都无法雇佣足够数量的开发者,以满足人们当前使用的不计其数的操作系统与设备类型的需求。甚至在 Facebook 这种规模的公司,这也是一大问题,正如 Christopher Chedeau 所说:

”在我眼中,开发者世界的一大悲哀是社群依据语言(甚至是生态系统)进行划分。 JavaScript、Java、Objective-C、Python 以及 C++ 等。实际上,这导致了资源的巨大浪费,因为针对每个生态系统,都要开发类似的一套工具,诸如包管理器,IDE,核心函数库,知识库等。

举个具体的例子吧,在 Facebook,每个功能我们都必须实现三次:Web 版,iOS 版以及 Android 版。更糟的是,由于一个工程师往往难于同时掌握这些生态系统,我们通常需要三个人来实现一个功能。这真是悲哀。

为了解决该问题,我首先想到的是,我们需要一种单一的语言或生态系统。有了 React Native,我们更趋向于 JavaScript 语言,但从宏观的角度看,哪一种语言并不重要。重要的是,只保留一种语言。“ —— Facebook,Christopher Chedeau。

随着 JavaScript 迅速地在移动、桌面、服务器、硬件领域获得青睐,它已经成为唯一可能让此美好愿景成为现实的语言。时间会告诉我们,JavaScript 的极速增长能否在2016年持续下去。不过,JavaScript 工具在软件生态系统的快速普及似乎预示着 JavaScript 无可限量的未来。

基于此,笔者将用 Brendan Eich 的名言作为本文的结尾:“永远相信 JS(Always bet on JS)。”

本文系 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.4K
42
Vue.js 超越 React.js?勿以 star 数论高低!

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

前端小攻略
2018/12/26
0
0
2013年3月TIOBE编程语言排行榜,Ruby超越Perl

TIOBE 编程语言排行榜发布 2013 年 3 月份的榜单,与 2 月份比较该榜单唯一有变化的就是 Ruby 语言取代 Perl 排在第 9 位。Perl 语言是否正在逐渐的跌出前十名?拭目以待! 此榜单还有另外一...

oschina
2013/03/12
27K
102
Chrome 52 将支持 ES7:Canary 通道已上线

谷歌工程师已经宣布,他们已在Chrome Canary中添加了几乎全部ES6(ECMAScript)特性、以及对ES7的基本支持。Chrome Canary属于alpha发布通道,其下一步是迁移至Beta通道,最终则是于Chrome ...

oschina
2016/05/03
4.1K
14

没有更多内容

加载失败,请刷新页面

加载更多

精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
9分钟前
3
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
21分钟前
1
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
27分钟前
3
0
composer爆错:zlib_decode():data error

解决办法:先用 composer diagnose 命令检测 然后 composer self-update 更新composer版本 最后执行 composer update 或者 composer install composer 切换阿里云镜像 用起来还快 composer c...

koothon
33分钟前
3
0
shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部