공통점
두 가지 모두 외부의 파일이나 라이브러리 등 모듈을 불러오는 목적으로 사용한다.
require - exports
- Node.js에서 사용되고 있는 CommonJS 키워드이고 Ruby 의 언어 스타일과 비슷하다.
import - export
- ES6(ES2015)에서 새로 도입된 키워드로서 Java나 Python 언어 방식과 비슷하다.
차이점
1. 문법구조
아래 2줄의 코드는 기본적으로 외부 모듈의 코드를 불러오는 동일한 작업을 수행하고 있지만 문법 구조가 다르다.
/* CommonJS */
const name = require('./module.js');
/* ES6 */
import name from './module.js'
- require()는 CommonJS를 사용하는 node.js문이지만 import()는 ES6에서만 사용
- require()는 파일 (어휘가 아님)에 들어있는 곳에 남아 있으며 import()는 항상 맨 위로 이동
- require()는 프로그램의 어느 지점에서나 호출 할 수 있지만 import()는 파일의 시작 부분에서만 실행할 수 있다. (그렇지만 import 전용 비동기 문법으로 파일 중간에 모듈 불러오기를 할 수 있다.
- 하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다
- 일반적으로 import()는 사용자가 필요한 모듈 부분 만 선택하고 로드 할 수 있기 때문에 더 선호된다. 또한 require()보다 성능이 우수하며 메모리를 절약한다.
2. exports / export
/* CommonJS */
const name = '슈퍼맨';
module.exports = name;
/* ES6 */
const name = '슈퍼맨';
export default name;
'Javascript' 카테고리의 다른 글
[Javascript] Generator Function (0) | 2023.01.19 |
---|---|
[Javascript] 커링(Currying)이란 (0) | 2023.01.17 |
[JS] 중복되지 않는 알파벳으로 이루어진 가장 긴 문자열 찾기 (0) | 2022.12.31 |
[Javascript] Closure (0) | 2022.10.17 |
[JavaScript] 이진 탐색(Binary Search) 알고리즘 (0) | 2022.09.13 |