⚖️
require VS import 문법 비교
December 22, 2022
둘다 외부의 파일이나 라이브러리의 코드를 불러온다는 목적을 가지고 있다.
require / exports
NodeJS에서 사용되고 있는CommonJS키워드이고 Ruby 언어 스타일과 비슷하다고 볼수 있다.- 모듈을 내보낼때는 ES6처럼 명시적으로 선언하는 것이 아니라 특정 변수나 그 변수의 속성으로
내보낼 객체를 세팅해 줘야 한다. - 특히, 유사해 보이는 export 변수와 module.exports 변수를 상황에 맞게 잘 사용해야 한다.
- 기본적으로 2가지 규칙만 기억하면 된다.
- 여러개의 객체를 내보낼 경우 →
export.변수의 개별 속성으로 할당 - 딱 하나의 객체를 내보낼 경우 →
module.exports = 객체자체에 할당
- 여러개의 객체를 내보낼 경우 →
- 노드 프로젝트에서 import를 사용하기 위해서는
JSON 속성에 "type": "module"을 추가해주면 된다.
const name = require('./module.js');import / export
ES6(ES2015)에서 새롭게 도입된 키워드로서 Java나 Python 언어 방식과 비슷하다.
import name from './module.js';ES6 와 CommonJS 의 export(내보내기) 차이점
- CommonJS와 ES6라는 모듈 시스템에서는
exports객체라는 개념이 존재한다. exports는 모듈로부터 내보내지는 데이터들을 담고 있는 하나의 객체이다.NodeJS프로젝트를 진행할때module.exports =라는 모듈 내보내기 구문을 사용했을 것이다.ES6의 export default구문이 CommonJS의 module.exports 구문 동작을 대체하기 위한 문법이라고 보면 된다.
require와 import의 주요 차이점
require()는 CommonJS를 사용하는 node.js문이지만import()는 ES6에서만 사용한다.require()는 파일 (어휘가 아님)에 들어있는 곳에 남아 있으며import()는 항상 맨 위로 이동한다.require()는 프로그램의 어느 지점에서나 호출 할 수 있지만import()는파일의 시작 부분에서만실행할 수 있다. (그렇지만 import 전용 비동기 문법으로 파일 중간에 모듈 불러오기를 할 수 있다.)- 하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다.
- 일반적으로
import()는 사용자가필요한 모듈 부분 만 선택하고 로드 할 수 있기 때문에 더 선호된다. 또한require()보다 성능이 우수하며 메모리를 절약한다.
참고링크
[NODE] 📚 require vs import 문법 비교 (CommonJS vs ES6)
[JS] 📚 모듈 사용하기 import / export 완벽 💯 정리