안녕하세요

[Chat GPT야] commonJS require와 es6 import의 차이점을 알려주세요. 본문

Chat GPT야 도와줘

[Chat GPT야] commonJS require와 es6 import의 차이점을 알려주세요.

sakuraop 2023. 2. 20. 02:06

commonJS require와 es6 import의 차이점

require와 import 모두 Node.js와 JavaScript에서 모듈을 가져오는 데 사용되는 문법입니다.

그러나 그들은 미묘한 차이점이 있습니다.

CommonJS (require)

require는 Node.js에서 사용되는 기본적인 모듈 가져오기 방법입니다.

require는 동기식으로 작동하므로 코드를 순서대로 실행합니다.

다른 파일에서 사용 가능한 변수, 함수, 클래스 등을 가져오기 위해 다음과 같이 사용합니다.

// 모듈 가져오기
const express = require("express");
const http = require("http");

// 사용하기
const app = express();
const server = http.createServer(app);

ES6 (import)

import는 ECMAScript 2015 (ES6)부터 JavaScript에서 사용 가능한 모듈 가져오기 방법입니다.

import는 비동기식으로 작동하므로 코드를 순서대로 실행하지 않습니다.

또한, import는 현재 대부분의 브라우저에서 지원되지 않아 웹팩과 같은 번들러를 사용하여 사용 가능합니다.

다른 파일에서 사용 가능한 변수, 함수, 클래스 등을 가져오기 위해 다음과 같이 사용합니다.

// 모듈 가져오기
import express from "express";
import http from "http";

// 사용하기
const app = express();
const server = http.createServer(app);

이제 많은 Node.js 프로젝트에서 require를 사용하지만,

최신 버전의 Node.js에서는 import를 지원하므로 필요에 따라 선택할 수 있습니다.

그러나 여전히 대부분의 브라우저에서는 import를 지원하지 않으므로,

웹사이트에서는 대체로 require를 사용하는 것이 일반적입니다.

=> 💥그러나, React 에서는 require 사용 불가능💥


es6문법의 import가 직관적이고 성능면에서도 뛰어나지만...

 

node.js 환경에서는 require를 이용하기 때문에,

server 에서 모듈을 가져올 때 es6문법으로 작성하여 export한 경우에는 모듈을 불러올 수 없었다.

 

const axios = require("axios");

exports.getGeneralMostPopularVideos = getGeneralMostPopularVideos;
exports.getLatestSearch = getLatestSearch;

=> require, exports는 CommonJS의 문법으로 node.js 환경과 호환이 되지만, es6문법은 적용이 불가능하다.


React는 Node.js 환경이 아니기 때문에

CommonJS 스펙의 require() 및 exports 키워드를 직접적으로 사용하는 것은 불가능합니다.

일반적으로 React 애플리케이션에서는 대신 ECMAScript 6 (ES6) 모듈 시스템을 사용합니다.

이를 위해 import와 export 키워드를 사용합니다.

 

만약 Node.js 환경에서 CommonJS 스펙을 사용해야 한다면, babel 같은 도구를 사용하여 코드를 변환할 수 있습니다.

이를 통해 ES6 문법으로 작성된 코드를 CommonJS 모듈 형식으로 변환하여 Node.js에서 사용할 수 있습니다.