gpt4 book ai didi

javascript - JS/ES6 : Do I need to re-export module after setting an attribute on it?

转载 作者:行者123 更新时间:2023-12-01 01:58:59 24 4
gpt4 key购买 nike

据我从模块系统了解,每当我在文件中导入“some_module”时,我总是会获得该模块的相同实例,而不是每次导入时都会获得不同的实例。

但如果这是真的,我有点不明白我在某些应用程序中看到的这种模式:

// in a 'config_some_module.js' file
import SomeModule from 'some_module';

SomeModule.attribute = 'something';

export default SomeModule;

// in a different file;
import SomeModule from './config_some_module';

如果每次导入模块时我都会得到相同的实例(而不是新实例),那么为什么需要重新导出该模块才能使用在前一个文件中完成的配置来访问它?

另外,第二个问题:如果不需要,如何确保在第二个文件中导入将在该属性已设置时获取模块?我假设如果两个导​​入都为您提供相同的实例,那么最终该属性将出现在第二个文件的 SomeModule 中,但也许我上面提到的模式很有用,因为您可以确定这些更改已经应用到模块了吗?

最佳答案

您需要导出的原因是,否则config_some_module.js只会产生副作用。如果您想直接从中导入,则需要导出一个值。如果您不从 config_some_module.js 中导出任何内容,则需要通过执行此操作导入带有副作用的修改后的对象:

// in 'config_some_module.js' file
import SomeModule from 'some_module';

SomeModule.attribute = 'something';
// in a different file;
import './config_some_module'; // introduce side-effect
import SomeModule from 'some_module'; // access modified object

需要记住的一个“问题”是,无论 config_some_module.js 被导入多少次,副作用只会发生一次。

最后,只要您的使用发生在这两个语句之后,您在使用者中执行 import 语句的顺序并不重要。

关于javascript - JS/ES6 : Do I need to re-export module after setting an attribute on it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com