[Node.js] 내장 객체

민수·2022년 12월 10일
0
post-thumbnail

Node.js 내장 객체

브라우저의 window 객체

Node.js의 global 객체

브라우저에 window 객체가 있다면 Node.js에는 global 객체가 존재한다.
브라우저의 window 객체처럼 Node.js에서도 global 객체안에 자주 사용하는 것들을 속성에 미리 만들어 놓았다.
브라우저에서 window는 생략이 가능하듯이 global도 생략이 가능하다.

전역 객체인 global 객체를 이용해 파일 간에 데이터를 공유할 때 사용하기도 한다.
globalA.js

module.exports = () => global.share;

globalB.js

const test = require("./globalA");

global.share = "공유됨";
console.log(global);
console.log(test());

하지만 이 방식은 나중에 규모가 커지게 되면 어떤 파일에서 global 객체에 값을 대입했는지 찾기 힘들어져서 유지 보수에 어려움을 줄 수 있기 때문에 권장하는 방식이 아니다.
데이터를 공유하고 싶다면 모듈로 만들어서 사용하도록 하자.

자주 사용하는 내장 객체 속성

console

디버깅을 위해 사용하는 속성이다.

  • console.time(label) : console.timeEnd(label)과 쌍을 이뤄 같은 label을 가진 time과 timeEnd 사이의 시간을 측정한다.
  • console.log : 로그를 출력한다.
  • console.table(arr||obj) : 배열이나 객체를 테이블 형식으로 표현 해준다.
  • console.dir(obj, [option]) : 객체를 콘솔에 자세하게 출력할 때 사용한다. 옵션에 color를 true로 하면 콘솔에 색이 추가되어 보기 편해진다. depth는 기본값은 2이고 객체 안의 객체를 몇 단계까지 보여줄지를 결정한다.
  • console.timeEnd(label) : console.time과 쌍을 이뤄 시간을 측정한다.
const cars = ['R1T', 'R1S']
const car = { name: "R1T", brand: "Rivian" };

console.time("시간 측정"); 
console.log("로그 출력");
console.table(cars);
console.table(car);
console.dir(car, { colors: true, depth: 1 });
console.timeEnd("시간 측정"); 

module, exports


모듈의 exports 객체를 이용해 다른 파일에 데이터를 공유한다.
module.exportsexports 객체는 서로 같은 곳을 바라보고 있기 때문에 같은 객체이다.
exports 사용시 객체의 참조 관계가 깨지지 않도록 exports.속성명 = 값 형태로 사용해야 한다.

console.log(module.exports === exports); // true
const plus = (a, b) => a + b;

exports.plus = plus;
const plus = (a, b) => a + b;

module.exports = plus;

require

모듈을 불러올 때 사용한다.
require는 함수이고 함수는 객체이므로 몇 가지 속성을 가지고 있다.

require.main, require.cache

  • require.main : node로 직접 실행한 파일이라면 module과 동일하다. 현재 실행중인 모듈이 메인 모듈인지 확인 할 수 있다.
  • require.cache : 한 번 require한 파일은 require.cache에 저장되어 다음 번에 require를 할 때는 새로 불러오지 않고 require.cache를 재사용한다.

color.js

exports.black = "검정";
exports.white = "하양";

require.js

console.log("require가 가장 위에 오지 않아도 됩니다.");

module.exports = 'require에 있는 exports';

require('./color');

console.log('require.main');
console.log(require.main);

console.log("module");
console.log(module);

console.log("require.main === module");
console.log(require.main === module);
console.log(require.main.filename);

console.log("require.cache");
console.log(require.cache);

process

파일을 실행한 프로세스의 정보를 담고 있는 객체이다.
process.js

console.log(process); // 파일을 실행한 프로세스의 정보

process.env는 서버나 데이터베이스의 비밀번호와 같은 중요한 정보를 코드에 직접 저장하고 싶지 않을때 사용한다.
운영체제의 환경 변수를 불러와서 사옹하거나 직접 지정해 줄 수도 있다.

console.log(process.env); // 시스템 변수, OS가 가지고 있는 변수
console.log(process.pid); // 실행한 프로세스의 id
console.log(process.arch); // 실행한 아키텍처 (arm64, x64 등)
console.log(process.platform); // 실행한 운영 체제 (linux, win32 등)

__dirname, __filename

현재 파일의 경로나 파일의 이름을 알고 싶을 때 사용한다.
하지만 윈도우와 리눅스는 경로를 표시하는 방식이 다르므로 이를 해결해주는 path모듈을 함께 사용한다. (Windows : \, Linux : /)
dir_file_name.js

console.log(__filename); // 실행 파일의 절대 경로를 포함한 파일 이름
console.log(__dirname); // 실행 파일의 경로

참고

Node.js 교과서 - 길벗
Node.js v18.12.1 documentation - globals

0개의 댓글