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 加载:


  1. 文件后缀名为 ".mjs"

  2. package.json 中 type 字段值为 "module"

  3. 启动参数添加 —-input-type=module


其他情况下,都会被识别为 CommonJS modules。


同样的,如果:

  1. 文件后缀名为 ".cjs"

  2. package.json 中 type 字段值为 "commonjs"

  3. 启动参数添加 —-input-type=commonjs


都会被默认识别为 CommonJS modules。


举个例子:

// 模块目录 package.json 中包含 "type": "module"
// aaa.js 会被识别为 ES modules 加载,因为// 当前 package.json 中存在 type=moduleimport './test/aaa.js'
// 这里取决于 test-aaa 的 package.json // 中是否有 type=module ,如有则会被识别为 ES modulesimport 'test-aaa';
// 原理同上取决于 test-aaa 的 package.json // 中是否有 type=module ,如有则会被识别为 ES modulesimport './node_modules/test-aaa/index.js';


实现逻辑目前官方文档的标记是 "Stability: 1",表示还在实验中,相信随着这次新版本的 Node.js 发布,在社区的共同努力下,很快就会进入 "Stability: 2" 正式稳定了。


如果想详细了解一下,请点击阅读原文看 Node.js 13.2.0 的 esm 文档。



以上是关于Node.js 宣布正式支持 ECMAScript modules的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 11 发布,Node 10正式进入LTS

Node.js v8.0.0 正式发布,带来大量更新

Node.js 与 JavaScript 基金会正式合并,JS 喜提新主场

Node.js v8.0.0 正式发布;Nginx 1.13.1 发布;Qt 5.9 正式发布

Node.js正式支持ES模块

企业级 Node.js 框架 - Egg.js 1.0.0 正式发布