JavaScript: 2016年回顾
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本身。首先学习语言,并继续建立你的知识。您的经验将帮助您了解每个框架的运作方式,以便您做出明智的选择。这个选择可能是完全不需要框架。
新年快乐!
翻译自:https://www.sitepoint.com/javascript-2016-in-review/
建议继续学习:
- 规范自己的JavaScript书写 (阅读:5968)
- JavaScript,只有你想不到 (阅读:5113)
- 我希望我知道的七个JavaScript技巧 (阅读:4554)
- JavaScript是Web的汇编语言(一):语义Web已死! (阅读:4371)
- Javascript的那些事儿 (阅读:4129)
- 能说明你的Javascript技术很烂的五个原因 (阅读:3974)
- javascript语句的执行过程分析 (阅读:3158)
- JavaScript是Web的汇编语言(二):疯狂,亦或只是精神错乱? (阅读:2924)
- JS不是前端的全部 (阅读:2755)
- Javascript诞生记 (阅读:2697)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:愚人码头 来源: WEB前端开发
- 标签: 2016 javascript
- 发布时间:2017-02-19 23:59:26
- [53] IOS安全–浅谈关于IOS加固的几种方法
- [52] Oracle MTS模式下 进程地址与会话信
- [52] 如何拿下简短的域名
- [50] android 开发入门
- [50] 图书馆的世界纪录
- [48] 【社会化设计】自我(self)部分――欢迎区
- [45] Go Reflect 性能
- [45] 读书笔记-壹百度:百度十年千倍的29条法则
- [42] 视觉调整-设计师 vs. 逻辑
- [39] 界面设计速成