为侧面效果导入的ES6模块的接受实践?

时间:2016-01-06 08:46:57

标签: javascript ember.js ecmascript-6

我喜欢保持代码模块化,所以我把这种代码放在一个单独的文件中(overrides/extra.js):

import Ember from 'ember';

Ember.RSVP.configure('onerror', function(error) {
    ....
});

export default null;

这只有配置Ember.RSVP的副作用,但不会导出任何有价值的东西。然后我会在app.js中导入它:

import dummy from './overrides/extra';

这是接受的做法吗?

2 个答案:

答案 0 :(得分:5)

如果您的模块不需要导出任何数据,则接受,但如果不需要,则无需从模块导出任何内容:

import Ember from 'ember';

Ember.RSVP.configure('onerror', function(error) {
    ....
});

<强> app.js:

import './overrides/extra';

答案 1 :(得分:2)

我通常导出一个初始化函数:

  • 调用代码更明确
  • 调用代码能够对成功(或失败)采取行动

我不知道Ember及其初始化但是它的外观如下:

import Ember from 'ember';

export default function initialize(){
    return new Promise(function(ok, nok){
        try { // or any other kind of failure detection
            Ember.RSVP.configure('onerror', function(error) {
                ok();
            });
            ... you may do other initializations here
            ok();
        } catch (e) {
            nok(e);
        }
    });
}

在通话代码

import initEmber from './yourFile.js';

initEmber()
.then(function(){
    ... here you know Ember is ready
})
.catch(function(){
    ... damn it!
});

请注意,如果Ember初始化是同步的并且可能不会失败,那么@RGraham的答案可能会更适合您。