博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《探索ES6》书评与作者采访
阅读量:6256 次
发布时间:2019-06-22

本文共 2286 字,大约阅读时间需要 7 分钟。

由Axel Rauschmayer编著的《探索ES6是对JavaScript最新特性的一次深入探讨,本文包含了对作者所进行的一次简短的访谈内容。

\\

的著作(Exploring ES6: Upgrade to the next version of JavaScript)是ECMAScript 2015中新引入特性的一份全面指南,读者还可以参考配套的。作者假设读者已经熟悉JavaScript的特性,或是能够通过阅读他的另一本著作很快地上手,后者对于ES5及之前的语言特性进行了深入的讲解。

\\

《探索ES6一书首先对于JavaScript的历史进行了简单的回顾,包括它的版本变迁、标准化组织、设计过程、以及这门语言当下的目标:让JavaScript成为一门更优秀的语言、具有更强的互操作性,同时又保持对之前版本的兼容。作者注意到了这一点:ECMA组织最终决定让JavaScript保持完整的向后兼容性,以避免“破坏web”,他们要求与之相关者保持继续运行旧版本的代码的能力,并保证新引入的特性不会与之前的代码产生冲突。本书接下来的部分着重强调了将ES6代码转译(即编译)为ES5代码的一系列重要工具,包括包管理、模块管理、lint工具、shim、polyfill、解析器和REPL等等。

\\

在关于一致性方面的介绍之后,Rauschmayer开始进入ES6的新特性,他首先对这些新特性进行了简短的描述,并列举了示例代码,然后对它们进行了深入的探讨。在某些地方也会解释一下为什么ECMA会决定以这种方式设计这门语言。其中的某些特性,例如类与模块已经由各种类库提供了对应的功能,但其它的一些特性都是全新的,包括promise、生成器(generator)或代理(proxy)。以下是作者在本书中所涵盖的一些特性(尚有部分内容并未列举在下表中):

\\
  • 数据:数值、Math方法、新的string方法、模板字符串、符号(symbol)、范围(scoping)、解构(destructuring)\\
  • 模块化:箭头函数(arrow function)、类、模块\\
  • 集合:新的数组特性、Map、Set、生成器\\
  • 其它特性:异步编程、Unicode、代理\

本书的末尾部分提供了大量的:例如何时使用常量、let或箭头函数,避免混用默认导出(export)与命名导出、格式化生成器、以及推荐使用类等等。

\\

我们对作者进行了一次采访,以了解他在相关主题方面的看法。

\\

InfoQES5如今已经在主流的JavaScript平台上得到了完整的实现,但目前还没有任何平台能够完整地实现所有的ES6特性,并且在每个平台上已实现的特性可能各不相同。如果说还没有一个特性已经得到所有主流平台的支持,web开发者们又该如何编写ES6代码呢?你对此有什么建议?

\\
\

AR首个完全支持ECMAScript 6的JavaScript引擎恐怕要到2016年才会出现,在那之前,唯一合理的方式就是将ES6编译为ES5再部署编译后的代码。等到了2016年之后,你就可以检查一下每个引擎的情况,看它是否已经支持了ES6(或者只检查一下你所使用的那部分特性)。对于已经支持的特性,可以在代码中加载原生的版本,否则依然要使用编译后的ES5版本。

\
\\

InfoQ根据之前ES5的采用情况来看,你认为主流浏览器大概需要多久才能够完整地实现ES6?是一年、两年还是五年?

\\
\

AR这一点真的很难说,因为我不清楚微软与苹果公司的日程计划。在网站上,微软仍然将某些核心特性列为“考虑中”,而苹果则依然保持一贯的神秘感。但Mozilla与Google在这方面进展良好,大概在2015年末或2016年初就会完全支持ES6了。

\
\\

InfoQ你对于One JavaScript这种思想有什么看法?对于web的发展来说,这种方式是否比强制版本化的做法更好?至少后者承诺能够带来更整洁的语言。

\\
\

ARDavid Herman将ES6避免版本化问题的做法称为“One JavaScript”。大体上说,它表示ES6是ES5的一个超集,也就是说ES6是100%向后兼容的,这也避免了将JavaScript分割为ES5(及更早版本)和ES6(及之后的版本)两个阵营。这种方式保持了JavaScript引擎的简单性,将ES5代码库迁移到ES6也变得十分简单,因为它其实就是ES6的一个有效子集。One JavaScript方式唯一的缺点就是限制了你对这门语言进行清理的机会:你永远无法移除特性,只能添加新的特性。

\
\\

InfoQ有没有哪些特性是你希望出现,却尚未包括在ES6中的,或者说有哪些特性是你希望以另一种方式进行标准化的呢?

\\
\

ARES6本身已经非常丰富了。虽然我可能会稍微改变一下类的实现,但能够在ES6中看到它已经很欣慰了。从长远一点的观点来看,我希望看到特质(trait)(或mixin)的出现,并希望标准库中的内容能够更丰富一些(尤其是关于迭代操作的工具方法)。

\
\\

InfoQ本书中的某些章节还没有完成,你是否已计划好它们的完成时间了呢?

\\
\

AR:我已经完成了我认为最重要的所有章节,我会尽量在接下来几个月中完成剩余的章节。

\
\\

包括免费的HTML版本,以及对应某个推荐价格的PDF、ePub或MOBI格式的电子书。

\\

ES6刚刚由ECMA国际投票通过,可以在这篇帖子中找到关于此事的更多细节。

\\

查看英文原文

转载地址:http://zmxsa.baihongyu.com/

你可能感兴趣的文章
懒加载的使用
查看>>
SpringMVC报错The request sent by the client was syntactically incorrect ()
查看>>
网络层封装
查看>>
《c程序设计语言》读书笔记-4.13-递归版本reverse函数
查看>>
background-clip&background-origin
查看>>
论坛迁移日记——discuz X2.5 迁移详细教程
查看>>
拦截器的执行顺序
查看>>
GestureDetector类及其用法
查看>>
String+变量”的操作是在运行时进行
查看>>
springboot入门 —— 报错
查看>>
计算器作业(摘要算法)
查看>>
嵌入式 Linux 学习 之路
查看>>
tornado 10 长轮询和 websocket
查看>>
CSU - 1356 Catch (判奇环)
查看>>
在多线程中使用静态方法是否有线程安全问题(转载)
查看>>
使用jmeter 做个简单的接口测试
查看>>
CSS对浏览器的兼容性(IE和Firefox)技巧整理
查看>>
Poj 2388 Who's in the Middle
查看>>
springboot与redis
查看>>
读《Cassandra权威指南》
查看>>