노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와는 다르다.
모듈이란?
- 특정한 기능을 하는 함수나 변수들의 집합
노드에서는 두 가지 형식의 모듈을 사용함
1. CommonJS 모듈
2. ECMAScript 모듈
CommonJS 모듈 알아보기
1. 모듈이 될 파일과 모듈을 불러와서 사용할 파일이 필요함
var.js
junc.js
index.js
같은 폴더에 만들기.
var.js
const odd = 'CJS 홀수입니다.'
const even = 'CJS 짝수입니다.'
module.exports = { // 이 코드로 모듈로 만들어서 보내고 쓸수 있는듯
odd,
even
}
module.exports 에 변수들을 담은 객체를 대입함 -> 이제 이 파일은 모듈로서 가능
이제 var.js 를 참조하는 func.js 를 작성
func.js
const {odd, even} = require('./var');
//var.js 의 module.exports 보기
function checkOddOrEven(num){
if(num % 2) { //홀수이면
//JavaScript에서는 0을 거짓으로 처리하며, 0이 아닌 값은 참으로 처리합니다.
return odd;
}
return even;
}
module.exports = checkOddOrEven;
require 함수 안에 불러올 모듈의 경로를 적어준다.
const {odd, even} 은 구조 분해 할당 문법이다.
마지막으로 index.js 작성
index.js
const {odd, even} = require('./var');
const checkNumber = require('./func');
function checkStringOddOrEven(str){
if(str.length % 2) { //홀수이면
return odd;
}
return even;
}
console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));
index.js 는 var.js와 func.js를 모두 참조한다.
모듈로부터 값을 불러올 때 변수 이름을 다르게 지정할 수 있다. func.js의 checkOddOrEven이 checkNumber라는 이름으로 사용 되고 있다.
지금까지 모듈을 만들 때 module.exports 만 사용했는데, module 객체 말고 exports 객체로도 모듈을 만들 수 있다.
앞의 var.js 를 아래와 같이 수정하여도 index.js 에서 동일하게 불러올 수 있다.
// const odd = 'CJS 홀수입니다.'
// const even = 'CJS 짝수입니다.'
// module.exports = { // 이 코드로 모듈로 만들어서 보내고 쓸수 있는듯
// odd,
// even
// }
exports.odd = 'CJS 홀수입니다.'
exports.even = 'CJS 짝수입니다.'
module.exports로 한 번에 대입하는 대신, 각각의 변수를 exports 객체에 하나씩 넣었다.
module.exports 와 exports 는 같은 객체를 참조하기 때문에 동일하게 동작한다.
실제로 console.log(module.exports === exports) 를 하면 true 가 나옴.
'NodeJS' 카테고리의 다른 글
[NodeJS] http - 요청과 응답 (0) | 2023.06.30 |
---|---|
[NodeJS] 자주 발생하는 에러들 (0) | 2023.06.29 |
[NodeJS] 예외 처리하기 (0) | 2023.06.29 |
[NodeJS] REPL / JS파일 실행하기 (0) | 2023.06.24 |
[Node.JS] 기초 개념 (0) | 2023.06.04 |