Node 引入 ESM 新方案

发布时间:2019-06-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Node 引入 ESM 新方案脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

administration-articles-bank-261949.jpg

2019年3月29日目前,Node 对 ES6 Module 的支持又有新进展。一个新的 PR 更新了当前 --experimental-modules 的实现方案。

type 动态判断模块加载模式

更新后的方案将根据 package.json 文件中指定的 type 值来判断 js 文件是使用 ESM 还是 commonjs

  • 如果 type 的值为 module 那么 js 文件将被作为 ESM 加载
  • 如果 type 的值为 commonjs 那么 js 文件将被作为 commonjs 来加载

好处就是不需要使用 .mjs 这种与传统 js 扩展名不同的写法

使用 flag 指定入口文件模块加载模式

更新后的方案允许开发者使用 --entry-type=type 的方式来指定入口文件的解析方式,判断行为与 package.json 的 type 一致

支持新的扩展名 .cjs

新的扩展名 .cjs 表示在 module 模式的加载环境下去使用 commonjs 来加载扩展名为 .cjs 的模块

模块加载方式有所改变

新的 flag:--es-module-specifier-resolution=[type] 的默认值是 explicit,和可选值 node,在默认值的情况下引入模块时必须书写扩展名。

This implies that ./x will only ever import exactly the sibling file "x" without appending paths or extensions. "x" is never resolved to x.mjs or x/index.mjs (or the .js equivalents).

比方说这里加载 ./x 模块,那么默认情况下只会加载名为 x 的模块,而不是去尝试加载 x.mjsx/index.mjs

提案在此:https://github.com/GeoffreyBo...

在 ESM 模式下加载 json 文件

--experimental-json-loader flag 能够在 ESM 模式下加载 JSON 文件。

导入的 json 文件将提供的 json 文件中的内容转化为一个对象或数组。就好像直接通过 JSON 模块 parse 了一样。

main 根据 type 的值确认入口文件加载模式

package.json 文件中的 main 字段指定入口文件,根据 type 字段来指定是 commonjs 还是 ESM 模式来加载。

参考:

JS 菌公众账号

请关注我的订阅号,不定期推送有关 JS 的技术文章,只谈技术不谈八卦 ????

脚本宝典总结

以上是脚本宝典为你收集整理的Node 引入 ESM 新方案全部内容,希望文章能够帮你解决Node 引入 ESM 新方案所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: