본문 바로가기

면접준비

require와 import차이점을 설명

require와 import는 JavaScript 모듈을 불러오는 데 사용되는 두 가지 다른 방법입니다.


require

require는 CommonJS 모듈 시스템에 기반한 방법입니다.
주로 Node.js에서 사용됩니다.
동기식으로 코드를 불러옵니다. 즉, 모듈이 불러와질 때까지 코드 실행이 멈춥니다.
파일 확장자를 생략할 수 있습니다.

 

사용법

const moduleName = require('modulePath');

상황 예시
Node.js 백엔드 어플리케이션 개발
동기적으로 불러오는 방식이 필요한 경우


import

import는 ECMAScript 모듈 (ESM) 시스템에 기반한 방법입니다.
최신 웹 브라우저 및 Node.js 환경에서 사용할 수 있습니다.
비동기식으로 코드를 불러옵니다. 즉, 모듈 로딩과 동시에 코드 실행이 가능합니다.
명시적으로 파일 확장자를 적어주어야 합니다.
사용법: 

import moduleName from 'modulePath';

상황 예시:
웹 프론트엔드 어플리케이션 개발
비동기적으로 불러오는 방식이 필요한 경우
최신 자바스크립트 문법과 기능을 활용한 프로젝트

 


질문: require와 import의 주요 차이점은 무엇인가요?
답변: require는 CommonJS 모듈 시스템을 사용하며 동기적으로 작동하고, import는 ECMAScript 모듈 시스템을 사용하며 비동기적으로 작동합니다.


질문: CommonJS 모듈 시스템이란 무엇인가요?
답변: CommonJS는 자바스크립트를 브라우저 외부에서도 사용할 수 있게 하기 위해 생성된 모듈 시스템으로, 서버 애플리케이션 및 데스크톱 애플리케이션을 작성할 때 주로 사용됩니다.


질문: ECMAScript 모듈 시스템이란 무엇인가요?
답변: ECMAScript 모듈은 자바스크립트의 표준화된 모듈 시스템으로서, 웹 및 서버 사이드 어플리케이션에 모두 적용될 수 있으며 비동기적으로 코드를 로드합니다.


질문: require와 import 사이에서 성능 차이가 있나요?
답변: 성능 차이는 사용하는 시스템과 로딩 방식에 따라 다릅니다. import는 비동기적으로 불러오기 때문에 초기 시간에서는 더 빠를 수 있으나, 과도한 사용은 성능에 영향을 줄 수 있습니다.


질문: default export와 named export의 차이점은 무엇인가요?
답변: default export는 모듈에서 기본적으로 내보내는 객체나 함수를 말하며, 한 모듈에서 단 한 번만 사용됩니다. named export는 여러 개를 내보낼 수 있고, 이름을 통해 구분됩니다.


질문: ES Modules를 Node.js에서 사용하려면 어떻게 해야 하나요?
답변: Node.js(버전 13 이상)에서는 --experimental-modules 플래그를 사용하거나, 파일 확장자를 .mjs(모듈 자바스크립트)로 사용하여 ES Modules를 사용할 수 있습니다.


질문: require는 어떻게 동적 임포트를 할 수 있나요?
답변: require를 사용하여 동적 임포트를 하려면 조건문이나 함수 안에서 사용하여 필요한 경우에만 모듈을 불러오도록 합니다.


질문: import 구문을 사용하여 코드를 비동기적으로 로드하는 방법은 무엇인가요?
답변: import() 함수를 사용하여 Promise 기반의 비동기적으로 코드를 로드할 수 있습니다. 예: import('modulePath').then(module => /* 사용할 코드 */);


질문: CommonJS와 ES Modules 사이의 호환성 문제를 해결하는 방법은 무엇인가요?
답변: 호환성 문제를 해결하려면 빌드 도구(예: Webpack, Babel)를 사용하여 코드를 변환하거나, Node.js의 최신버전에서 지원하는 동적 임포트 기능을 활용할 수 있습니다.


질문: 웹팩(Webpack)이 require와 import 사용에 어떤 영향을 미치나요?
답변: 웹팩은 모듈 번들러로써, require와 import 구문을 해석하여 의존성을 관리하고 코드를 최적화할 수 있습니다. 이를 통해 두 모듈 시스템 간 호환성 및 성능 문제를 해결할 수 있습니다.