使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
import class and call static method with es6 modules with babel transpiler
我有以下类定义:
class EmberReflux{
static createActions(actions) {
console.log(actions);
}
}
export { EmberReflux };
当我从其他文件导入它时:
import EmberReflux from '../utils/ember-reflux';
let TodoActions = EmberReflux.createActions(
[
"addItem",
"undo",
"redo"
]);
export { TodoActions };
转译看起来像这样
define('ember-reflux/utils/todo-actions', ['exports', 'ember-reflux/utils/ember-reflux'], function (exports, EmberReflux) {
'use strict';
var TodoActions = EmberReflux['default'].createActions(["addItem", "undo", "redo"]);
exports.TodoActions = TodoActions;
});
我不确定EmberReflux['default']
的默认值是什么
我想像这样调用静态类方法:
EmberReflux.createActions
但相反,我必须这样称呼它:
EmberReflux.EmberReflux.createActions
您有两个选择:
-
像您一样导出
EmberReflux
:export { EmberReflux };
然后像这样导入它:
import { EmberReflux } from '../utils/ember-reflux';
-
导出时使用
default
:export default EmberReflux;
并导入它(就像您正在做的那样):
import EmberReflux from '../utils/ember-reflux';
在这两种情况下,您都可以像以下方式使用EmberReflux
:
EmberReflux.createActions();
我没有足够的声誉来评论,alexpods的答案是完美的,但为了理解我们的朋友Ced问道:
为什么我们需要第二个示例中的默认值?换句话说,为什么我们不能直接出口EmberReflux?
当你这样写时:
export { EmberReflux };
也是这样写的:
export { EmberReflux: EmberReflux };
这就是为什么你需要运行EmberReflux.EmberReflux,解决方案非常简单:
export default EmberReflux;
class EmberReflux {
//...
}
module.exports = EmberReflux
相关文章:
- 在一个表达式中加载并使用ES6模块
- ES6模块进口是否吊装
- 使用ES6模块创建JS
- 无法使用Webpack加载ES6模块
- 可以'I don’我不明白;使用webpack和es6模块进行EventEmitter
- 观察ES6模块属性
- NPM:取决于本地 ES6 模块(无转译)
- 使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- ES6模块导入和依赖关系管理
- browserify/requirejs模块和ES6模块有什么区别
- 使用es6模块:未捕获ReferenceError:define未定义
- 如何通过名称(从模块本身)访问ES6模块变量
- 如何有条件地导入 ES6 模块
- 使用webpack和babel加载程序导入导出ES6模块
- ES6模块初始化顺序错误
- ES6模块:为什么先前导出的模块不为“;“孩子”;模块
- 流星 ES6 模块相对路径
- ES6 模块不适用于 babel 6 和 gulp
- 使用 webpack 和 ts-loader 重新导出 ES6 模块