繁体   English   中英

导入类并使用带有 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

您有两个选择:

  1. 像您一样导出EmberReflux

     export { EmberReflux };

    然后像这样导入:

     import { EmberReflux } from '../utils/ember-reflux';
  2. 导出时使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM