有没有办法导入 ES 模块的部分而不会产生副作用?



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

例:

  • Module_A.js导出自定义元素的类定义 (CustomElement(,但也在自定义元素注册表中将该元素定义为副作用
  • Module_B.jsModule_A导入CustomElement以便可以扩展它,但由于Module_A已经在注册表中定义了CustomElement,因此Module_B不能使用该名称定义自己的元素。

理想情况下,Module_B能够从Module_A导入CustomElement,而不会运行任何Module_A的副作用,从而允许使用所需的特定部分,而不会运行任何意外

。这可能吗?

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

在您的示例中,

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

最新更新