[Node.js] module과 require/export

Gomao·2023년 3월 28일
0

Node.js

목록 보기
2/8

Module이 무엇인가?

"외부에 영향을 받지 않는(독립된), 재사용 가능한 코드의 묶음"
쉽게 말해서 필요한 함수들의 집합이라는 뜻인데, 좋은 예시가 있다.
python에서 import명령어를 써서 가져오는 것들이 전부 module이다.
module을 사용하는 방법은 다음 두 단계로 나뉜다.
1. require
2. exports

모듈을 만들고 보내는 방법 : exports

// 현재 파일명 : gomao.js //

사용법1

var gomao = function(){
	console.log("gomao!")
};
module.exports = { gomao }

module.exports는 객체가 기본값이고, 위와 같이 객체로 사용 가능하다.
위와 같이 함수를 미리 선언하고 exports 해줄 수 있다.


사용법2

module.exports = {
	gomao : () => console.log("gomao!")
}

module.exports 객체 안에 직접 함수를 선언할 수도 있다.


사용법3

exports.gomao = () => console.log("gomao!")

마지막으로, 함수 하나하나를 직접 exports 해줄 수도 있다.

이렇게 gomao.js 파일에서 exports 작업을 해주면.....

모듈을 읽어와서 사용하는 방법 : require()

사용법

const test = require("./gomao.js");
const test2 = require("./gomgom.js");
const { cutehane } = require("./cutehane.js");

console.log(test.gomao());
console.log(test2.gomgom());
console.log(cutehane());

실행 방법은 위와 같다.
실행 결과는 아래와 같다.

모듈 사용법 정리

module file에서 선언해주고 exports해준 함수들을 실행할 file에서

  1. require 메서드를 사용해서 새로운 변수에 함수를 저장해주면,
    test.gomao(), test.gomgom()와 같이 함수를 사용 가능하다.

  2. 원래 함수명을 {}객체에 담아 require 메서드를 사용하면,
    module file에서 선언한 이름 그대로 cutehane()로 사용 가능하다.

모듈 호출 시 특이점(?) 주의점(?)

  1. require('./my-module')
    만약 my-module이 .js파일이면 해당 파일을 load (.js 생략 가능)
    my-module이 디렉터리인 경우 my-module/index.js 파일 load

  2. require('./function_module')
    function_module이 함수형 module인 경우, require 만으로 실행되지 않고,
    이후에 function_module()와 같이 필요 시점에 실행시켜줘야 한다.

  3. require('./my-data')
    my-data파일이 json파일인 경우, .json을 생략해줘도 된다.

  4. 위에 언급 하였지만, 여러번 실행해야 할 module은 함수형 module로 선언해야 한다.

뜬금없는 여담 / 마무리

뜬금 없지만, 이 시점에서 궁금한 사람들이 있을 것이다.
대체 gomao는 뭐고, gomgom은 뭐고, cutehane는 뭐란 말인가?
잠깐 짚고 넘어가려 한다.

ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

아무튼 이런 방법으로 module을 만들고 호출하여 사용할 수 있다.
다음 포스팅에서는 Node.js의 내장 module에 대해 다뤄보려 한다.

다음 포스팅 내용

  1. Node.js의 내장 module(fs, html, ...)
  2. readFile(Sync), writeFile, appendFile(Sync)
  3. https://nodejs.org/api/http.html
profile
코딩꿈나무 고마오

0개의 댓글