2017-08-04 92 views
3

我有一些功能,我想保留在外部的js文件中。例如。ES6导出和导入名称的功能?

在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); 

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

+1

是'export {double};'正确的语法吗?如果它不是'出口双倍','? ---否则,你需要像'double.double(2)' – evolutionxbox

+1

@evolutionxbox'export double;'这样的语法来使用它。 –

+0

@YuryTarabanko,因为它需要'默认'? – evolutionxbox

回答

7

你混淆了默认和命名导出。

如果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

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

+0

aww我明白了。现在我明白了!谢谢! :-D – laukok

1

用途:

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

export {double}; 

import {double} from './functions'; 

或者

出口默认双;

和 “./functions.js”

进口翻一番;