728x90
728x90

Node.js에서 모듈 불러오는 방식 (require, import)

들어가며

  • Node.js에서 모듈(Module)을 불러오는 방식은 크게 2가지가 있다.
    • CommonJS 스타일로 불러오는 @require@ 방식과 ES6 모듈 스타일로 불러오는 @import@ 방식 2가지가 있다.
  • 이 두 가지 방법의 차이점에 대해 알아보자.

Node.js Logo

 

Node.js에서 requireimport의 차이점?

require

  • require는 Node.js의 기본 모듈 시스템에서 사용되는 방법이다.
  • CommonJS 스타일로 모듈을 가져온다.
// 파일 시스템 모듈 가져오기
const fs = require('fs'); 

// 사용자 정의 모듈 가져오기 (상대 경로 사용)
const math = require('./math'); 
  • require로 가져온 모듈은 객체로 반환되며, 해당 모듈에서 노출된 함수, 변수 또는 객체를 사용할 수 있다.

 

import

  • import는 ECMAScript 2015 (ES6) 이상에서 지원되며, 기본적으로 브라우저 환경에서 사용되는 모듈 시스템의 구문이다.
  • ES6 모듈 스타일로 모듈을 가져온다.
// 파일 시스템 모듈 가져오기
import fs from 'fs';

// 사용자 정의 모듈 가져오기 (상대 경로 사용)
import math from './math';
  • import는 정적으로 모듈을 가져온다.
    • 즉, 모듈은 실행 시간에 가져오지 않고 미리 로드된다.
  • 일반적으로 import를 사용하려면 Node.js에서 ES6 모듈 시스템을 활성화해야 한다.
    • 이를 위해 .mjs 확장자를 가진 파일을 사용하거나 package.json 파일에서 "type" 필드를 "module"로 설정해야 할 수 있다.
  • Node.js에서는 기본적으로 require를 사용하는 것이 일반적이지만, ES6 모듈 시스템을 사용하려면 몇 가지 추가 설정이 필요하다.
  • Node.js 버전 14부터 ES6 모듈을 지원하며, 사용할 수 있는 환경에 따라 어떤 방법을 선택할지 결정할 수 있다.

 

@import@ 방식을 사용하기 위해서는?

  • @npm@을 초기화할 때 생성되는 @package.json@ 파일에 다음의 옵션을 추가해준다.
"type": "module"

 

index.js
{
  "name": "learning-npm",
  "version": "1.0.0",
  "description": "I'm learning about NPM",
  "main": "index.js",
  "type": "module",     // 추가
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "devastra",
  "license": "ISC",
  "dependencies": {
    "sillyname": "^0.1.0"
  }
}
728x90
728x90