推荐序2
因为一件往事,我现在轻易不敢给别人写序或者书评。那天我在想,如果我要给这本书写序,是不是应该先把这本书拿给贺老(hax)看看。后来呢,我到阮一峰老师的 GitHub上看了一看,发现这本书有7500多个star,若干个已解决和未解决的issue,所以我就放心了。开源真是好啊!
这本书是关于 ES6 的,我对 ES6 并没有特别系统的研究,但是也在工作中使用了一部分ES6的特性,使用得最多的是Promise,其他的特性只是研究,很少使用,主要是因为本身支持ES6的环境和工具有限。浏览器就不说了,现在的前端工程师在一些产品中能够抛弃IE6已经是很幸福的事情了,但是即使是IE8,离真正的ES6也还很遥远。在其他领域,比如手机游戏领域,cocos2d-js v3.0使用的脚本引擎是SpiderMonkey v28,因此情况要好很多,但是周边的一些工具,比如 closure copiler 不能很好地压缩和优化 ES6,当然你可以采用转换工具先将 ES6转成 ES5,然后再做压缩和优化,但是这多出来的一步造成更多出错的可能,而且和享受 ES6的语法糖的快乐相比,开销有点大——如果无论如何需要再转一步,那么为什么我们不干脆考虑TypeScript或者其他选择呢?
为什么会选择使用ES6的Promise呢?那是因为Promise算是比较好解决异步嵌套问题的方案,另外Promise本身在低版本下也有比较好的polyfill实现(https://github.com/jakearchibald/es6-promise),对于我和一些前端工程师来说,是十分乐意为将来去写一些能够向前兼容的符合标准的代码的。
目前这个阶段,前端学习ES6并不意味着能够很快将ES6的好处带到工作中,因为我们毕竟还受到现在的浏览器环境的制约。但是,即使单纯从学习一门编程语言的核心API的角度来说,ES6 也是值得学习的。它的很多新特性,真正涉及现代编程语言概念中很流行的部分,不管是解构赋值还是迭代器或者yield,都是超棒超赞的思想,不但易于理解,也能节省很多键盘操作,而另一些诸如const、作用域之类的设定,则让脚本引擎代替程序员人肉检查做更多的事情,让我们最终上线的代码变得更加安全和更加优美。
不管怎样,ES6代表着一种前端的未来,这种未来,无疑能让前端工程师们工作得更高效,也更有乐趣。更进一步说,ECMAScript还是开放的标准,对这门语言的新特性,有什么好的想法,都是有机会提交为标准的,也就是说,前端程序员的未来,是由我们前端程序员自己来创造的,还有什么是比自由更加美好的呢?所以,为了未来,加油!
360奇舞团团长,月影
吴亮(网名月影),先后在微软亚洲研究院做过访问学生,在金蝶软件有限公司担任过核心开发工程师、设计师和项目经理,在百度电子商务事业部担任Web开发项目经理。现任奇虎360高级技术经理,360前端团队奇舞团负责人。多年来致力于JavaScript技术和Web标准的推广,活跃于国内各技术社区,现为w3ctech顾问。