Node.js 교과서 3장을 공부하고
⚠️ 본 포스팅은 매주 Node.js를 공부하고, 동아리 스터디원들과 함께 스터디한 내용을 정리하는 곳입니다.
⚠️ 모든 내용을 기록하려고 하기 보다는 함축하고 필요한 내용만 작성하고 있습니다.
https://github.com/gilbutITbook/080229
모듈로 만들기
- var.js
exports.odd = '홀수입니다';
exports.even = '짝수입니다';
- func.js
const { odd, even } = require('./var');
function checkOddOrEven(num) {
if (num % 2) { // 홀수면
return odd;
}
return even;
}
module.exports = checkOddOrEven;
- 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 모듈 자유자제로 사용 가능
아래와 같이 자체 모듈 시스템 제공
- func.mjs
import { odd, even } from './var';
function checkOddOrEven(num) {
if (num % 2) { // 홀수면
return odd;
}
return even;
}
export default checkOddOrEven;
global
- 브라우저의 window 객체와 같은 전역 객체이며, node 에는 window가 없으므로 window 의 역할을 함.
- global 객체에는 매우 많은 속성이 존재
console
보통 console 객체는 디버깅을 위해 사용하며, 노드에서는 console 이 global 객체 안에 들어있으며, 브라우저에서의 console과 거의 비슷함
-
console.time(레이블) : console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd 사이의 시간을 측정
-
console.log(내용) : 평범한 로그를 콘솔에 표시
-
console.error(에러내용) : 에러를 콘솔에 표시
-
console.table(배열) : 배열의 요소로 객체 리터럴을 넣으면 객체의 속성들이 테이블 형식으로 표현
-
console.dir(객체, 옵션) : 객체를 콘솔에 표시할 때 사용
-
console.trace(레이블) : 에러가 어디서 발생했는지 추적할 수 있음
타이머
타이머 기능을 제공하는 함수
-
setTimeout(콜백 함수, 밀리초) : 주어진 밀리초(1,000분의 1초)이후에 콜백 함수를 실행
-
setInterval(콜백 함수, 밀리초) : 주어진 밀리초마다 콜백 함수를 반복 실행
-
setImmediate(콜백 함수) : 콜백 함수를 즉시 실행
아이디를 사용하여 타이머를 취소 가능
- clearTimeout(아이디) : setTimeout 을 취소
- clearInterval(아이디) : setInterval 을 취소
- clearImmediate(아이디) : setImmediate 를 취소
filename, dirname
__filename, __dirname 이라는 키워드로 경로에 대한 정보를 제공한다.
module, exports, require
-
module 객체 말고 exports 객체로도 모듈을 만들기가 가능. module.exports 와 exports 가 같은 객체를 참조하기 때문에 두개가 동일함.
-
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
단방향: 복호화 할 수 없는 암호화 방식
-
createHash(알고리즘) : 사용할 해시 알고리즘을 넣어줌(md5, sh1, sha256, sha512)
-
update(문자열) : 변환할 문자열을 넣어줌
-
digest(인코딩) : base64, hex, latin1 등 결과물로 변환된 문자열을 반환함
양방향:
- 암호화된 문자열을 복호화 할 수 있음(키를 사용)