首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JS/ES6:在模块上设置属性后是否需要重新导出模块?

JS/ES6:在模块上设置属性后是否需要重新导出模块?
EN

Stack Overflow用户
提问于 2018-06-09 05:28:05
回答 1查看 125关注 0票数 0

就我对模块系统的理解而言,每当我在文件中执行import 'some_module'操作时,我总是会得到该模块的相同实例,而不是每次导入时都会得到一个不同的实例。

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

代码语言:javascript
复制
// 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中,但也许我上面提到的模式很有用,因为您可以确定对模块的更改已经应用了吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 05:35:42

您需要使用export的原因是,否则,config_some_module.js只会产生副作用。如果你想直接从它获取一个值,你需要export一个值。如果您没有从config_some_module.js export任何东西,那么您需要通过执行以下操作来import带有副作用的修改后的对象:

代码语言:javascript
复制
// in 'config_some_module.js' file
import SomeModule from 'some_module';

SomeModule.attribute = 'something';
代码语言:javascript
复制
// in a different file;
import './config_some_module'; // introduce side-effect
import SomeModule from 'some_module'; // access modified object

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档