JavaScript: 2015年度回顾(译文)

本文作者:IMWeb coolriver 原文出处:IMWeb社区 未经同意,禁止转载

本文为 《 2015 in review》 一文的中文译文,希望通过这篇译文,回顾和记录在2015年,JavaScript领域中发生的值得关注的事情。 本文作者为Craig Buckler, Craig 是一名英国的web开发顾问,并且是自由职业者。他在1995年于IE2.0上开始开发他的第一个网页。到目前为止Craig已经在sitepoint上发表了1000多篇文章。

正文

JavaScript刚刚经历了标志性的一年。除了在2015年5月达到了20岁“高龄”,它产生了大量新鲜技术,各种各样的项目,吸引了越了越多人的兴趣,并且这种成长趋势呈指数增长。可能是我自己进入了某个奇怪的循环(以致觉得js的增长呈指数),但我实在想不到有其它哪个技术,能有着JavaScript的发展步调。现在越来越难在JavaScript的技术潮流中与时俱进了,因此,希望这篇总结能够帮到一些。。

ECMAScript闪亮升级

ECMAScript Harmony或者说是ECMAScript 6,在经历了7年之久的漫长等待后,终于于2015年 6月随着一份 完整的官方文档 而问世。 ES6后来很快被重新命名为ES2015,虽然我不知道会有谁这样叫它。这个更名的出衷是好的,毕竟2015年是规范文档完工的年份。JavaScript工程师现在可以声明他们完全兼容ES2015,大家都会明白是啥意思(就是兼容ES6嘛,不明白作者为啥在ES的命名上纠结这么多。。)。不幸的是,ES2015这种在2016年1月1日后看起来有点过时的标记,不会有多少人愿意以此来声明自己(还是在纠结名字。。)。 ES2015对于开发者来说有啥重要的概念呢:

  • Class声明类
  • 字面量对象的增加
  • let 和 const定义局部变量和常量
  • 箭头函数
  • 字符串模板
  • iterator迭代器
  • generator函数
  • 解构
  • proxy
  • weakmap 和 weakset
  • symbols
  • promises
  • reflection 上面很多特性都是语法糖。例如,JavaScript仍然会保持原型式继承,但是提供了类式的声明和继承方法,为了那些以JS面向对象的方式蛋疼为理由,而不愿意从自己原本的语言切换过来的开发者们。 ES2015在环境支持性方面目前仍然不完成,但是可以通过将代码编译为ES5的方式来实现,这类转换工具有Babel等。这样可以正常进行开发,但是额外增加的编译步骤会使得测试和测试更麻烦。由我个人而言, 我作为一个JS鲁德分子(强烈反对提高机械化和自动化者。。作者真幽默),更倾向于暂时使用旧的语法,直到ES2015的支持情况有足够的改善。 但是从现在开始忘记ES2015吧 -- 让我们向ES7/2016前进!

JavaScript复仇者联盟

WebAssembly在2015年6月份正式被声明,并且被炒得火热。它是web环境里的一种底层的二进制语言,类似于汇编语言。 将大规模的应用以web的形式在浏览器上呈现一般不现实。一个游戏或者很复杂的应用程序,可能需要很多MB的源代码需要下载,然后编译成字节码并最终以机器码的形式运行进来。WebAssembly让这个流程变得更加高效,通过将源码编译为更简单,能更快被处理,并且可与JavaScript引擎兼容的字节码。浏览器可以因此更快地加载和执行代码。 我们之前已经探索过web里的字节领域,例如Flash, Silverlight, Java和Googlg Native Client(NaCI)都尝试过类似的功能,但应该都没有WebAssembly现在的优势:

  • 需要对JavaScript引擎的改造较简单
  • 不需要浏览器插件
  • 由Google, Microsoft, Mozilla和Apple几位大佬作为支持。 激动吗?你最好复习一下你的C/C++技能,因为这是WebAssembly首个编译支持的目标(复仇者联盟第二位选手,第一位是谁?JavaScript队长啊!)。

Node.js不再 Fork

从2014到2015年,Node.js从一个相对称手的运行环境,变成了一个必不可少的技术。Node.js无处不在,你的个人电脑,你的服务器,你的树莓派,你的嵌入式设备等等。甚至开发者们通过Node.js来使用构建工具,例如Grunt和Gulp。 2015年见证了围绕着Node的各种“政治斗争”,然后这些斗争在Node.js与io.js分支合并之后画上了句号。这意味着Node.js v0.12可以在9月份更名为 Node.js v4.0。是的,跳了三个大版本!因为io.js走远到v3.0并且已经回不去了。。 当然,版本号对大多数人只是浮云。。。除了对那些认为Node 4+比Ruby2和Python3更叼的人外。一个月后Node.js要进化到v5版本了,超越了.NET4,快要赶上PHP7啦!(版本号升级比赛么。。。)

框架显露疲态

在2015年里有2269个新的JavaScript框架出现。上面的数字我没经过任何调研,而是凭空捏造的,但估计很少有人会怀疑这个数字的正确性(无语。。。)。毕竟太难跟进所有新的框架了。。

对于JavaScript开发者来说,不可能很自信地使用一个特定的基础库或框架。在那些“啥都行”的框架中,使用时出现的大大小小的问题之多,可能堪比框架本身解决的问题数量。重度依赖某个框架是有风险的,毕竟框架将底层技术进行了抽象。就像下面这个明智的家伙(其实就是作者自己。。)说的,前端里JavaScript依赖有明显的问题 如果实在是需要,可以使用框架,但千万不要认为框架本身永远是适用的。在你项目进行到半途的时候,更新更好的框架可能出现。一定要记住,框架只是一个选项 -- 你可以选择不使用。对于较小较敏捷的项目,使用越少的依赖会越安全。

工具的浪潮

你还记得以前那些无忧无虑的时光吗?那个时候,进行web开发只需要一浏览器,一文本编辑器和一FTP客户端足矣。现如今,你需要Node.js,Gulp/Grunt,git,静态HTML造成器(EMMET之类的吧),Sass编译器, Autoprefixer,minifiers,uglifiers,linters,BrowserSync(LiveLoad之类的吧)和其它一大堆构建工具,来创建一个基本的 “Hello World”页面。 看起来不错啊,我们可以开发越来越复杂的web应用了,自动化工具可以使我们简化一些繁杂的操作,从而让开发者们更能专注于应用中更有趣的部分。2015年对于下面的一些工具来说是有重大意义的一年:

  • Atom 1.0 -- GitHub出品的编辑器,基于Node.js并且支持hack(自定义),于6月份发布。
  • PostCSS -- 高效的模块化CSS编译器,在今年出现的工具中我很看好它。
  • 一些例如EdgeVivaldi的浏览器上的开发者工具。 除去所有这些第三方的开发工具不算,一个web页面的平均体重达到了2MB,包含100多个文件请求。你觉得这是一种进步吗?可能真的不是,如果你看了 Klint Finley的那篇文章的话。技术本身没有错,错的是使用方法。关掉页面JS后会干掉页面上的广告、弹窗、模态对话框、无限滚动页面、实时消息提示这些很令人蛋疼,但我们认为很重要的功能。。。

最后

“官方声明”(作者自己声明):Node.js比PHP更好! 这篇文章虽然没有直接喊出这个口号,但是可以看到Node.js目前已经发展到了什么地步。可能PHP在版本7的时候提高了性能,但最终还是要用你自己用得最爽的技术(对于作者来说就是Node)。最近WordPress.com的站点从PHP迁移到了Node.js,项目的应用比语言本身更有说服力。 2015年技术界中散播得最多的一个词是“同构(isomorphic)”。SitePont里之前对此有过讨论 并且提供了样例代码。本质上是,你的代码一次编写,到处运行 -- 在浏览器里或者在服务器上。这对一些小应用来说很简单,但很快会复杂得让人头大。 jQuery 3.0的第一个alpha版本在7月发布。两个新的version出现,一个适用于现代浏览器,另一个兼容IE8。 12月份,Mozilla宣布他们停止售卖Firfox OS智能机。这不是Firefox OS的终结 -- 开发仍在继续,并且在一些智能电视中应用。相比于倒腾操作系统,弄一下离线WEB应用是否更有前途? 2015年最大的公司级JavaScript惊喜来自于Microsoft:

  • Visual Studio Code,一个新的跨平台的,可扩展的,类Sublime Text/Atom的编辑器。
  • vorlon.js,一个开源的远程调试和测试工具。
  • Chakra,Edge的JS引擎开源啦。 鉴于微软对web界的开放,我们是不是该叫它“新微软”了?

2016年展望

大家对待JS的态度如今有了转变,几年前, 开发者们认为它是很不成熟的,并且尽量不使用。在2016年,JS语言本身,以及相关工具和框架,将会继续增长和发展! 跟上时代步伐不容易啊,但如果跟着JavaScript走,你就不会太落伍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Web 单点登录系统

对于企业内部系统来说,CAS系统是一个应用最广的开源单点登陆实现了,其实现模仿Kerberos的一些概念,例如KDC、TGS等等,都是来自于Kerberos。具...

32610
来自专栏FreeBuf

两张图片告诉你为什么域名会被解析到65.49.2.178

2014年1月21日中国出现重大网络事故,大量域名被解析到一个65.49.2.178 这个IP了。 中国的一家DNS服务商DNSPOD于 2014 年 1 月...

4177
来自专栏程序人生

数据:逍遥游

对程序员来说,数据是我们时刻都在打交道的东西。我们的代码如同一台机器,把进入的数据转换或者映射成出来的数据。数学上,不过是:y = f(x) 而已。数据就像庄子...

1684
来自专栏编舟记

架构整洁之道导读(二)

我是《架构整洁之道》(Clean Architecture) 中文版的技术审校者,在审校的过程当中略有感悟,所以希望通过撰写导读的方式分享给大家。

1302
来自专栏HansBug's Lab

【备忘】Idea的那些事

说到Java的IDE,似乎eclipse和Idea是目前的主流。然而,OO的课程组却一直在推荐使用eclipse,于是很多人就这样错过了Idea这样强大的IDE...

4359
来自专栏养码场

一位资深Java的阿里系公司实战面试经验,套路还是面试官的多

占小狼:一位奋斗在魔都的资深Java开发。去年6月在简书上发第一篇技术文章,已坚持发表76篇技术文章,粉丝数突破4000。

2407
来自专栏北京马哥教育

Python Web不知道怎么学?看这篇就够了!

Python的用处太多,前端、后端、数据、ML\AI、自动化等等等等。很多小白不知道学习方向导致学的东西太杂,技能范围很广但是没有高度,自己玩可以工作就完蛋。这...

42210
来自专栏何俊林

Python爬取腾讯视频

3.2K5
来自专栏即时通讯技术

微信团队原创分享:iOS版微信的内存监控系统技术实践

FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀。对用户而言,表现跟crash一样。Facebook早在...

1602
来自专栏开发与安全

在腾讯实习的那段日子:不要在难受的时候选择 '逃避/离开'

时间过得很快,从2014.6.5入职实习到2015.1.5已经是7个月的时间了,在这边还是学到了很多东西,遇到的人大多数比较nice。中间拿到了留任offer,...

2340

扫码关注云+社区

领取腾讯云代金券