Node.js 宣布正式支持 ECMAScript modules
Posted Node地下铁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js 宣布正式支持 ECMAScript modules相关的知识,希望对你有一定的参考价值。
在本月 21 日发布的 Node.js 13.2.0 版本中,正式取消了 --experimental-modules 启动参数。这意味着 Node.js 对 ES modules 的支持已经进入相对稳定阶段。那么ES modules 和 CommonJS modules 加载如何区分?这里简单翻译一下,如果有以下情况出现,会被识别为 ES modules 加载:
文件后缀名为 ".mjs"
package.json 中 type 字段值为 "module"
启动参数添加 —-input-type=module
其他情况下,都会被识别为 CommonJS modules。
同样的,如果:
文件后缀名为 ".cjs"
package.json 中 type 字段值为 "commonjs"
启动参数添加 —-input-type=commonjs
都会被默认识别为 CommonJS modules。
举个例子:
// 模块目录 package.json 中包含 "type": "module"
// aaa.js 会被识别为 ES modules 加载,因为
// 当前 package.json 中存在 type=module
import './test/aaa.js'
// 这里取决于 test-aaa 的 package.json
// 中是否有 type=module ,如有则会被识别为 ES modules
import 'test-aaa';
// 原理同上取决于 test-aaa 的 package.json
// 中是否有 type=module ,如有则会被识别为 ES modules
import './node_modules/test-aaa/index.js';
实现逻辑目前官方文档的标记是 "Stability: 1",表示还在实验中,相信随着这次新版本的 Node.js 发布,在社区的共同努力下,很快就会进入 "Stability: 2" 正式稳定了。
如果想详细了解一下,请点击阅读原文看 Node.js 13.2.0 的 esm 文档。
以上是关于Node.js 宣布正式支持 ECMAScript modules的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 与 JavaScript 基金会正式合并,JS 喜提新主场