require와 import차이점

2023. 4. 3. 11:51웹개발 메모장

728x90
SMALL

 

require / exports  import / export  키워드

자바스크립트 개발을 하다보면 모듈을 불러오는 문법 두가지를 접하게 된다.

이 둘은 비슷하며내서도 달라서 혼돌을 줄 수 있다.

둘 다 외부의 파일이나 라이브러리의 코드를 불러온다는 같은 목적을 가지고 있지만, 전혀 다른 문법 구조를 가지고 있다.

 

require / exports : Node.js에서 사용되고 있는 CommonJS 키워드이고 Ruby 언어 스카일과 비슷하다고 할 수 있다.

/* CommonJS  */
const name = require('./module.js');
/* CommonJS  */
const name = '고양이';

module.exports = name;

 

import / export : ES6에서 새롭게 도입된 키워드로 Java나 Python 언어 방식과 비슷하다.

/* ES6 */
import name from './module.js'
/* ES6 */
const name = '고양이';

export default name;

[ ES6 와 CommonJS 의 export(내보내기) 차이점 ] 

CommonJS와 ES6라는 모듈 시스템에서는 exports 객체라는 개념이 존재한다.
exports는 모듈로부터 내보내지는 데이터들을 담고 있는 하나의 객체이다.
여러분은 노드 프로젝트를 진행할때 module.exports =  라는 모듈 내보내기 구문을 자주 써왔을 것이다.
그리고 ES6의 export default 구문이, CommonJS의 module.exports 구문 동작을 대체하기 위한 문법이라고 보면 된다.

 


require와 import의 주요 차이점을 정리해보면 다음과 같다.

  • require()는 CommonJS를 사용하는 node.js문이지만 import()는 ES6에서만 사용
  • require()는 파일 (어휘가 아님)에 들어있는 곳에 남아 있으며 import()는 항상 맨 위로 이동
  • require()는 프로그램의 어느 지점에서나 호출 할 수 있지만 import()는 파일의 시작 부분에서만 실행할 수 있다. (그렇지만 import 전용 비동기 문법으로 파일 중간에 모듈 불러오기를 할 수 있다. 
  • 하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다
  • 일반적으로 import()는 사용자가 필요한 모듈 부분 만 선택하고 로드 할 수 있기 때문에 더 선호된다. 또한 require()보다 성능이 우수하며 메모리를 절약한다.

 

728x90
LIST