【发布时间】:2016-12-23 04:16:55
【问题描述】:
我想知道将模块的函数/类导入另一个模块的最佳实践是什么,模块本身需要在导入另一个模块之前调用/初始化自己的函数/类?我不知道我是否可以足够清楚地问我的问题!所以我们举个例子吧。
这是我的模块:
// myModule.js
class MyModule {
constructor() {
// do sth
}
}
let myModule = new MyModule();
这就是我喜欢在另一个模块中导入它的方式:
import MyModule from './myModule';
这实际上工作正常!但正如你所看到的,在myModule.js 文件中我没有export default 我的MyModule 类,因为这不是myModule.js 文件中唯一发生的事情!我也在定义类后对其进行初始化......(我知道即使我将我的类设置为export default,当模块导入其他地方时,初始化仍然可以正常工作......)
所以,没有在我们的模块中设置任何导出的内容,或者将类设置为export default,当模块被导入其他地方时一切正常......到目前为止一切都很好!但如果有的话,我正在寻找一种最佳做法!
以下是我关于此类情况的问题:
- 可以导入没有任何导出内容的模块吗?
- 我们是否应该将类设置为
export default,尽管我们在模块中的类之外做更多的工作(定义类之后发生的初始化工作)? - 或者,在另一个函数中完成初始化工作,然后导出类和函数,然后调用函数在导入的模块中完成初始化工作是不是很好?
非常感谢大家!我真的很感谢任何关于这方面的帮助:)
【问题讨论】:
-
“因为这不是唯一发生的事情”不应阻止您(默认)导出任何内容。
-
你需要类的多个实例吗?
-
我想知道如果我有一个工厂函数(在其中我不仅要实例化类,还要做一些其他工作)我喜欢它被自我调用。如何导出自调用函数?
-
一般我想知道我们如何导出自调用函数?
-
放弃自调用,ES6 模块无论如何都是自包含的。只需在模块级别范围内执行你的东西,导出结果。
标签: javascript class module ecmascript-6 es6-module-loader