2020. 10. 22. 21:17ㆍ웹 프론트엔드 깊게 이해하기/자바스크립트 이해하기
[ Node.js ]
Node.js 에서 쓰는 모듈화는 Common.js의 것이다.
require('경로 or 패키지 이름') 로 불러오고 이를 변수나 상수로 담는다.
가져와야 할 파일 안에서는 module.exports = (somthing) 으로 require 를 실행했을 때 리턴되는 값이나 함수를 넣는다.
[ ES6 ]
하지만 ES6 가 공개된 이후에는 모듈화를 자바스크립트에서 공식으로 지원한다.
import 담을 변수 from '경로 or 패키지 이름' 으로 불러오고
export default (somthing) 으로 불러왔을 때 담길 리턴값을 설정할 수 있다.
다만 default 를 없애고 그냥 export를 쓰는 방법이 있다. 이 export는 여러번 지정할 수 있다.
export (something)
export (something2)
로 파일 상에서 export 해주고 import { something, something2 } from ' 경로 or 패키지 이름 ' 으로 불러와 줄 수 있다. 해체 할당을 활용해서 한번에 여러 개를 할당 할 수 있는 편한 기능이다.
그냥 export와 default 를 섞어서 쓸 수도 있다.
export default (somthing1)
export (something2)
export (something3)
로 파일 상에서 export 해주고
import somthing1, { something2, something3 } from ' 경로 or 패키지 이름 '
으로 불러와주면 각각이 담기게 된다.
이 때, export와 export default 두 가지 경우 모두 다 불러온 파일상의 변수나 상수 혹은 함수 이름과 같은 이름으로 불러와야 하지만, 이름을 따로 지정하면서 불러오고 싶은 경우,
import somthing1 as 지정할 이름, { something2 as 지정할 이름 , something3 as 지정할 이름 }
이렇게 추가 해주면 된다.
export 를 활용할 때 (export default 말고) export로 지정된 모든 것을 한꺼번에 가지고 오고 싶을 때가 있을 것이다. 그럴 때는 와일드 카드를 이용해서
import somthing1, * from ' 경로 or 패키지 이름 '
로 불러올 수 있다. import 문을 쓴 파일 상에서는 불러온 파일 안에서 지정된 것과 똑같은 이름을 써야 한다. 문제는, 파일이 분리되어 있어서 그냥 이렇게 가져오면 불안 요소가 있다는 것이다.
그래서
import somthing1, * as 지정할 이름 from ' 경로 or 패키지 이름 '
이런 식으로 파일 안의 모든 export 값들을 담을 object 의 이름으로 지정할 이름을 as 로 정해준다.
default 와 export가 구분되어 있는 이유는, 파일 전체나 매우 큰 부분을 불러올 것인지, 파일의 일부만을 불러올 것인지를 번들링 단계에서 정할 수 있다는 장점이 있기 때문이다. 번들러는 import를 어떻게 했는지에 따라 그에 맞춰서 필요한 부분들만을 가져와준다. 이 두 가지 방식이 섞여 있는 일이 많기에, 트랜스파일러나 번들러를 통해 통합해주는 작업이 필요하다.
'웹 프론트엔드 깊게 이해하기 > 자바스크립트 이해하기' 카테고리의 다른 글
객체 지향 프로그래밍의 원칙 (0) | 2020.12.13 |
---|---|
객체 및 프로토타입 (0) | 2020.11.26 |
화살표 함수에 없는 3가지 (0) | 2020.10.22 |
THIS 의 이해 (0) | 2020.10.22 |
클로저 & 스코프 체인 (0) | 2020.10.22 |