写点什么

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

  • 2015-07-12
  • 本文字数:2073 字

    阅读完需:约 7 分钟

由 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

2015-07-12 08:285333
用户头像

发布了 428 篇内容, 共 182.2 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

豆包文科成绩超了一本线,为什么理科不行?

Openlab_cosmoplat

人工智能 教育 高考 大模型 ChatGPT

SD-WAN会替代传统的IPsec VPN吗?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

闲鱼商品详情数据接口(goodfish.item_get)

tbapi

闲鱼API 闲鱼商品详情接口 闲鱼商品详情数据采集

6月TOP10现金答谢活动开启

Laval小助手

Navicat Premium for Mac(数据库管理软件) v17.0.10中文激活版

iMac小白

企业号 7 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号2024年7月PK榜

数据科学领军者助阵!上海大学携手和鲸科技,打造“课-训-赛”一体化教学新体验

ModelWhale

数据科学 课训赛一体

PDF to EPUB Converter for mac(PDF快速转换EPUB)

Mac相关知识分享

万界星空科技铜管加工行业MES系统解决方案

万界星空科技

mes 万界星空科技 铜管加工 铜管加工行业mes

百度发布文心大模型4.0 Turbo,多端面向用户正式开放

百度安全

软件测试学习笔记丨Neo4J查询语言Cypher(Graph Query Language)使用

测试人

软件测试

AnyGo for Mac(虚拟定位软件) 6.9.5免激活版

iMac小白

荣耀携手火山引擎落地大模型应用,打造移动智慧办公新范式

新消费日报

AutoCAD 2024 for Mac(cad设计绘图工具) v2024.3中文激活版

iMac小白

Final Cut Pro for Mac(fcp专业视频后期制作) v10.8.0中文版

iMac小白

etcd框架实践【Go版】

FunTester

SecureCRT for Mac(专业终端SSH工具)附注册码 v9.4.3正式版

iMac小白

记一次 .NET某网络边缘计算系统 卡死分析

EquatorCoco

.net 边缘计算 网络

SD-WAN解决跨境电商网络问题

Ogcloud

跨境电商 SD-WAN SD-WAN组网 SD-WAN服务商 跨境电商网络

在 KubeSphere 上快速安装和使用 KDP 云原生数据平台

智领云科技

开源 Kubernetes KubeSphere KDP 云原生应用数据平台

InDesign for Mac(id 2022中文版)

Mac相关知识分享

Beyond Compare 4 for Mac(好用的文件对比工具) 4.4.7(28397)中文版

iMac小白

JProfiler 14 for Mac(Java开发分析工具) 14.0激活版

iMac小白

hypernetwork在SD中是怎么工作的

程序那些事

程序那些事 Stable Diffusion

JProfiler 14 for Mac(Java开发分析工具) 14.0激活版

iMac小白

物联网数据可视化利器:云组态设计器全新升级

inBuilder低代码平台

物联网 云组态

AI应用实战营-作业1-提示词

德拉古蒂洛维奇

Macs Fan Control Pro for mac(电脑风扇控制软件) v1.5.16中文激活版

iMac小白

IntelliJ IDEA 2024 for Mac(Java语言开发集成环境) v2024.1.4中文激活版

iMac小白

1688 商品详情的 API 接口获取与分析:解锁商业洞察的关键

Noah

mac英语学习工具:Eudic欧路词典 for Mac 激活版

你的猪会飞吗

mac破解软件下载

《探索ES6》书评与作者采访_JavaScript_Abel Avram_InfoQ精选文章