天天看点

2016年度 JavaScript 展望(下)

2016年度 JavaScript 展望(下)

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

由于 javascript native 框架不使用浏览器,你必须学习用于搭建界面的框架相关的 apis,而不是像打造 cordova 应用那样简单地使用 html 语言。

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

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

“就 react native 而言,我们已经度过了早期的新鲜阶段,现在正进入的这个阶段要求我们变得更加牢靠。你可以发现,在性能工具优化、核心 apis 提升,错误消息优化以及边缘案例修复方面,我们投入了大量的努力。这样,facebook 内外的工程师才能随心所欲地打造更加高质量的移动 apps。“ ——facebook,christopher chedeau (vjeux)。 ”随着用户基础的不断扩张,我们要为用户确保一个鲁棒的框架,才能在此基础上打造切实可行的应用。因此,我们打算继续在性能及调试工具方面努力,从而提高 nativescript 开发者的体验。此外,另一重心是与 angular 2 团队的合作,预计将贯穿2016年。” ——telerik,valio stoychev。

对需要结合本地 uis 与本地应用的公司而言,javascript native 框架相比于使用 xcode 与 objective-c/swift 打造 ios 应用以及使用 android studio 与 java 打造 android 应用,提供了更加强有力的选项,尤其是考虑到多数公司的开发者都具备一定 javascript 开发能力。

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

习惯上,如果想搭建一个 windows 或 mac 应用,你会使用 wpf 与 windows forms 之类的平台特定工具或 java、adobe air 之类的跨平台接口。但是,与本文中讨论的其他软件生态系统一样,基于 javascript 的解决方案正慢慢地侵入这一版图。

2016年度 JavaScript 展望(下)

nw.js 最早由 intel 开发,于2011年公开发布。

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

2016年度 JavaScript 展望(下)

github 于 2015年4月宣布推出 electron

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

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

促使 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 无可限量的未来。

继续阅读