在ES6模块中按字符串访问导出的函数

knp*_*wrs 5 module export ecmascript-6 babeljs

考虑以下:

exports['handleEvent']('event');

export function handleEvent(event) {
  // do something with `event`
}
Run Code Online (Sandbox Code Playgroud)

这在使用babel来转换节点模块时起作用,因为它将所有内容都粘贴在exports对象上.在vanilla ES6中是否有出口对象的概念?我希望能够使用其名称的字符串调用方法.

我想到的一件事就是将所有函数都粘贴在一个对象上并单独导出它们.另一个选择是使用一些邪恶的评估东西.是否有任何标准方法可以通过字符串访问当前模块中的ES6导出?

Xåp*_* - 3

不太确定我遵循...

以下是 ES6 模块导入+导出的几个示例。其中有符合您要寻找的内容吗?

实施例1

制作人:

export function one() { return 1 };
export function two() { return 2 };
Run Code Online (Sandbox Code Playgroud)

消费者:

import {one, two} from 'producer';

one();
two();
Run Code Online (Sandbox Code Playgroud)

实施例2

制作人:

export function one() { return 1 };
export function two() { return 2 };
Run Code Online (Sandbox Code Playgroud)

消费者:

import * as producer from 'producer';

producer.one(); // or producer['one']()
producer.two();
Run Code Online (Sandbox Code Playgroud)

实施例3

制作人:

export default {
  one() { return 1 },
  two() { return 2 }
};
Run Code Online (Sandbox Code Playgroud)

消费者:

import producer from 'producer';

producer.one(); // or producer['one']()
producer.two();
Run Code Online (Sandbox Code Playgroud)

实施例4

制作人:

export default {
  one() { return 1 },
  two() { return 2 }
};
Run Code Online (Sandbox Code Playgroud)

消费者:

import {one, two} from 'producer';

one();
two();
Run Code Online (Sandbox Code Playgroud)

实施例5

制作人:

export default function() { return 1 };
export function two() { return 2 };
Run Code Online (Sandbox Code Playgroud)

消费者:

import one, {two} from 'producer';

one();
two();
Run Code Online (Sandbox Code Playgroud)