WEB/🌳 Node.js

[Node.js] 3. 모듈 만들기, 불러오기 (export, require)

무딘붓 2022. 7. 27. 22:31

 

모듈이란?

Node.js으로 앱을 개발하기 위해서는 모듈 시스템을 사용한다.

이때, 모듈이란 ‘미리 만들어둔 함수들의 집합’이라고 할 수 있다.

 

Node.js에서의 모듈은 2가지(코어 모듈, 파일 모듈)로 분류할 수 있다.

 

1. 코어 모듈 (Core module)

코어 모듈은 Node.js에서 기본적으로 제공하는 모듈이다.

http, fs 등의 모듈이 기본적으로 제공되는 코어 모듈에 속한다.

 

2. 파일 모듈 (File Modules, Local Module)

코어 모듈을 제외한 모듈은 파일 모듈이라고 부른다.

직접 모듈을 생성하는 경우도 당연히 파일 모듈에 속한다.

모듈을 직접 생성하기 위해서는 exports 객체를 사용하고, 모듈을 불러오기 위해서는 require() 함수를 이용한다.

이해를 돕기 위해 파일 모듈을 하나 만들어 보자.

 


export 객체 : 모듈의 생성

 

module.exports.모듈외부에서사용할이름 = 모듈내부에서의이름;
//calc1.js
function add(a, b) {
    return a + b;
}
function sub(a, b) {
    return a - b;
}

module.exports.add = add;
module.exports.sub = sub;

모듈로 사용할 함수를 js파일에 저장한 다음,

export(내보내기)를 이용하여 바깥에서 사용할 수 있게 하면 모듈이 완성된다.

//calc2.js
var calc = {};
calc.add = function(a, b){
    return a + b;
}
calc.sub = function(a, b){
    return a - b;
}

module.exports = calc;
//calc3.js
exports.add = function(a, b){
    return a + b;
}
exports.sub = function(a, b){
    return a - b;
}

모듈을 작성하는 방법은 다양하다. calc1.js, calc2.js, calc3.js는 다른 형식으로 작성되었지만, 모듈로 불러와 사용하면 동일한 결과를 얻게 된다.

 


require() 함수 : 모듈 불러오기

 

const myLocalModule = require('모듈파일의 주소');

 

모듈을 불러오기 위해서는 require() 함수에 불러올 모듈 파일의 주소를 인자로 넣어주면 된다.

위에서 만든 calc1.js, calc2.js, calc3.js를 모듈로 불러와보자.

 

var calc1 = require("./calc1");
var calc2 = require("./calc2");
var calc3 = require("./calc3");

console.log(calc1.add(4, 2));
console.log(calc1.sub(4, 2));

console.log(calc2.add(4, 2));
console.log(calc2.sub(4, 2));

console.log(calc3.add(4, 2));
console.log(calc3.sub(4, 2));

require()로 불러온 모듈 실행 결과

모듈 파일을 만들 때 의도했던 대로 잘 동작하는 것을 확인할 수 있다.


코어 모듈 불러오기

 

var http = require('http');     // http 서버 및 관련 모듈
var fs = require('fs');         // 파일 시스템 작업 관련 모듈
var url = require('url');       // URL 파싱 관련 모듈

 

코어 모듈을 불러올 때에는 파일의 경로를 지정하지 않고 이름만 넣어도 된다.

 

const로 선언한 이유는 이후에 불러온 모듈을 변경하지 않기 때문이며, var 등으로 선언해도 동작하는데 문제는 없다.

 

+npm 등으로 설치한 패키지를 불러올 때에도 경로를 지정하지 않아도 된다.

const express = require('express')

 

 

-참고 사이트

https://nodejs.org/dist/latest-v8.x/docs/api/modules.html

 

Modules | Node.js v8.17.0 Documentation

Modules# In the Node.js module system, each file is treated as a separate module. For example, consider a file named foo.js: const circle = require('./circle.js'); console.log(`The area of a circle of radius 4 is ${circle.area(4)}`); On the first line, foo

nodejs.org