您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

NodeJS计划支持导入/导出es6(es2015)模块

NodeJS计划支持导入/导出es6(es2015)模块

NodeJS13.2.0现在支持不带标志的ES模块但是,该实现仍被标记为实验性的,因此在生产中使用时应谨慎。

要在13.2.0中启用ESM支持,请将以下内容添加到您的package.json

{
  "type": "module"
}

所有.js.mjs(或不带扩展名的文件)将被视为ESM。

除了整个package.json加入,还有许多其他选项,有关详细信息,请参见13.2.0文档

那些仍在使用旧版本Node的用户可能想尝试esm模块加载器,这是NodeJS ES模块规范的生产就绪型实现:

node -r esm main.js

最近降落的PR更改了检测ES模块的方式:https ://github.com/nodejs/node/pull/26745

它仍然落后--experimental-modules,但是模块的加载方式发生了重大变化:

节点11.6.0仍在标志后面将ES模块列为实验模块。

NodeJS 8.5.0已发布,在标志后面支持mjs文件

node --experimental-modules index.mjs

计划是删除v10.0 LTS版本的标志。

-过时的信息。 出于历史目的保留在这里

并在--experimental-modules标志后面启用:

{
  "name": "testing-mjs",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs" <-- Set this to be an mjs file
}

然后运行:

node --experimental-modules .

https://medium.com/@jasnell/an-update-on-es6-modules-in-node- js-42c958b890c#.6ye7mtn37

NodeJS伙计们认为 最糟糕的 解决方案是使用.mjs文件扩展名。得出的结论是:

换句话说,给定两个文件foo.jsbar.mjs,using import * from 'foo'将被foo.js视为CommonJS,而import * from 'bar' 将被bar.mjs视为ES6模块

至于时间表…

在当前时间点上,在Node.js甚至开始着手支持ES6模块的实现之前,ES6和虚拟机方面仍然需要解决许多规范和实现问题。工作仍在进行中,但将需要一些时间- 我们目前 至少 需要一年左右的时间。

Node.JS的开发人员之一最近参加了TC-39会议,并撰写了一篇关于实现Node.JS的阻止程序的绝妙文章

https://hackernoon.com/node-js-tc-39-and- modules-a1118aecf95e

基本的收获是:

-原始答案-

这已经很长时间了。最重要的是,是的,Node最终将支持导入/导出模块的ES2015语法- 最有可能在最终确定并同意加载模块规范时。

这是 NodeJS保持良好状态的一个很好的概述。本质上,他们需要确保新规范适用于主要是有条件的,同步加载的Node以及主要是异步的HTML。

目前尚无人知道,但我想Node除了支持动态加载import/export的新功能外,还将支持静态System.import加载- 同时仍保留require代码

以下是一些有关Node如何实现此目标的建议:

Node 2022/1/1 18:22:54 有523人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶