노드 학습 2일차
REPL
사용자가 입력한 코드를 실행하고 출력해주는 환경입니다. NodeJS 말고도 다른 언어에서도 이를 지원하고 있습니다.
다음의 앞 글자를 딴 약자 입니다.
- Read
- Evaluate
- Loop
사용 방법
CMD창에서 node
를 입력하여 진입 가능합니다.
.exit
를 입력하여 종료할 수 있습니다. 혹은 Ctrl + C
단축키로도 종료할 수 있습니다.
.exit
입니다(!) 그냥 exit
가 아니에요!
REPL에서는 반환 값이 출력이 되어서 console.log()
를 사용하면 끝에 undefined
가 나옵니다.
console.log("Hi!")
의 결과로 Hi!
가 로그에 남고 undefined
도 함께 남는 것을 확인 할 수 있습니다.
또는 자바스크립트 파일을 실행시킬 수도 있습니다.
다음의 코드를 작성한 파일을 test.js
라는 이름으로 생성해봤습니다.
1
2
3
4
5
function test(){
console.log("test");
}
test();
node {파일명}
으로 실행시킬 수 있습니다.
실행 결과입니다.
모듈 시스템 (CommonJS)
코드를 모듈화 하여 사용할 수 있습니다. ESM
기준으로는 export
와 import
를 사용하지만 ComonJS
기준으로 먼저 학습하고 넘어가기 때문에 정리합니다. 레거시 코드에서는 사용하는 부분이 많을테니 알아두면 좋을 것 입니다.
vscode에서는 CommonJS
코드를 사용하니 다음의 경고가 나오네요.
파일이 CommonJS 모듈입니다. ES 모듈로 변환될 수 있습니다.ts(80001)
그래도 일단은 무시하고 진행합니다.
자바스크립트 파일 세 개를 생성해보겠습니다.
var.js
1
2
3
const odd = "홀수";
const even = "짝수";
module.exports={odd,even}; // 키-값이 동일하면 바로 사용. 자바스크립트 문법 중 하나
func.js
1
2
3
4
5
6
7
8
9
10
11
12
13
/*
1. '.js' 확장자 생략 가능
2. 구조분해 할당 문법
*/
const {odd, even} = require('./var');
function checkOddOrEven(number){
if(number%2){
return odd;
} else {
return even;
}
}
module.exports= checkOddOrEven;
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
1. 구조분해 할당은 변수명과 가져오는 값이 동일
2. 하나만 exports 한 경우 변수명이 상이해도 무관
*/
const {odd, even} = require('./var');
const checkNum = require('./func');
function checkStringOddOrEven(str){
if(str.length % 2){
return odd;
} else {
return even;
}
}
console.log(checkNum(10));
console.log(checkStringOddOrEven('Good bye!'));
여기서는 자바스크립트의 코드를 모듈화 하여 사용하는 편리성, CommonJS
의 모듈화 코드를 알아봤습니다.