2016-02-08 87 views
4

如何使用ES6模块分配命名空间?我想要做的例如jQuery的做,其中名称空间是$但做它预期的ES6方式。我所有的模块都是由不同的文件构成的,这些文件可以导出类/函数/默认值(例如export default class Pikachu)。如何将它导入另一个(主)文件,以便用户可以使用例如Namespace.Pikachu命名空间与ES6模块

我已经明白,它可能与命名导出有关,但我不完全确定如何。请帮忙吗?

+1

[查看第二个例子](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Importing_defaults) – usandfriends

+0

您只需输出一个带有“皮卡丘”属性的对象, 一如既往。但是,为什么你会这样做,而不是让用户从任何方式(无论他选择哪种方式)导入...... ... /皮卡丘? – Bergi

+0

@usandfriends谢谢!阅读那篇文章时,我一定会意外跳过它! – AKG

回答

5

如果使用模块,则不需要命名空间。

命名空间的意义在于防止定义相同名称的不同文件之间发生冲突。

模块通过让callsite选择一个名称来给它需要的每个模块完全消除这个问题。

你只需要导出一个简单的对象和你想要的东西,其他文件可以将它导入到他们选择的任何名称。

+0

嗯,我不会说模块完全消除了这个问题,他们只是将它从(全局)范围级别移动到模块标识符的命名(约定)和层次结构。 – Bergi

+0

我想我在学习这一切之间有点困惑 - 我应该知道!谢谢! – AKG