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;