ES6导出和导入名称功能?

lau*_*kok 6 javascript ecmascript-6

我有一些功能,我想将它们保存在外部js文件中.例如.

在functions.js中

var double = function(x) {
  return x + x;
}

export { double };
Run Code Online (Sandbox Code Playgroud)

然后在我的主要js文件中:

import double from './functions';

...

double(2)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Uncaught TypeError: (0 , c.default) is not a function
    at bundle.min.js:44
Run Code Online (Sandbox Code Playgroud)

当我读到44行时:

(0, _functions2.default)(2);
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?我错过了什么?

Rya*_*Zim 10

您将默认和命名导出混淆.

如果export { double }你必须import { double } from './functions';

如果您只有一个导出,则最好使用默认导出:

export default double;
Run Code Online (Sandbox Code Playgroud)

然后你可以 import double from './functions':

原因是命名导出允许您仅导入模块的一部分.例如:

export function add (a, b) { return a + b; }
export function subtract (a, b) { return a - b; }
Run Code Online (Sandbox Code Playgroud)

然后你可以import { add } from './math.js';不导入subtract.

但是,如果仅从模块导出一个函数,则默认导出更方便.