作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
据我从模块系统了解,每当我在文件中导入“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/
我是一名优秀的程序员,十分优秀!