文档章节

《探索ES6》书评与作者采访

一配
 一配
发布于 2015/12/03 00:06
字数 1716
阅读 207
收藏 4
点赞 0
评论 0

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

Axel Rauschmayer博士的著作《探索ES6:升级至JavaScript的下一个版本》(Exploring ES6: Upgrade to the next version of JavaScript)是ECMAScript 2015中新引入特性的一份全面指南,读者还可以参考配套的代码示例。作者假设读者已经熟悉JavaScript的特性,或是能够通过阅读他的另一本著作《Speaking 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这一点真的很难说,因为我不清楚微软与苹果公司的日程计划。在status.modern.ie网站上,微软仍然将某些核心特性列为“考虑中”,而苹果则依然保持一贯的神秘感。但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:我已经完成了我认为最重要的所有章节,我会尽量在接下来几个月中完成剩余的章节。

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

ES6刚刚由ECMA国际投票通过,可以在《ECMAScript 2015正式发布》这篇帖子中找到关于此事的更多细节。

查看英文原文Exploring ES6: Book Introduction and Author Interview

以下三篇博文对应于《探索ES6》一书中第24与25章:

[1] ECMAScript 6 promises(上):基本概念, http://my.oschina.net/1pei/blog/532924

[2] ECMAScript 6 promises(下):谈谈 API(一), http://my.oschina.net/1pei/blog/538090

[3] ECMAScript 6 promises(下):谈谈 API(二), http://my.oschina.net/1pei/blog/538609

本文转载自:http://www.infoq.com/cn/news/2015/07/exploring-es6

共有 人打赏支持
一配
粉丝 34
博文 137
码字总数 94295
作品 0
西城
《ios编程》书评活动最后两天!!

本次书评活动书名:《iOS编程》,感谢华中科技大学出版社对本次活动书籍奖品的赞助! 活动时间:2014年04月 08 日~2014年04月 15 日 活动规则:1.样章试读,跟原帖写书评; 2.挑选出10篇优秀...

丫头潘潘
2014/04/14
1K
19
如何借助HTML5微数据优化网页?

人们提到 HTML5 都会顺带一句支持 RDFa,微数据,微格式,使得搜索引擎能更好地了解网页内容和结构。在谷歌、百度上找了下,国内介绍微数据(Microdata)的文章屈指可数,大型网站案例只发现了...

christina_12345
2014/03/07
0
0
【写书评赠书活动】《数据科学:R 语言实现》

赠书活动来啦!本次书评活动由机械工业出版社提供书籍奖品,最后会由@局长 挑选 3 位优秀书评用户赠送本书。 图书介绍: 本书首先介绍如何创建R函数来避免不必要的代码重复。你会学到如何使用...

局长
2017/06/23
724
18
一个寻找作者的读者

贴一篇5年前的旧文。当时的打算是找一个好地方发表,但是没人要,最后就扔一边去了。 前几天翻出来,重读了一遍。 好消息是,5年前的文章,现在依然不觉得过时;坏消息是,5年过去了,我的文...

阮一峰
2008/07/29
0
0
社会网络分析快速入门

以下资料都是亲自学习过。 A 课程:难度按顺序越来越难,课程页面点链接,有的课程会再开始,建议跟着学 1 Network life: Coursera.org 非常基础容易懂。 2 Networks, Crowds, and Markets ...

axins
01/11
0
0
一个关于书的产品构想

动机 看书时,经常会发现书中的错误(字,代码,标点等)。没有反馈的平台。 自己看过的书(纸)想管理起来。自己有什么书,什么时候看过什么书,精彩语录,读后感等 想知道公司内部,大家都...

sl_yang
2016/06/17
49
0
如何做读书笔记

step1 写书名,作者,给书评分 (如何可以的话打印书的图片贴在本子上) 参考排版 step2 总结,感受 我知道很多写读书笔记的宝宝们在这一步一般是会查一下作者的资料,不过我没有那么勤快。所...

lily哩离理力
2017/11/03
0
0
Golang的百科全书--the way to go

比较零乱的学了一段时间的golang,一直觉得条理化的信息太少。 最近看到《the way to go》,才发现这就是我所需要的营养大餐,以后再找一本Go的标准库详解就完美了。 本书居然有中文版@无闻 ...

max佩恩
2014/08/02
0
2
互联网圈最近这几本热门新书,你都看了吗?

过去的两个月,中国互联网似扎堆出书,且各种大事不断,大佬云集,有红衣教主和小米“粉丝教父”,也有王利芬为刚刚风光上市的马云树碑立传,还有年纪轻轻就请人来总结“创业史”的王兴。看钛...

oschina
2014/10/11
11.3K
56
习总书架上两本人工智能书:《终极算法》、《智能浪潮》,你读了吗?

中国国家主席习近平每年新年都会在办公室录制的一段视频向全国人们问好。 他办公桌背后是一个琳琅满目的书架,显示了这位大国领袖读书习惯和阅读品味,每年都有媒体仔细分析习总书架上的书目...

技术小能手
01/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开篇文章,长期记录安全情形

密码位置 密码位于注释中 密码位于服务器端文件中 通过访问根目录下.htaccess、robots.txt查看禁查路径 密码文件可能存在的路径:/、/extra/、/extras/ 密码加密 binary to base16 sha256 彩虹...

hirainn
19分钟前
0
0
mysql数据库设置root可以远程登录的方法

mysql数据库设置root可以远程登录的方法 Posted on 2018-02-21 21:08 sishuisufeng 阅读(161) 评论(0) 编辑 收藏 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如...

rootliu
24分钟前
0
0
TensorFlow 图的基本操作

图的创建,一般只需要使用默认图就能满足大部分的需求了 # 1 创建图的方法# 在默认图中创建常量c = tf.constant(0.0)# 新建一个图g = tf.Graph()# 设置上下文管理器,标明操作...

阿豪boy
57分钟前
0
0
git 忽略文件失效

git update-index --assume-unchanged */.project

林子大鸟
59分钟前
0
0
实现验证码功能

1、实现验证码,并存储 import com.dtb.pc_enterprise.entity.EnterUserEntity;import com.dtb.pc_enterprise.service.AdminService;import com.dtb.pc_enterprise.util.RedisService;......

木九天
今天
0
0
iptables 实例

以下部分内容为网络查询并整理结果 filter表小案例 iptables规则五条链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 四个表:filter nat mangle raw ###netfilter和iptables说明: 1、 ne...

李超小牛子
今天
0
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
今天
2
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
今天
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
今天
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部