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
'웹개발 메모장' 카테고리의 다른 글
useRef는 언제 사용할까 (0) | 2023.04.04 |
---|---|
const 키워드에 대해 (0) | 2023.04.03 |
브라우저 저장소에 대해서 알아보자 (0) | 2023.03.31 |
this 가 동작하는 원리와 용법 그리고 차이 (0) | 2023.03.31 |
HTTP 란? HTTPS 는? (0) | 2023.03.30 |