본문 바로가기

LECTURE/# Node.js basic

[초급 Node.js] Node.js 모듈 시스템

반응형

by commin

 

Node.js 모듈 시스템

Node.js는 모듈 시스템을 통해 코드를 모듈화하여 재사용성과 유지보수성을 높일 수 있습니다. Node.js 모듈 시스템은 CommonJS 스펙을 기반으로 합니다.

모듈 생성하기

Node.js에서 모듈은 파일 단위로 생성됩니다. 다른 파일에서 해당 모듈을 사용하려면, 해당 파일을 모듈로 만들어야 합니다.

// greeting.js

const sayHello = () => {
  console.log('Hello, World!');
};

module.exports = {
  sayHello,
};

위 예제는 "greeting.js" 파일에서 sayHello 함수를 모듈로 생성하는 방법을 보여줍니다. module.exports 객체를 통해 외부에서 사용할 함수나 변수를 지정할 수 있습니다.

모듈 사용하기

다른 파일에서 해당 모듈을 사용하려면, require 함수를 사용하여 모듈을 불러올 수 있습니다.

// app.js

const greeting = require('./greeting');

greeting.sayHello(); // Hello, World!

위 예제는 "greeting.js" 모듈을 require 함수를 통해 불러온 후, 해당 모듈의 sayHello 함수를 호출하는 방법을 보여줍니다.

모듈 내보내기 방법

Node.js 모듈 시스템에서는 다음과 같은 방법으로 모듈을 내보낼 수 있습니다.

  • module.exports 객체를 통해 한 개의 객체를 내보내는 방법
  • exports 객체를 통해 여러 개의 객체를 내보내는 방법
  • 직접 객체를 반환하는 방법
// module.exports 객체를 통한 내보내기
module.exports = {
  sayHello,
};

// exports 객체를 통한 내보내기
exports.sayHello = sayHello;
exports.sayGoodbye = sayGoodbye;

// 객체를 반환하는 방법
return {
  sayHello,
};

모듈 검색 순서

Node.js에서 모듈을 불러올 때, 다음과 같은 검색 순서를 따릅니다.

  1. 내장 모듈(built-in module)인지 검색
  2. node_modules 디렉토리에서 해당 모듈을 찾음
  3. 상위 디렉토리에서 node_modules 디렉토리를 찾아 검색을 반복함

즉, 현재 파일이 위치한 디렉토리부터 상위 디렉토리로 올라가며 node_modules 디렉토리를 찾아가며 해당 모듈을 검색합니다.

기본 모듈

Node.js에는 기본적으로 내장된 모듈이 존재합니다. 이러한 기본 모듈을 사용하여 파일 시스템 접근, 네트워크 통신, 암호화, 압축 등 다양한 기능을 구현할 수 있습니다.

기본 모듈은 require() 함수를 사용하여 불러올 수 있습니다. 예를 들어 파일 시스템 모듈을 불러오기 위해서는 다음과 같이 작성합니다.

const fs = require('fs');

다음은 Node.js에서 제공하는 기본 모듈의 목록입니다.

  • assert: 단위 테스트를 위한 모듈
  • buffer: 이진 데이터를 다루기 위한 모듈
  • child_process: 다른 프로세스를 실행하기 위한 모듈
  • cluster: 멀티 프로세싱을 위한 모듈
  • crypto: 암호화를 위한 모듈
  • dgram: 데이터그램 소켓 통신을 위한 모듈
  • dns: DNS 조회를 위한 모듈
  • events: 이벤트 처리를 위한 모듈
  • fs: 파일 시스템 접근을 위한 모듈
  • http: HTTP 서버와 클라이언트를 위한 모듈
  • https: HTTPS 서버와 클라이언트를 위한 모듈
  • net: TCP 서버와 클라이언트를 위한 모듈
  • os: 운영체제 정보를 다루기 위한 모듈
  • path: 파일 경로 처리를 위한 모듈
  • process: 현재 프로세스 정보를 다루기 위한 모듈
  • querystring: URL 쿼리스트링 처리를 위한 모듈
  • readline: 명령행 입력을 위한 모듈
  • stream: 데이터 스트림 처리를 위한 모듈
  • string_decoder: 문자열 디코딩을 위한 모듈
  • timers: 타이머 처리를 위한 모듈
  • tls: TLS/SSL 서버와 클라이언트를 위한 모듈
  • tty: 터미널 입력/출력을 위한 모듈
  • url: URL 처리를 위한 모듈
  • util: 유틸리티 함수를 위한 모듈
  • v8: V8 엔진 정보를 다루기 위한 모듈
  • vm: 가상 머신을 위한 모듈
  • zlib: 압축/해제를 위한 모듈

기본 모듈은 Node.js 설치 시 함께 제공되기 때문에 별도로 설치할 필요가 없습니다. 이 모듈들은 Node.js의 핵심 기능을 제공하며, require() 함수를 사용하여 로드할 수 있습니다.

기본 모듈은 크게 아래와 같은 카테고리로 나뉘어집니다.

  • 코어 모듈 (Core modules): Node.js 자체에서 제공하는 모듈로, 파일 시스템, HTTP, URL 등과 같은 기본적인 기능을 제공합니다.
  • 내장 모듈 (Built-in modules): Node.js 모듈 중 추가적인 기능을 제공하는 모듈로, crypto, os, path 등이 있습니다.
  • 외부 모듈 (Third-party modules): Node.js에서 사용 가능한 다른 개발자가 만든 모듈로, express, mongoose, socket.io 등이 있습니다.
반응형