仅为副作用而导入的ES6模块的公认做法
Accepted practice for an ES6 module imported just for side-effects?
我喜欢保持代码的模块化,所以我把这种代码放在一个单独的文件(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';
这是公认的做法吗?
是的,如果您的模块不需要导出任何数据,则接受,但如果不需要,则无需从模块导出任何数据:
import Ember from 'ember';
Ember.RSVP.configure('onerror', function(error) {
....
});
app.js:
import './overrides/extra';
我通常导出一个初始化函数:
- 调用代码更明确
- 调用代码能够在成功(或失败)时执行操作
我不知道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的答案可能更适合您。
相关文章:
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- ES6 (ECMAScript 2015) 模块:导入索引.js
- 在一个表达式中加载并使用ES6模块
- 试图将类导出为模块ES6-babel
- ES6模块进口是否吊装
- Webpack通过npm将代码拆分为单独的模块,以及如何编译es6
- 使用ES6模块创建JS
- 无法使用Webpack加载ES6模块
- 可以'I don’我不明白;使用webpack和es6模块进行EventEmitter
- 扩展错误es6类模块问题
- 观察ES6模块属性
- NPM:取决于本地 ES6 模块(无转译)
- 使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- ES6模块导入和依赖关系管理
- 在ES6的“import”语法中,如何准确地评估模块
- browserify/requirejs模块和ES6模块有什么区别
- 使用es6模块:未捕获ReferenceError:define未定义
- 如何通过名称(从模块本身)访问ES6模块变量
- 获取模块ES6