포스트

노드 학습 2일차

REPL

사용자가 입력한 코드를 실행하고 출력해주는 환경입니다. NodeJS 말고도 다른 언어에서도 이를 지원하고 있습니다.
다음의 앞 글자를 딴 약자 입니다.

  • Read
  • Evaluate
  • Print
  • 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 기준으로는 exportimport 를 사용하지만 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!'));

위 환경에서 index.js 를 실행시킨 결과입니다.

여기서는 자바스크립트의 코드를 모듈화 하여 사용하는 편리성, CommonJS 의 모듈화 코드를 알아봤습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.