Node.js 교과서 3장을 공부하고

⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다.

⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다.

https://github.com/gilbutITbook/080229

모듈로 만들기

  1. var.js
exports.odd = '홀수입니다';
exports.even = '짝수입니다';
  1. func.js
const { odd, even } = require('./var');

function checkOddOrEven(num) {
  if (num % 2) { // 홀수면
    return odd;
  }
  return even;
}

module.exports = checkOddOrEven;
  1. index.js
const { odd, even } = require('./var');
const checkNumber = require('./func');

function checkStringOddOrEven(str) {
  if (str.length % 2) { // 홀수면
    return odd;
  }
  return even;
}

console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));

이러한 형태로 func에서 var 모듈을 사용하고, index에서 func, var 모듈 자유자제로 사용 가능

아래와 같이 자체 모듈 시스템 제공

  1. func.mjs
import { odd, even } from './var';

function checkOddOrEven(num) {
  if (num % 2) { // 홀수면
    return odd;
  }
  return even;
}

export default checkOddOrEven;

global

  1. 브라우저의 window 객체와 같은 전역 객체이며, node 에는 window가 없으므로 window 의 역할을 함.
  2. global 객체에는 매우 많은 속성이 존재

console

보통 console 객체는 디버깅을 위해 사용하며, 노드에서는 console 이 global 객체 안에 들어있으며, 브라우저에서의 console과 거의 비슷함

  1. console.time(레이블) : console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd 사이의 시간을 측정

  2. console.log(내용) : 평범한 로그를 콘솔에 표시

  3. console.error(에러내용) : 에러를 콘솔에 표시

  4. console.table(배열) : 배열의 요소로 객체 리터럴을 넣으면 객체의 속성들이 테이블 형식으로 표현

  5. console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용

  6. console.trace(레이블) : 에러가 어디서 발생했는지 추적할 수 있음

타이머

타이머 기능을 제공하는 함수

  1. setTimeout(콜백 함수, 밀리초) : 주어진 밀리초(1,000분의 1초)이후에 콜백 함수를 실행

  2. setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행

  3. setImmediate(콜백 함수) : 콜백 함수를 즉시 실행

아이디를 사용하여 타이머를 취소 가능

  1. clearTimeout(아이디) : setTimeout 을 취소
  2. clearInterval(아이디) : setInterval 을 취소
  3. clearImmediate(아이디) : setImmediate 를 취소

filename, dirname

__filename, __dirname 이라는 키워드로 경로에 대한 정보를 제공한다.

module, exports, require

  1. module 객체 말고 exports 객체로도 모듈을 만들기가 가능. module.exports 와 exports 가 같은 객체를 참조하기 때문에 두개가 동일함.

  2. exports와 module.exports에는 참조 관계가 있으므로 한 모듈에 이 두가지를 동시에 사용하는 것는 좋지않다.

OS

const os = require('os');
console.log('==운영체제 정보==');
console.log('os.arch():', os.arch());                   // process.arch와 동일
console.log('os.platform():', os.platform());           // process.platform과 동일
console.log('os.type():', os.type());                   // 운영체제의 종류
console.log('os.uptime():', os.uptime());               // 운영체제 부팅 이후 흐른 시간(초)
console.log('os.hostname():', os.hostname());           // 컴퓨터의 이름
console.log('os.release()', os.release());              // 운영체제의 버전

console.log('==경로==');
console.log('os.homedir():', os.homedir());             // 홈 디렉토리 경로
console.log('os.tmpdir():', os.tmpdir());               // 임시 파일 저장 경로

console.log('==cpu 정보==');
console.log('os.cpus():', os.cpus());                   // 컴퓨터의 코어 정보
console.log('os.cpus().length:', os.cpus().length);     // 코어의 개수

console.log('==메모리 정보==');
console.log('os.freemem()', os.freemem());              // 사용가능한 메모리(RAM)
console.log('os.totalmem():', os.totalmem());           // 전체 메모리(RAM)

crypto

단방향: 복호화 할 수 없는 암호화 방식

  1. createHash(알고리즘) : 사용할 해시 알고리즘을 넣어줌(md5, sh1, sha256, sha512)

  2. update(문자열) : 변환할 문자열을 넣어줌

  3. digest(인코딩) : base64, hex, latin1 등 결과물로 변환된 문자열을 반환함

양방향:

  1. 암호화된 문자열을 복호화 할 수 있음(키를 사용)