深入理解 JavaScript 特性 (3):ECMAScript 和 JavaScript 的未来 1.3

阅读数:10 2019 年 11 月 24 日 22:21

深入理解JavaScript特性(3):ECMAScript和JavaScript的未来 1.3

(浏览器支持和辅助工具)

内容简介
本书旨在让读者轻松学习 JavaScript 的新进展,包括 ES6 及后续更新。书中提供了大量实用示例,以循序渐进的方式讲解了异步函数、对象解构、动态导入及异步生成器等内容。本书不仅介绍了箭头函数、解构、模板字面量以及其他语法方面的新元素,还全面展示了 ES6 引入的流程控制机制,以及如何高效地简化自己的代码。本书的讨论还涉及 ES6 内置的新集合类型、使用代理控制属性访问、ES6 中内置 API 的改进、CommonJS 与 ECMAScript 模块的互用性等方面。

如果能够有两个 JavaScript 引擎提供独立的实现,阶段 3 的候选推荐提案最有可能进入下一个版本的规范之中。实际上,只要阶段 3 的提案有实验性的引擎实现或者腻子脚本,再或者可以通过编译器得到支持,那么就已经能够安全地在实际开发中使用了。其实,阶段 2 和更早阶段的提案也有为 JavaScript 开发人员所使用的,这也加强了实现者和使用者之间的反馈循环。

Babel 等将代码作为输入并生成 Web 平台原生支持的输出(HTML、CSS 或 JavaScript)的编译器通常称为转译器(transpiler),它是编译器的一个子集。如果我们想要在代码中使用某个 JavaScript 引擎还没有普遍实现的提案,Babel 之类的编译器可以帮我们将相应的代码转换成现有 JavaScript 实现可以运行的代码。

代码转换是在构建时完成的,因此用户拿到的是自己的 JavaScript 运行环境所支持的代码。这一机制降低了对运行环境的要求,也让 JavaScript 开发者能够更早地使用新的语言功能和语法。对于规范的编写者和实现者来说,这也是非常有利的,因为这样他们就可以得到可行性、迫切性、可能存在的 bug,以及边界用例等方面的反馈。

转译器可以将 ES6 代码转换成浏览器普遍可以解释的 ES5 代码。这是如今在生产环境中运行 ES6 代码的最可靠方式:通过构建生成 ES5 代码,这样新旧浏览器都可以执行。

这种方式同样适用于 ES7 及后续版本。由于语言规范每年都会发布新版本,我们可以期待编译器支持 ES2017 输入、ES2018 输入,等等。同样,随着浏览器的支持度越来越好,编译器可以逐渐降低支持 ES6 输出、ES7 输出的复杂性。从这种意义上说,我们可以将 JavaScript 转译器看作移动的窗口,其输入是使用最新语法编写的代码,输出是不影响浏览器运行的最新代码。

接下来我们探讨如何在工作中使用 Babel。

深入理解JavaScript特性(3):ECMAScript和JavaScript的未来 1.3

图灵地址 http://www.ituring.com.cn/book/2452

评论

发布