자바 스크립트에서 '내보내기 기본값'이란 무엇입니까?


570

파일 : SafeString.js

// Build out our basic SafeString type
function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

export default SafeString;

나는 export default전에 본 적이 없다 . export default이해하기 쉽도록 동등한 내용 이 있습니까?


29
이것은이에 아주 명확한 설명이다 24ways.org/2014/javascript-modules-the-es6-way
nish1013

2
export키워드 세부 사항은 여기 . 현재 모든 웹 브라우저에서 기본적으로 지원 되지 않습니다 .
RBT

3
IE를 제외한 모든 브라우저에서 지원됩니다.
Brian Di Palma


보라, 대답은 위 ^를보십시오. 혼동을 위해 아래의 \ /를보십시오. 나는 4
Andrew

답변:


456

여기설명 된 ES6 모듈 시스템의 일부입니다 . 이 문서에는 다음과 같은 유용한 예가 있습니다.

모듈이 기본 내보내기를 정의하는 경우 :

export default function() { console.log("hello!") }

중괄호를 생략하여 기본 내보내기를 가져올 수 있습니다.

import foo from "foo";
foo(); // hello!

업데이트 : 년 6 월 2015, 모듈 시스템에 정의되어 §15.2 하고, export특히 구문에 정의되어 §15.2.3 ECMA 스크립트 2,015 사양.


1
@GeenHenk ES6이 여전히 초안이기 때문에 예상되는 것 같습니다. 업데이트 된 링크와 면책 조항을 제공했습니다.
pswg

7
export default function () {}export = function () {}과 어떻게 다른지 모르겠습니다 .
Alexander Mills

1
export const Foo = () => {}파일의 끝과 비슷한 경우는 어떻습니까? 이것은 export default Foo많은 반응 예제에서 볼 수 있습니다. 두 수출은 무엇입니까?
FlavorScape

기본 및 명명 된 내보내기가있는 예제를 보는 것이 좋습니다. 다시 말해, 그러한 수출은import foo, { bar, baz } from './foo';
gumkins

1
대답 해 주셔서 감사하지만 두 번째 예에서 foo 사용법은 약간 모호합니다. foo는 무엇이고 어떻게 첫 번째 파일의 이름을 지정 했습니까? 어떻게 당신이 할 수 import foo from "foo"있습니까? 첫 번째 예제에서 내 보낸 함수의 이름이 지정되지 않았으므로 foo를 보유한 객체가 있습니까? @pswg
nosahama

159

export default 스크립트 파일에서 단일 클래스, 함수 또는 프리미티브를 내보내는 데 사용됩니다.

내보내기는 다음과 같이 쓸 수도 있습니다.

export default function SafeString(string) {
  this.string = string;
}

SafeString.prototype.toString = function() {
  return "" + this.string;
};

다른 스크립트 파일에서이 함수를 가져 오는 데 사용됩니다.

에 말 app.js , 당신은 할 수 있습니다

import SafeString from './handlebars/safe-string';

수출에 대해 조금

이름에서 알 수 있듯이 스크립트 파일 또는 모듈에서 함수, 객체, 클래스 또는 표현식을 내보내는 데 사용됩니다.

Utiliites.js

export function cube(x) {
  return x * x * x;
}
export const foo = Math.PI + Math.SQRT2;

가져 와서 사용할 수 있습니다

App.js

import { cube, foo } from 'Utilities';
console.log(cube(3)); // 27
console.log(foo);    // 4.555806215962888

또는

import * as utilities from 'Utilities';
console.log(utilities.cube(3)); // 27
console.log(utilities.foo);    // 4.555806215962888

내보내기 기본값을 사용하면 훨씬 간단합니다. 스크립트 파일은 하나만 내 보냅니다. cube.js

export default function cube(x) {
  return x * x * x;
};

App.js로 사용

import Cube from 'cube';
console.log(Cube(3)); // 27

78

export default function(){}함수에 이름이 없을 때 사용할 수 있습니다. 파일에는 기본 내보내기가 하나만있을 수 있습니다. 대안은 명명 된 수출입니다.

페이지export default내가 매우 유용하다고 생각한 모듈에 대한 자세한 내용과 함께 자세히 설명 합니다.


14
원하는 경우 기본 내보내기와 명명 된 내보내기를 함께 사용할 수 있습니다.
Bergi

@Greg gum 페이지가 오래되었습니다. 그것은로 리디렉션됩니다 exploringjs.com/es6/ch_modules.html
rajakvk

@rajakvk, True이지만 원본 페이지에는 시작하는 사람들을위한 더 많은 배경 정보가 있습니다.
Greg Gum

7
이 대답은 허용 된 것보다 낫습니다. 왜냐하면 default이 단어에 대한 질문의 의미와 설명이 있기 때문 입니다.
Dariusz Sikorski

1
@DariuszSikorski 허용되는 답변 default은 중괄호를 사용하지 않고 기본 내보내기를 가져올 수 있다는 의미를 설명합니다 . 이 답변은 실제로 default파일에 내보내기가 하나만있을 때만 사용할 수 있다고 말하면 실제로 잘못되었습니다 . 같은 파일에 여러 개의 내보내기를 할 수 있지만 물론 그 default중 하나만 설정할 수 있습니다 .
realUser404

41

나는이 게시물을 작성하고 있기 때문에 (나는 피곤하다고 가정합니다) 나는 MDN을 이해하지 못했고 다른 사람들의 설명과 다른 사람들의 설명과 무언가를 이해하는 가장 좋은 방법은 다른 사람들에게 그것을 가르치는 것입니다. 그것은 단지 질문에 대한 간단한 대답을 보지 못합니다.

자바 스크립트에서 '내보내기 기본값'이란 무엇입니까?

기본 내보내기에서 가져 오기의 이름 지정은 완전히 독립적이며 원하는 이름을 사용할 수 있습니다.

이 예제를 간단한 예제로 설명하겠습니다.

3 개의 모듈과 index.html이 있다고 가정 해 보겠습니다.

  • modul.js
  • modul2.js
  • modul3.js
  • index.html

modul.js

export function hello() {
    console.log("Modul: Saying hello!");
}

export let variable = 123;

modul2.js

export function hello2() {
    console.log("Module2: Saying hello for the second time!");
}

export let variable2 = 456;

modul3.js

export default function hello3() {
    console.log("Module3: Saying hello for the third time!");
}

index.html

<script type="module">
import * as mod from './modul.js';
import {hello2, variable2} from './modul2.js';
import blabla from './modul3.js'; //! Here is the important stuff - we name the variable for the module as we like

mod.hello();
console.log("Module: " + mod.variable);

hello2();
console.log("Module2: " + variable2);

blabla();
</script>

출력은 다음과 같습니다.

modul.js:2:10   -> Modul: Saying hello! 
index.html:7:9  -> Module: 123 
modul2.js:2:10  -> Module2: Saying hello for the second time! 
index.html:10:9 -> Module2: 456 
modul3.js:2:10  -> Module3: Saying hello for the third time!

자세한 설명은 다음과 같습니다.

모듈에 대해 단일 항목을 내보내려면 '내보내기 기본값'이 사용됩니다.

따라서 중요한 것은 " './modul3.js'에서 blabla 가져 오기 "입니다. 대신 다음과 같이 말할 수 있습니다.

" ' ./modul3.js 에서 pamelanderson 가져 오기 "및 pamelanderson (); 이것은 'export default'를 사용할 때 잘 작동하며 기본적으로 이것이 기본값 입니다. 기본값 일 때 원하는 이름을 지정할 수 있습니다 .


Ps 예제를 테스트하려면 먼저 파일을 작성한 다음 브라우저에서 CORS 를 허용 하십시오.-> 브라우저 URL에서 firefox 유형을 사용하는 경우 : about : config-> "privacy.file_unique_origin"검색-> 변경 "false"-> index.html 열기-> F12 키를 눌러 콘솔을 열고 출력을 확인하십시오-> 즐기십시오. cors 설정을 기본값으로 되 돌리는 것을 잊지 마십시오.

Ps2 바보 같은 변수 이름으로 죄송합니다

추가 정보 @ link2medium , link2mdn1 , link2mdn2


4
이것은 최선의 대답으로 받아 들여 져야하지만 나는 upvote를 사용하여 할 수있는 일을했습니다.
Jarmos

1
대단히 감사합니다!
결합

1
이것은 허용 대답해야 제기 - 손
nosahama

16

MDN 페이지 에 설명 된대로

이름과 기본값의 두 가지 내보내기 유형이 있습니다. 모듈 당 여러 개의 명명 된 내보내기를 가질 수 있지만 하나의 기본 내보내기 [...] 명명 된 내보내기 만 여러 값을 내보내는 데 유용합니다. 가져 오는 동안 해당 개체의 동일한 이름을 사용해야하지만 기본 내보내기는 모든 이름으로 가져올 수 있습니다.

예를 들면 다음과 같습니다.

let myVar; export default myVar = 123; // in file my-module.js

import myExportedVar from './my-module' //  we have the freedom to use 'import myExportedVar' instead of 'import myVar' because myVar was defined as default export

console.log(myExportedVar);        // will log 123

6

내 의견에서 기본 내보내기 의 중요한 점 은 모든 이름으로 가져올 수 있다는 것입니다!

기본값을 내보내는 foo.js 파일이있는 경우 :

export default function foo(){}

다음을 사용하여 bar.js로 가져올 수 있습니다.

import bar from 'foo'
import Bar from 'foo' //or ANY other name you wish to assign to this import


0

이름기본값 의 두 가지 내보내기 유형이 있습니다. 모듈 당 여러 개의 명명 된 내보내기를 가질 수 있지만 기본 내보내기는 하나만 가능합니다. 각 유형은 위 중 하나에 해당합니다. 출처 : MDN

명명 된 수출

export class NamedExport1 { }

export class NamedExport2 { }

// import class
import { NamedExport1 } from 'path-to-file'
import { NamedExport2 } from 'path-to-file'

// OR you can import all at once
import * as namedExports from 'path-to-file'

기본 내보내기

export default class DefaultExport1 { }

// import class
import DefaultExport1 from 'path-to-file' // no curly braces {}

// 기본 가져 오기에 다른 이름을 사용할 수 있습니다

import Foo from 'path-to-file' // this will assign any default export to Foo.

-3

export default 는 단일 클래스, 함수 또는 프리미티브를 내보내는 데 사용됩니다.

함수에 이름이 없으면 export default function () {}을 사용할 수 있습니다. 파일에는 기본 내보내기가 하나만있을 수 있습니다.

더 읽어보기

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.