2017-02-27 46 views
28

这两者之间的区别究竟是什么?我见过的人使用:JavaScript中'export'和'export default'的区别?

function foo() { 
    ... 
} 

export default foo; 

我也看到了:

function bar() { 
    ... 
} 

export bar; 

而且,为什么你会使用一个比其他?

+3

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Statements/export – Ouroborus

回答

11

如果您需要导出多个对象,请使用命名导出(无默认关键字)。

function x1(){}; 
function x2(){}; 
export {x1},{x2}; //my-module.js 
import {x1},{x2} from 'my-module'; 

否则一单出口,默认出口行之有效

export default function x1() {}; 
import x1 from 'my-module'; 
+1

它与'default'关键字没有任何关系 – ieXcept

+0

同意@ieXcept。 'default'关键字与多个导出无关。它被命名为vs未命名的出口。 –

+0

默认在技术上仍然是一个命名导出。它以'default'名称导出。 – demisx

37

这是最简单的,只是看看三种不同ES6导入/导出风格编译下降到CommonJS的。

// Three different export styles 
export foo; 
export default foo; 
export = foo; 

// The three matching import styles 
import {foo} from 'blah'; 
import foo from 'blah'; 
import * as foo from 'blah'; 

大致编译为:

exports.foo = foo; 
exports['default'] = foo; 
module.exports = foo; 

var foo = require('blah').foo; 
var foo = require('blah')['default']; 
var foo = require('blah'); 

(实际编译器输出可能不同)