본문 바로가기
Node.js

[Node.js] REPL, Module, 내장 객체_1

by 개발도사(진) 2023. 2. 3.

*** 공부한 내용을 메모하는 페이지입니다. 틀린 정보가 있을 수 있습니다! ***

REPL

Read, Eval, Print, Loop. 읽고 해석하고 출력하는 것을 종료 시까지 계속 반복한다.

(vscode 기준 Ctrl+`) 터미널 창을 열어서 node를 입력하면 REPL을 실행하고 자바스크립트 코드를 입력할 수 있는데,

이와 같이, 내 입력을 읽고 해석하고 출력한 후, 커서가 떠서 다시 나의 다음 입력을 기다리는 것을 볼 수 있다. 한 두 줄의 코드를 테스트할 경우 사용하기 좋다.

 

본격적인 코드를 작성할 때는 .js 파일로 만들어 저장한 후, 콘솔 창에서

node [경로/파일명]

을 이용하여 실행할 수 있다.(.js 생략 가능)

 

모듈화

모듈 : 특정 기능을 하는 함수, 변수들의 집합. 보통 파일 하나가 모듈 하나가 된다.

 

모듈을 만들 때는 module.exports를 사용하고, 모듈을 불러올 때는 require(경로)를 사용한다. 

 

여러 파일에 걸쳐 재사용되는 함수, 변수 등은 이렇게 모듈화해서 반복해서 사용한다.

 

ES2015의 도입으로 자바스크립트도 자체 모듈 시스템 문법이 생겼는데, 기존 Node의 모듈 시스템과의 차이를 이해하고 넘어가야 한다.

//기존 Node의 module 시스템
const module = require('./module');
//ES2015
import module from'./module';

//기존 Node의 module 시스템
module.exports = functionNameToExport;
//ES2015
export default functionNameToExport;

Node에서 ES2015의 모듈을 사용하려면 1. 버전이 9이상이어야 하고 2. 확장자를 mjs로 지정해야 하고 3. 실행 시 node --experimental-modules [fileName]으로 실행시켜야 한다.

 

Node 내장 객체

따로 설치하지 않아도 바로 사용할 수 있음. require, module 객체도 따로 선언하지 않았지만 Node 내장 객체이기 때문에 바로 사용 가능하다.

 

1. global

 전역 객체. 모든 파일에서 접근 가능하며 생략 가능하다. (ex. global.console = console)

 전역 객체이기 때문에 다른 파일 간 내용을 공유할 때 사용할 수 있다. 

 다만, 프로그램 규모가 커지면 커질수록 사용을 자제해야 한다.(어떤 파일에서 global 객체에 어떤 값을 대입했는지 찾기가 난해해지므로)

 

2.console

디버깅을 위해 사용.

console.time(label) console.timeEnd(label)까지의 시간 측정. 같은 레이블을 가진 time-timeEnd가 한 쌍임.
console.error(errerMessage) 에러 메시지 콘솔에 표시
console.dir(object,option) 객체를 콘솔에 표시. 
color option은 true일 경우 콘솔에 색을 입혀 줌
depth option은 객체 내부의 객체를 몇 단계까지 보여줄지 결정.(default = 2)
console.trace(label) 에러 위치 추적.

3. Timer

setTimeout(callback, millisec) millisec후에 callback 함수 실행
setInterval(callback, millisec) millisec마다 callback 함수 반복 실행
setImmediate(callback) 즉시 실행
*각각 clear+Timeout/Interval/Immediate(id)로 취소

참고도서: Node.js 교과서(조현영 저, 길벗출판사)

'Node.js' 카테고리의 다른 글

[Node.js] 내장 객체 _ exports,  (0) 2023.02.07
[Node.js] Server, Client  (0) 2023.02.06
[Node.js] 기본_1  (0) 2023.02.01