我有一个文件 Services.js,我试图在其中加载我所有的个人服务。这些都作为单例公开。
Services.js

var Services = { };

export default Services;

然后我希望示例服务嵌套在服务下,因此我可以调用例如 Services.Sample.Operation()
`SampleService.js'
import Services from './Services';

Services.Sample = {

    Operation: function() {
        alert('operation!')
    }
};

export default Services.Sample;

然后,我尝试导入:
import Services from './services/Services';
import SampleService from './services/SampleService';

alert(Services);         // yields '[object object]'
alert(SampleService);    // yields '[object object]'
alert(Services.Sample);  // yields 'undefined' <--- This is the one I actually want to use

我怎样才能得到它,以便我可以引用 Services.Sample 而不是 tan SampleService。如何让 SampleService 嵌套在 Services 下?

最佳答案

您的方法不起作用,因为您在 Services.js 中导入 SampleService.js ,但 Services 变量不是 Services 中的“原始” Services.js 变量。

我会做的是这样的:
SampleService.js :

SampleService = {

    Operation: function() {
        alert('operation!')
    }
};

export default SampleService;
Services.js :
import SampleService from './SampleService';

var Services = { };
Services.Sample = SampleService;

export default Services;

然后:
import Services from './services/Services';

alert(Services);
alert(Services.Sample);

export default Services;

关于模块的基本(in)依赖性和一致性,这对我来说似乎也更有意义(定义 ServicesServices.js 中可以做什么而不是 SampleService.jsSampleService 可以独立于 Services ,加载 Services.js 的模块也不应该依赖于 SampleService.js因为以后可能会改变,...)。

关于javascript - 在 ES6 中使用嵌套类模拟命名空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27400098/

10-13 01:53