Javascript

[Javascript] require 와 import 비교

mark340 2023. 1. 9. 19:38

공통점

두 가지 모두 외부의 파일이나 라이브러리 등 모듈을 불러오는 목적으로 사용한다.

 

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;