require vs import

SB22·2023년 4월 3일

기술면접준비

목록 보기
7/15

requireimport는 기본적으로 모듈 키워드이며, 외부 파일이나 라이브러리를 불러올 때 사용한다.
하나의 파일에서 다른 파일의 코드를 불러온다는 동일한 목적을 가지고 있지만 다른 문법구조를 가지고 있다.

require

require / exportsNodeJS에서 사용되고 있는 CommonJS 키워드이고 Ruby 언어 스타일과 비슷하다라고 볼 수 있다.

const test = require('test')  //불러오기
module.exports = test  //내보내기

import

import / exportES6(ES2015)에서 새롭게 도입된 키워드로서 Java나 Python 언어 방식과 비슷하다.

import foo from 'foo'  //불러오기
export default foo  //내보내기

require와 import의 차이점?

  1. require()는 어느 지점에서나 호출이 가능하지만, import()는 파일의 시작 부분에서만 실행할 수 있다. (그렇지만 import 전용 비동기 문법으로 파일 중간에 모듈 불러오기를 할 수 있다.)
  2. 브라우저가 완벽하게 ES6를 지원하는 상황이 아니기 때문에 babel과 같은 ES6코드를 변환해주는 도구(번들러)를 사용할 수 없는 경우에는 require 키워드를 사용해야 한다.
  3. 일반적으로 import()는 사용자가 필요한 모듈 부분만 선택하고 로드 할 수 있기 때문에 더 선호한다. 또한 require()보다 성능이 우수하며 메모리를 절약한다.

require와 import는 각각 어떤 상황에서 쓸 수 있을까?

require와 import는 모두 JavaScript에서 외부 모듈을 가져와서 사용하는 데 사용된다. 이때 이 두 키워드는 모듈 시스템의 구현 방식에 따라 사용된다.

1. CommonJS

require는 CommonJS 방식으로 Node.js 개발 환경에서 모듈을 불러올 때 사용된다.
require를 사용하여 모듈을 로드하고, module.exports를 사용하여 모듈에서 내보내기를 정의한다.
CommonJS 방식에서는 동적으로 모듈을 로드할 수 있으며, 런타임에서 모듈이 로드된다.

2. ES6

ES6 방식은 웹에서 사용된다. 예를 들어, React나 Vue를 쓴 코드에서는 import를 사용하여 모듈을 로드하고, export를 사용하여 모듈에서 내보내기를 정의한다. ES6 방식에서는 정적으로 모듈이 로드되며, 컴파일 시점에 로드된다.

정리

따라서, Node.js에서는 require를 사용하여 모듈을 로드하고, ES6 모듈을 사용하는 경우에는 import를 사용하여 모듈을 로드할 수 있다. 하지만, Node.js 버전 12부터는 ES6 모듈 시스템을 지원하기 때문에, require 대신 import를 사용하여 모듈을 로드할 수 있다고 한다.

0개의 댓글