[giruboy] Module(모듈) 이해하기

최길우·2022년 11월 23일
0

Node.js

목록 보기
1/2

node.js 와 express 이해를 위함으로 자바스크립트 언어 기준으로 작성됨

정의


: 전체를 이루는 부품 하나하나를 의미함. 예를들어 JavaScript 파일 하나를 모듈이라하고, 이 모듈들이 모여 하나의 프로그램이 된다.

한 모듈에서 다른 모듈의 기능을 가져다쓰는 것이 핵심이고, 이를 ‘모듈을 로드한다’ 라고 함.


외부 모듈 불러오기


require() 함수

: 모듈을 로드할 때 사용하는 함수이며, 모듈을 로드하여 객체 하나를 리턴한다.

()안의 파라미터로 로드 할 대상의 상대경로가 와야함. 단, 코어모듈, 서드파티 모듈의 경우 모듈네임만 파라미터로 지정해주면 된다.


모듈 외부 공개


만약 한 모듈 안에 선언한 항목을 다른 모듈들이 사용하고자 할때는 해당 모듈을 외부로 공개하여야 호출이 가능하다. 이때, exports 라는 객체가 사용된다.

모듈을 외부 공개하는 방법은 2가지가 있다.

1) exports 를 통한 함수나 변수 외부 공개

2) module.exports 를 통한 여러가지 함수를 하나의 객체에 모아서 외부 공개

1) exports

exports 의 구조는 다음과 같다.

exports.모듈 외부로 공개할 이름 = 모듈 내부에서의 이름;

위를 바탕으로 아래 예시 코드를 보자.

ex)

//파일명: math.js
let author = 'woo';

function add(a, b) {
	return a + b;
}

let test = {
	date: '2022-11-17',
	types: ['safetyTest', 'performanceTest'],
	printTypes() {
		for (const i in this.types) {
			console.log(this.types[i]);
		}
	}
};

exports.PI = PI;
exports.author = author;
exports.add = add;
exports.test = test;
//파일명 : main.js
const m = require('./math.js');

console.log(m.PI); // 3.14
console.log(m.author); // woo
console.log(m.add(1, 2)); // 3
console.log(m.test.date); // 2022-11-17
console.log(m.test.types); //['safetyTest', 'performanceTest']
m.test.printTypes(); //safetyTest
											// performanceTest

node main.js 명령어를 통해 main.js를 실행해보면 옆의 주석과 같이 결과가 출력 된다.

exports 를 통해 변수(author), 상수(PI), 객체(test) 하나하나 모두 공개가 가능하다.

2) module.exports

공개하고자 하는 함수가 많을때는 공개할 것들을 하나의 객체로 만들어서 module.exports 키워드를 사용한다.

아래의 예시코드를 보자.

// 파일명: math.js
let calculator = {
	PI: 3.14,
	add: (a, b)=> a + b,
	substract: (a, b)=> a - b,
	multiply: (a, b) => a * b,
	divide: (a, b) => a / b,
};

module.exports = calculator;
//파일명 : main.js
const m = require('./math.js');

console.log(m.PI); // 3.14
console.log(m.add(2, 4)); // 6
console.log(m.subtract(2, 4)); // -2
console.log(m.multiply(2, 4)); // 8
console.log(m.divide(2, 4)); // 0.5

똑같이 node main.js 명령어를 통해 main.js를 실행해보면 옆의 주석과 같이 결과과 출력 된다.


모듈의 종류


모듈은 크게 2가지 종류로 나뉜다.

1) 위의 예시인 math.js 파일처럼 ‘내가 직접 만든 모듈’

2) 이미 만들어져 있는 모듈(코어 모듈 / 서드파티 모듈)

2)-1. 코어 모듈

: node.js 가 자체적으로 제공하는 모듈이다. 그래서 따로 npm이나 yarn으로 설치 하지 않아도 사용이 가능하다. 아래의 공식문서에서 코어모듈 종류 확인이 가능하다.

2)-2. 서드파티 모듈

: 개발자들이 자신이 개발한 모듈을 인터넷에 오픈 소스로 공개해서 다른 사람들이 자신의 로컬환경에서 설치해서 사용이 가능한 모듈이다.

require 함수로 똑같이 사용이 가능하지만 사용전에 npm이나 yarn으로 설치 해주어야 한다.

서드파티 모듈을 처음으로 설치하고 나면 ‘package-lock.json’ 파일과 ‘node_modules’라는 디렉토리가 생성된다.

  • package-lock.json : 현재 작업 디렉토리에 어떤 서드파티 디렉토리들이 설치되었는지에 관한 정보가 담긴 파일
  • node_modules : 서드파티 모듈들이 실제로 설치되어 있는 디렉토리
  • dependencies : package-lock.json 파일의 내용 중 현재 작업 디렉토리 안에 설치된 서드파티 모듈들의 정보가 담겨있는 필드
profile
성장하는 개발자

0개의 댓글