有什么方法可以无副作用地导入 ES 模块的一部分吗?

Is there any way to import parts of an ES module without side effects?

导入模块的特定部分时,是否可以导入它而不会得到模块的所有副作用?

示例:

理想情况下,Module_B 可以从 Module_A 导入 CustomElement 而没有任何 Module_A 的副作用 运行,允许特定部分希望使用,也没有任何意外 运行.

这可能吗?

不,这是不可能的。您所能做的就是拆分模块以消除副作用。

在你的例子中,

  • CustomElement.js 将导出自定义元素 (CustomElement)
  • 的 class 定义
  • Module_A.js 将导入 CustomElement 并将自定义元素注册表中的该元素定义为副作用
  • Module_B.js 将导入 CustomElement 以便它可以扩展它,并使用该名称定义自己的元素。