翻译自:https://www.sitepoint.com/javascript-2016-in-review/
2016 年是意义重大的,奇怪的,欢欣鼓舞?/ 可怕的一年,这取决于你的观点。与其他事件相比,只专注于 JavaScript 可能看起来无关紧要,但它是每个 Web 开发人员的工作生活的一个巨大的一部分。
JavaScript 人气持续爆涨。不是每个人都喜欢这门语言,但是现在你可能很少听到十年前嘲笑的评论。就个人而言,我一直喜欢 JavaScript – 即使在早期,令人沮丧的年头。那些从 C++,Java 或 PHP 方向过来使用它的人可能首先会感到困惑:JavaScript 看起来似曾相识,却又如此陌生。克服你的推断,你会欣赏它简单的优雅,实用性和灵活性。(That said, date handling is still a nightmare!,这就是说,日期处理仍然是一场噩梦!愚人码头看不懂这句是什么意思。)
JavaScript 在五月迎来了它第 21 个生日,让我们回顾一下它刚成熟的第一年……
ECMAScript 演变
ES6 / 2015 是这门语言自诞生以来最重要的更新。这份规范花了 7 年才完成,但现在浏览器和其他运行运行环境终于开始支持箭头函数,let,const,代理和更多令人喜悦的特性。ES6 的兼容性也慢慢变得很好。
如果你需要支持更老版本的浏览器,完全切换到 ES6 可能还有点早。更老版本的意思是,一年多前发布的任何东西。您可以使用编译器将 ES6 转译为 ES5,如 Babel,但是如果你不引入额外的构建步骤,开发就会变得复杂。
ES7/2016 比起革命更像是一种进化。一个令人激动的新特性是 async,它允许以同步的方式编写异步代码,而不需要回调或 Promise 的复杂语法(它让我一直很头疼)。
渐进式的 Web App(Progressive Web Apps)
2016 年,我最喜欢的基于 JavaScript 的技术是渐进式的 Web App。PWA( Progressive Web Apps)在 Google 的 2015 年 Chrome 开发者峰会上宣布,但稳定的技术和工具最终于 7 月发布的 Chrome 52 中实现。PWA 允许离线优先功能,并取代片状 AppCache 方法。Web App 终于可以和原生 App 竞争,并提供以下优势:
- 一个首屏的图标。
- 快速启动和自定义启动屏幕
- 更快的执行
- 没有 Internet 连接的脱机功能
- 网址,链接和书签
- 全屏或主题接口
- 沙箱执行
- 本地和/或基于云存储与同步
- 更少的设备空间和处理资源
- 更加安全 (前提是使用 HTTPS 协议)
- 从任何搜索引擎中很容易发现
- 先试后安装
- 更简单的部署:它只是一个 Web 应用程序
- 没有应用商店一说: 你的应用可以包含你最原始的,最疯狂的想法,而且没有人会向你收取 30%的利润。
最重要的是:任何网站或应用程序都可以在几个小时之内转换为 PWA。步骤如下:
- 在你的服务器上启用 HTTPS。
- 创建一个应用程序清单(manifest)—在你的应用程序根目录下的一个 JSON 文件,它定义了名称、颜色、图标和显示选项。
- 创建一个服务工作者(Service Worker)— 在你的应用程序根目录下的一个 JavaScript 文件,它拦截网络调用和根据需要返回缓存或实时数据。
目前还是处于早期阶段,例子很少,但是 PWA 提供了一个惊人的机会来使您的 Web 应用程序“移动化”。诚然,不能保证苹果是否会实现该技术,但这不重要:你的应用程序仍然可以在 Safari 上运行,它只是不会从离线执行中受益。我有一种预感,一旦 Android 上的网络体验取得明显的优势,苹果会受到激励并支持 PWA。
有关详细信息,请参阅 Dev.Opera 的 Progressive Web Apps:最终资源集合和Google 的 PWA 指南。
框架固定
要做出公正的判断是很困难的,但是 React 似乎在今年最受关注。你可能会不同意;这取决于你在使用什么,在浏览什么,在和谁交谈!
Vue.js 越来越受欢迎,版本 2 已于九月发布。
AngularJS 可能失去了在 2015 获得的一些势头,但在 9 月 Angular 2 发布后,情况可能会发生一些变化。新版本完全是重写的;它不向后兼容 v1.0 的版本。
新的框架和库是令人兴奋,但是十年前的 jQuery 仍然强大。3.0 版本已于 6 月 9 日发布,v3.1 随后于 7 月 7 日出现。这个库现在以严格模式( strict mode )运行,支持 Promises,并应用了各种补丁。(查看升级指南的完整更改列表。)
jQuery 被 96.4%的使用 JavaScript 的网站上采用。相比之下,Angular – 最常用的现代框架 – 拥有 0.5%的份额。jQuery 1.x 是最流行的版本,占总量的 93.5%。其次是 2.x 版本,它有 6.0%的占有率,3.x 版本是 0.5%。
我一直批评开发人员在每个项目中默认使用 jQuery。当一个更合适的选择或一些小的 JavaScript 就足够的时候,它可能被过度使用。然而,它提供了更浅的学习曲线,比大多数框架更灵活。一个框架或库要想取代 jQuery,还需要很长一段时间。
API 滥用
啊,电池状态 API。在 2013 年我讲述它的时候,它似乎很有用;什么会比当你的 app 检测到用户的手机准备要自动关机时,负责任地减少网络请求和处理更好呢?
不幸的是,Mozilla 估计大约 6%的网站使用 API,但是大部分都是广告商检测(相当)独特的电池状态和并跟踪用户浏览不同的域。当他们知道用户更加焦急时,某些服务也有提高价格的可能性.…
虽然这不是 JavaScript 或 API 问题本身,Mozilla 采取了前所未有的措施,从 Firefox 53 中删除电池状态 API,来解决隐私的原因。这个问题不可能出现在 IOS 设备上;和其他具有类似原因的 API 也包括近距离传感器和蓝牙。这些问题是多么让人感到羞愧啊,这些 API 接口都非常有实用价值,我真心的希望以后版本可以把隐私方面的问题解决掉。
新 Node
Node.js 计划每年更新版本两次,今年的四月和十月版本号为 6.0 和 7.0。这个平台正处于上升的趋势,尽管 W3C 技术小组报告 Node.js 服务器的使用率占比仅为 0.2%相比于占比高达 82.3%的 PHP。这个数据或许稍微有一些误导,因为就算 Node.js 被安装了,Node.js 服务器也识别不出来。
没有服务器端的运行时可以赶得上 PHP:它已经被使用了很长一段时间,仍然是主机选择提供的最实用的语言。然而,Node.js 开始走出了它的一条路,而且被所有信仰语言的开发者广泛使用。
Yarn 的故事(The Yarn of Yarn)
我喜欢 npm,并认为它是 Node.js 工具爆发的主要原因之一。我从来没有经历过太多的问题,但我没有在像 Facebook 这样大的项目上工作使用过。
Facebook 的工程师在十月发布了 Yarn。它是一个新的 Node.js 包管理器,旨在比 npm 更快更稳定。它依赖于 npm 注册表,所以应该保持完全兼容。
Tim Severien 的 Yarn vs npm:你需要知道的每一件事描述了提供的优点。我同意他的结论:
尽管 Yarn 不是一个分支(fork),它改善了 npm 几个缺陷。但如果 npm 从中学习,并且 Facebook、Google 和其他 Yarn 贡献者帮助 npm 继续完善,而不是新建 Yarn,不是更好吗?
对疲劳的厌倦
2016 年的 I-can’t-take-this-any-more(我不能再忍受了)文章被转到了 Jose Aguinaga 的在 2016 年学习 JavaScript 是怎样的感受(中文译文)。其他对疲劳的厌倦的表达还有:dayssincelastjavascriptframework.com。
这些可能是对 JavaScript 的当前状态的一种幽默的调侃,但是越来越难以跟上最新的趋势,框架和建议。当面对大量的选择来评估时,开发人员会做内心斗争。
我的建议:不要试图跟上前端发展的速度。这是不可能的。不管是你今天看好的哪个系统,明天都可能被其他东西替代。为你的项目选择一个选项,坚持它,除非这个选项变得站不住脚了。
只有一个绝对的确定的事情:JavaScript 本身。首先学习语言,并继续建立你的知识。您的经验将帮助您了解每个框架的运作方式,以便您做出明智的选择。这个选择可能是完全不需要框架。
新年快乐!