ES6导出和导入名称功能?

时间:2017-08-04 11:08:34

标签: javascript ecmascript-6

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

在functions.js

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

export { double };

然后在我的主js文件中:

import double from './functions';

...

double(2)

我收到此错误:

Uncaught TypeError: (0 , c.default) is not a function
    at bundle.min.js:44

当我读到第44行时:

(0, _functions2.default)(2);

任何想法为什么?我错过了什么?

2 个答案:

答案 0 :(得分:10)

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

如果您export { double },则必须import { double } from './functions';

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

export default double;

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

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

export function add (a, b) { return a + b; }
export function subtract (a, b) { return a - b; }

然后,您可以import { add } from './math.js';而无需导入subtract

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

答案 1 :(得分:2)

使用:

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

 export {double};

import {double} from './functions';

导出默认双倍;

从" ./ functions.js";

导入double