예제1 (import)
import _ from 'lodash' // From `node_modules` !
import getType from './getType' // getType.js
import getRandom from './getRandom' // getRandom.js
console.log(_.camelCase('the hello world'))
console.log(getType([1, 2, 3]))
console.log(getRandom(), getRandom())
import _ from 'lodash'
코드는 'lodash'
라는 패키지를 install
해서 그것을 import
키워드를 통해 'node modules'
폴더에 가지고 와서 _
기호로 활용을 하겠다는 선언이다.
예제2 (.js 파일 export)
export default function getType(data) {
return Object.prototype.toString.call(data).slice(8, -1)
}
.js
자바스크립트 파일은 외부에 있는 .js
파일을 import
키워드를 통해 가지고 올 수도 있거나 그 파일 내부에서 특정한 내용을 export
키워드를 통해 내보낼 수도 있다.
module.js
파일이 존재한다.import
키워드를 통해서 외부에 있는 다른 자바스크립트 파일을 가지고 올 수 있다.Default export
: 이름을 따로 지정하지 않아도 되는 기본 통로다. default
키워드를 통해 사용할 수 있다.Named export
: 이름을 지정해야 되는 통로 예제1 (getType.js)
export default function getType(data) {
return Object.prototype.toString.call(data).slice(8, -1)
}
예제2(main.js)
import _ from 'lodash' // From `node_modules` !
import getType from './getType' // getType.js
import getRandom from './getRandom' // getRandom.js
console.log(_.camelCase('the hello world'))
console.log(getType([1, 2, 3]))
console.log(getRandom(), getRandom())
export
키워드를 통해 내보내기를 할 건데 기본통로인 Default export
를 사용할 것이다. 따라서 뒤에 default
키워드를 붙여준다.function
참조형 데이터 함수를 내보내기 할 건데 함수명이 getType
으로 지정이 되어져 있지만 default
기본 통로로 내보내기를 할 때는 함수명을 지정해주지 않아도 된다. 따라서 getType
을 지워도 정상적으로 작동하여 출력하는 것을 확인할 수 있다.main.js
에서 불러올 때도 굳이 getType
으로 작성을 안해도 되고 내가 원하는 이름으로 지정할 수 있다. 예를 들어 checkType
으로 변경하고 싶다면 import checkType
으로 바꿔도 무방하다. 다만, from './getType'
상대경로는 정확하게 작성해야 된다.default
로 내보내지는 데이터는 이름을 지정하지 않아도 되고 import
로 가져올 때는 이름을 수정해도 문제 없다.예제1 (getRandom.js)
// getRandom.js
export function random() {
return Math.floor(Math.random() * 10)
}
예제2 (main.js)
// main.js
import _ from 'lodash' // From `node_modules` !
import getType from './getType' // getType.js
import { random } from './getRandom' // getRandom.js
console.log(_.camelCase('the hello world'))
console.log(getType([1, 2, 3]))
console.log(random(), random())
default
키워드를 사용할 때는 기본 통로로 나오기 때문에 별도의 기호 없이 import getType
처럼 작성해도 되지만 이름이 지정된 named export
같은 경우에는 {}
중괄호 기호를 사용해서 import { random }
으로 사용해줘야 된다.default export
는 하나의 데이터만 내보낼 수 있지만 이름이 지정된 통로 named export
는 여러개의 데이터도 내보낼 수 있다.예제3 (named export getRandom.js)
// getRandom.js
export function random() {
return Math.floor(Math.random() * 10)
}
export const user = {
name: 'test',
age: 85
}
예제4(main.js)
// main.js
import _ from 'lodash' // From `node_modules` !
import getType from './getType' // getType.js
import { random, user } from './getRandom' // getRandom.js
console.log(_.camelCase('the hello world'))
console.log(getType([1, 2, 3]))
console.log(random(), random())
console.log(user)
named export
는 여러개의 데이터를 내보낼 수 있기 때문에 정상적으로 출력된다.
하지만 기본통로인 default export
는 어떨까?
예제5(default export /getType.js)
// getType.js
export default function getType(data) {
return Object.prototype.toString.call(data).slice(8, -1)
}
export default 123
기본통로인 default export
로 getType.js
하나의 파일에서 내보내는 데이터가 2개가 됐더니 error
가 발생했다. error
를 읽어보면 Only one default export allowed per module.
라고 친절하게 설명해준다. 즉, 하나의 모듈에서 하나의 기본 내보내기만 가능하다는 것이다.
예제6 (* as export /getRandom.js)
// getRandom.js
import _ from 'lodash' // From `node_modules` !
import getType from './getType' // getType.js
// import { random, user } from './getRandom' // getRandom.js
import * as R from './getRandom'
console.log(_.camelCase('the hello world'))
console.log(getType([1, 2, 3]))
// console.log(random(), random())
console.log(R)
getRandom.js
에서 모든 데이터를 한 번에 가져오고 싶다면 어떻게 해야될까?*
와 as
를 작성하면 된다. import * as 원하는이름
으로 작성하자. *
를 보통 와일드 카드라고 부른다.예제7 (named export와 default export 혼용 /getRandom.js)
// getRandom.js
export function random() {
return Math.floor(Math.random() * 10)
}
export const user = {
name: 'test',
age: 85
}
export default 123
getRandom.js
파일 내용으로는 하나의 데이터만 내보낼 수 있는 기본 통로인 default export
와 여러개의 데이터를 내보낼 수 있는 named export
가 같이 작성되어져 있다.export
를 모두 사용할 수 있기 때문에 굳이 하나만 고집할 필요는 없다.
처음에는 export default 랑 그냥 export 랑 헷갈렸더랬죠 혹시 lodash가 로우대시인거 아셨나요? 그래서 _ 이렇게 import 하는 거라고 어디서 봤습니다 깔깔깔