Node.js 计划支持 ES6 模块:深入了解
Node.js JavaScript 运行时环境长期以来一直支持 CommonJS 模块用于加载外部代码。然而,随着 ES6 (ECMAScript 2015) 的出现,原生模块支持的引入引发了一个问题:Node.js 会接受导入/导出模块吗?
Node.js 13.2.0 及以后
从 Node.js 13.2.0 开始,引入了对 ES 模块的支持,而无需实验性标志。启用 ECMAScript 模块 (ESM) 支持涉及将 package.json 文件设置为:
{ "type": "module" }
所有带有 .js、.mjs 或没有扩展名的文件将被视为 ESM。启用 ES 模块的替代方法也可用,并记录在发行说明中。
Node.js 13.1.0 及更早版本
对于较旧的 Node.js 版本, [esm](https://github.com/standard-things/esm) 模块加载器提供 ES 模块的生产就绪实现:
node -r esm main.js
历史开发时间表
2019 年 4 月 23 日
集成了 ECMAScript 模块检测机制的更新,引入了 package.type(模块或 commonjs)的选项以及用于指定入口点的新选项类型和模块说明符解析。
2019 年 1 月 17 日
Node.js 11.6.0 包含 ES 模块作为实验性功能,使用以下标志启用:
node --experimental-modules index.mjs
计划在 v10.0 LTS 版本中删除此标志。
2017 年 9 月 13 日
添加了 Node.js 8.5.0支持 .mjs 文件,可在标志后面访问:
node --experimental-modules index.mjs
最初的目的是在 v10.0 LTS 版本中删除此标志。
2017 年 9 月 8 日
对 ESM 模块的初始支持已添加到 Node.js 主分支,可以通过 --experimental-modules 标志进行访问。
2017 年 2 月
Node.js 团队宣布决定使用 .mjs 文件扩展名作为破坏性最小的解决方案,允许 CommonJS 和 ES 模块共存。预计实施至少需要一年时间。
2016 年 10 月
TC-39 会议后,一位 Node.js 开发人员概述了实施 ES 模块的挑战。关键问题包括静态与动态分析、猴子修补和模块检测。使用 *.mjs 扩展成为一种可能的解决方案。
2016 年之前
关于 Node.js 中 ES 模块支持的争论已经持续了很长时间相当长的时期。各种提案和讨论旨在解决 Node.js 和 HTML 的不同要求,同时适应新规范。
以上是Node.js 如何发展对 ES6 模块的支持?的详细内容。更多信息请关注PHP中文网其他相关文章!