写点什么

《探索 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:285559
用户头像

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

关注

评论

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

CST案例分析——77GHz汽车雷达保险杠

思茂信息

cst cst操作 CST软件

即时通讯安全篇(十五):详解硬编码密码的泄漏风险及其扫描原理和工具

JackJiang

网络编程 即时通讯 IM

国内外主流的19款招聘管理系统(ATS)测评

易成研发中心

办公软件 ATS

程序员如何高效学习一些新技术

秃头小帅oi

我的电子产品家族成员-懒猫微服

玄兴梦影

家庭数据中心 NAS 懒猫微服 使用体验 微型服务器

全国独家线下面授 | 杭州·大规模敏捷LeSS认证3月27-29日开班

ShineScrum

Scrum LeSS认证

开源低代码平台与 Vue.js

伤感汤姆布利柏

MarsCode 编程助手模型升级至豆包大模型1.5,同时支持切换DeepSeek R1 / V3!

TRAE

AI编程 豆包MarsCode DeepSeek DeepSeek v3 DeepSeek-R1

喜讯|麦杰科技CEO荣膺“闵行区优秀企业家”称号

麦杰研究院

京东、蚂蚁集团领衔,国内互联网大厂入局人形机器人赛道!

机器人头条

科技 蚂蚁集团 人形机器人 具身智能 京东集团

【干货】2024年下半年最受欢迎的50篇数据库主题文章+文档

墨天轮

MySQL 数据库 oracle sql 性能优化

【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (1)

HarmonyOS SDK

harmoyos

搜款网VVIC商品详情数据接口(搜款网API系列)

tbapi

搜款网API 搜款网商品详情接口 搜款网商品数据采集

当“天翼云息壤杯”高校AI大赛邂逅DeepSeek,福利来袭!

天翼云开发者社区

人工智能 AI 科研 DeepSeek

Svelte 最新中文文档教程(14)—— 特殊元素

冴羽

vue.js 前端 React Svelte SvelteKit

什么是智能制造?智能制造深度分析!

积木链小链

数字化转型 数字化 智能制造

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