2017-02-27 34 views
28

2つの違いは何ですか?JavaScriptの 'export'と 'export default'の違いは?

function foo() { 
    ... 
} 

export default foo; 

そして、私が見てきた::私が見た人は、使用

また
function bar() { 
    ... 
} 

export bar; 

、なぜあなたは他の上で1つを使用するのでしょうか?

+3

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ステートメント/エクスポート – Ouroborus

答えて

11

複数のオブジェクトをエクスポートする必要がある場合は、名前付きエクスポート(デフォルトキーワードなし)を使用します。

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

は、そうでない場合は、単一の輸出のために、デフォルトのエクスポートは

は、それはちょうど三つの異なるES6インポート/エクスポートのスタイルはCommonJSにまでコンパイル何を見て最も簡単です
export default function x1() {}; 
import x1 from 'my-module'; 
+1

これは 'default'キーワードとは関係ありません。 – ieXcept

+0

@ieXceptと合意しました。 'default'キーワードは複数のエクスポートとは関係ありません。名前のないエクスポートと名前が付けられます。 –

+0

デフォルトでは、技術的にはまだ名前付きエクスポートです。 'default'という名前でエクスポートされます。 – demisx

37

うまく動作します。

// 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'); 

(実際のコンパイラの出力が異なっていてもよい)