노드에서는 기본적인 내장 객체와 내장 모듈을 제공한다.
global
브라우저의 window와 같은 전역 객체이며, 모든 파일에서 접근할 수 있다.
global 객체 내부에는 매우 많은 속성들이 들어있으며, 내부를 보려면 REPL을 이용해야 한다.
$ node
> global
> globalThis
> globalThis === global
> global.console
노드 버전에 따라 콘솔 내용이 다를 수 있으며, global 객체 안에는 수십 가지의 속성이 담겨 있다.
그 속성 모두를 알 필요는 없고, 자주 사용하는 속성들만 알아보자.
전역 객체라는 점을 이용해 파일 간에 간단한 데이터를 공유할 때 사용하기도 한다.
module.exports = () => global.message;
const A = require('./globalA');
global.message = '안녕하세요';
console.log(A());
globalA 모듈의 함수는 global.message 값을 반환한다.
globalB.js에서는 global 객체에 속성명이 message인 값을 대입하고 globalA 모듈의 함수를 호출한다.
콘솔 결과를 보면, globalB에서 넣은 global.message 값을 globalA에서도 접근할 수 있음을 알 수 있다.
console
지금까지 사용했던 console도 노드에서는 window 대신 global 객체 안에 들어 있다.
console 객체는 보통 디버깅을 위해 사용한다.
개발 중 변수에 값이 제대로 들어 있는지 확인하기 위해 사용하기도 했고, 에러 발생 시 에러 내용을 콘솔에 표시하기 위해서도 사용하며, 코드 실행 시간을 알아보려고 할 때도 사용한다.
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
outside: {
inside: {
key: 'value',
},
},
};
console.log('전체 시간');
console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있다.');
console.log(string, number, boolean);
console.error('에러 메시지는 console.error에 담아주세요.');
console.table([{ name: '제로', birth: 1994 }, { name: 'hero', birth: 1988 }]);
console.dir(obj, { colors: false, depth: 2 });
console.dir(obj, { colors: true, depth: 1 });
console.log('시간 측정');
for (let i = 0; i < 100000; i++) {
}
console.timeEnd('시간 측정');
function b() {
console.trace('에러 위치 추적');
}
function a() {
b();
}
a();
console.timeEnd('전체 시간');
timer
타이머 기능을 제공하는 함수인 setTimeout, setInterval, setImmediate는 노드에서 window 대신 global 객체 안에 들어 있다.
setTimeout(콜백 함수, 밀리초): 주어진 밀리초 이후에 콜백 함수를 실행한다.
setInterval(콜백 함수, 밀리초): 주어진 밀리초마다 콜백 함수를 반복 실행한다.
setImmediate(콜백 함수): 콜백 함수를 즉시 실행한다.
이 타이머 할수들은 모두 아이디를 반환하며, 아이디를 사용하면 타이머를 취소할 수 있다.
clearTimeout(아이디): setTimeout을 취소한다.
clearInterval(아이디): setInterval을 취소한다.
clearImmediate(아이디): setImmediate를 취소한다.
const timeout = setTimeout(() => {
console.log('1.5초 후 실행');
}, 1500);
const interval = setInterval(() => {
console.log('1초마다 실행');
}, 1000);
const timeout2 = setTimeout(() => {
console.log('실행되지 않습니다.');
}, 3000);
setTimeout(() => {
clearTimeout(timeout2);
clearInterval(interval);
}, 2500);
타이머는 콜백 기반 API이지만 프로미스 방식을 사용할 수도 있다. 다만, 프로미스 기반 타이머는 노드 개장 객체가 아니다
지금 보는것도 나쁘지 않기 때문에 사용해보자!
import { setTimeout, setInterval } from 'timers/promises';
await setTimeout(3000);
console.log('3초 뒤 실행');
for await (const startTime of setInterval(1000, Date.now())) {
console.log('1초마다 실행', new Date(startTime));
}
프로미스 기반이므로 then 대신 await을 사용하기 위해 ES 모듈을 사용했다.
process
process 객체는 현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있다.
process 객체 안에는 다양한 속성이 있는데, 하나씩 REPL에 따라 입력해본다.
결괏값은 사용자의 컴퓨터마다 차이가 있을 수 있다.
아래 코드들을 보면서 직접 해석해보길 바란다.
console.log(process.version);
console.log(process.arch);
console.log(process.platform);
console.log(process.pid);
console.log(process.execPath);
'자바스크립트 > NodeJS' 카테고리의 다른 글
[NodeJS] 모듈 (0) | 2023.06.26 |
---|---|
[NodeJS] 노드의 내부 구조 (0) | 2023.06.25 |
노드에서는 기본적인 내장 객체와 내장 모듈을 제공한다.
global
브라우저의 window와 같은 전역 객체이며, 모든 파일에서 접근할 수 있다.
global 객체 내부에는 매우 많은 속성들이 들어있으며, 내부를 보려면 REPL을 이용해야 한다.
$ node
> global
> globalThis
> globalThis === global
> global.console
노드 버전에 따라 콘솔 내용이 다를 수 있으며, global 객체 안에는 수십 가지의 속성이 담겨 있다.
그 속성 모두를 알 필요는 없고, 자주 사용하는 속성들만 알아보자.
전역 객체라는 점을 이용해 파일 간에 간단한 데이터를 공유할 때 사용하기도 한다.
module.exports = () => global.message;
const A = require('./globalA');
global.message = '안녕하세요';
console.log(A());
globalA 모듈의 함수는 global.message 값을 반환한다.
globalB.js에서는 global 객체에 속성명이 message인 값을 대입하고 globalA 모듈의 함수를 호출한다.
콘솔 결과를 보면, globalB에서 넣은 global.message 값을 globalA에서도 접근할 수 있음을 알 수 있다.
console
지금까지 사용했던 console도 노드에서는 window 대신 global 객체 안에 들어 있다.
console 객체는 보통 디버깅을 위해 사용한다.
개발 중 변수에 값이 제대로 들어 있는지 확인하기 위해 사용하기도 했고, 에러 발생 시 에러 내용을 콘솔에 표시하기 위해서도 사용하며, 코드 실행 시간을 알아보려고 할 때도 사용한다.
const string = 'abc';
const number = 1;
const boolean = true;
const obj = {
outside: {
inside: {
key: 'value',
},
},
};
console.log('전체 시간');
console.log('평범한 로그입니다 쉼표로 구분해 여러 값을 찍을 수 있다.');
console.log(string, number, boolean);
console.error('에러 메시지는 console.error에 담아주세요.');
console.table([{ name: '제로', birth: 1994 }, { name: 'hero', birth: 1988 }]);
console.dir(obj, { colors: false, depth: 2 });
console.dir(obj, { colors: true, depth: 1 });
console.log('시간 측정');
for (let i = 0; i < 100000; i++) {
}
console.timeEnd('시간 측정');
function b() {
console.trace('에러 위치 추적');
}
function a() {
b();
}
a();
console.timeEnd('전체 시간');
timer
타이머 기능을 제공하는 함수인 setTimeout, setInterval, setImmediate는 노드에서 window 대신 global 객체 안에 들어 있다.
setTimeout(콜백 함수, 밀리초): 주어진 밀리초 이후에 콜백 함수를 실행한다.
setInterval(콜백 함수, 밀리초): 주어진 밀리초마다 콜백 함수를 반복 실행한다.
setImmediate(콜백 함수): 콜백 함수를 즉시 실행한다.
이 타이머 할수들은 모두 아이디를 반환하며, 아이디를 사용하면 타이머를 취소할 수 있다.
clearTimeout(아이디): setTimeout을 취소한다.
clearInterval(아이디): setInterval을 취소한다.
clearImmediate(아이디): setImmediate를 취소한다.
const timeout = setTimeout(() => {
console.log('1.5초 후 실행');
}, 1500);
const interval = setInterval(() => {
console.log('1초마다 실행');
}, 1000);
const timeout2 = setTimeout(() => {
console.log('실행되지 않습니다.');
}, 3000);
setTimeout(() => {
clearTimeout(timeout2);
clearInterval(interval);
}, 2500);
타이머는 콜백 기반 API이지만 프로미스 방식을 사용할 수도 있다. 다만, 프로미스 기반 타이머는 노드 개장 객체가 아니다
지금 보는것도 나쁘지 않기 때문에 사용해보자!
import { setTimeout, setInterval } from 'timers/promises';
await setTimeout(3000);
console.log('3초 뒤 실행');
for await (const startTime of setInterval(1000, Date.now())) {
console.log('1초마다 실행', new Date(startTime));
}
프로미스 기반이므로 then 대신 await을 사용하기 위해 ES 모듈을 사용했다.
process
process 객체는 현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있다.
process 객체 안에는 다양한 속성이 있는데, 하나씩 REPL에 따라 입력해본다.
결괏값은 사용자의 컴퓨터마다 차이가 있을 수 있다.
아래 코드들을 보면서 직접 해석해보길 바란다.
console.log(process.version);
console.log(process.arch);
console.log(process.platform);
console.log(process.pid);
console.log(process.execPath);
'자바스크립트 > NodeJS' 카테고리의 다른 글
[NodeJS] 모듈 (0) | 2023.06.26 |
---|---|
[NodeJS] 노드의 내부 구조 (0) | 2023.06.25 |