2017-02-27 40 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'); 

(實際編譯器輸出可能不同)