2016年度 JavaScript 展望(下)

可莉
• 阅读 463

【编者按】本文作者为资深 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/

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
2016年度 JavaScript 展望(上)
【编者按】本文作者为资深Web开发者TJVanToll,TJ专注于移动端Web应用及其性能(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.oneapm.com%2Ftags%25E6%2580%25A7%25E8%2583%25BD.html),是《jQue
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
可莉 可莉
2年前
2016年度 JavaScript 展望(上)
【编者按】本文作者为资深Web开发者TJVanToll,TJ专注于移动端Web应用及其性能(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.oneapm.com%2Ftags%25E6%2580%25A7%25E8%2583%25BD.html),是《jQue
Stella981 Stella981
2年前
2016年度 JavaScript 展望(下)
【编者按】本文作者为资深Web开发者TJVanToll,TJ专注于移动端Web应用及其性能(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.oneapm.com%2Ftags%25E6%2580%25A7%25E8%2583%25BD.html),是《jQue
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这