Javascript 使用babel transpiler使用es6模块导入类并调用静态方法

Javascript 使用babel transpiler使用es6模块导入类并调用静态方法,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下类定义: class EmberReflux{ static createActions(actions) { console.log(actions); } } export { EmberReflux }; 从其他文件导入时: import EmberReflux from '../utils/ember-reflux'; let TodoActions = EmberReflux.createActions( [ "addItem", "undo",

我有以下类定义:

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;

});
我不确定['default']

我想这样调用静态类方法:

EmberReflux.createActions
EmberReflux.EmberReflux.createActions
export { EmberReflux };
export { EmberReflux: EmberReflux };
但我不得不这样称呼它:

EmberReflux.createActions
EmberReflux.EmberReflux.createActions
export { EmberReflux };
export { EmberReflux: EmberReflux };
您有两个选择:

  • 像您正在做的那样导出:

    export { EmberReflux };
    
     import EmberReflux from '../utils/ember-reflux';
    
    然后像这样导入它:

    import { EmberReflux } from '../utils/ember-reflux';
    
  • 导出时使用
    默认值

    export default EmberReflux;
    
    export default EmberReflux;
    
    并导入它(就像您正在做的那样):

  • 在这两种情况下,您都可以使用您的
    代码,如:

    EmberReflux.createActions();
    

    我没有足够的声誉来评论,亚历克斯波德一家的回答是完美的,但为了了解我们的朋友,Ced问道:


    为什么在第二个示例中需要默认值?换句话说,为什么我们不能直接出口

    当你这样写的时候:

    EmberReflux.createActions
    
    EmberReflux.EmberReflux.createActions
    
    export { EmberReflux };
    
    export { EmberReflux: EmberReflux };
    
    还是这样写的:

    EmberReflux.createActions
    
    EmberReflux.EmberReflux.createActions
    
    export { EmberReflux };
    
    export { EmberReflux: EmberReflux };
    
    这就是为什么您需要运行EmberReflux.EmberReflux,解决方案非常简单:


    尝试导出默认值
    为什么在第二个示例中需要默认值?换句话说,为什么我们不能直接导出EmberReflow?因为在第二个示例中,您没有将
    EmberReflow
    分解为它自己的变量。虽然此代码可以解决OP的问题,但最好包含关于代码如何解决OP问题的解释。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或使用源文档补充说明。