有什么方法可以无副作用地导入 ES 模块的一部分吗?
Is there any way to import parts of an ES module without side effects?
导入模块的特定部分时,是否可以导入它而不会得到模块的所有副作用?
示例:
Module_A.js
导出自定义元素 (CustomElement
) 的 class 定义,但也在自定义元素注册表中将该元素定义为副作用
Module_B.js
从 Module_A
导入 CustomElement
以便它可以扩展它,但是因为 Module_A
已经在注册表中定义了 CustomElement
,Module_B
无法使用该名称定义它自己的元素。
理想情况下,Module_B
可以从 Module_A
导入 CustomElement
而没有任何 Module_A
的副作用 运行,允许特定部分希望使用,也没有任何意外 运行.
这可能吗?
不,这是不可能的。您所能做的就是拆分模块以消除副作用。
在你的例子中,
CustomElement.js
将导出自定义元素 (CustomElement
) 的 class 定义
Module_A.js
将导入 CustomElement
并将自定义元素注册表中的该元素定义为副作用
Module_B.js
将导入 CustomElement
以便它可以扩展它,并使用该名称定义自己的元素。
导入模块的特定部分时,是否可以导入它而不会得到模块的所有副作用?
示例:
Module_A.js
导出自定义元素 (CustomElement
) 的 class 定义,但也在自定义元素注册表中将该元素定义为副作用Module_B.js
从Module_A
导入CustomElement
以便它可以扩展它,但是因为Module_A
已经在注册表中定义了CustomElement
,Module_B
无法使用该名称定义它自己的元素。
理想情况下,Module_B
可以从 Module_A
导入 CustomElement
而没有任何 Module_A
的副作用 运行,允许特定部分希望使用,也没有任何意外 运行.
这可能吗?
不,这是不可能的。您所能做的就是拆分模块以消除副作用。
在你的例子中,
CustomElement.js
将导出自定义元素 (CustomElement
) 的 class 定义
Module_A.js
将导入CustomElement
并将自定义元素注册表中的该元素定义为副作用Module_B.js
将导入CustomElement
以便它可以扩展它,并使用该名称定义自己的元素。