nodejs 교과서 3장

신범철·2021년 9월 16일
0

21-2nodejs수업

목록 보기
1/2

노드 기능 알아보기

REPL

자바스크립트는 스크립트 언어라서 즉석에서 코드를 실행할 수 있음

  • repl이라는 콘솔 제공
  • r(read), e(evluate), p(print), l(loop)
  • 윈도에서는 명령 프롬프트, 맥이나 리눅스에서는 node 입력
  • 입력한 값의 결과값이 바로 출력됨

JS파일 실행하기

  • node [자바스크립트 파일경로]로 실행

모듈

노드는 자바스크립트 코드를 모듈로 만들 수 있음
모듈: 특정한 기능을 하는 함수나 변수들의 집합
모듈로 만들면 여러 프로그램에서 재사용 가능

모듈 -> 패키지 -> 라이브러리

모듈 만들어보기

  • 파일 끝에 module.exports로 모듈로 만들값을 지정
  • 다른 파일에서 require(파일경로)로 그 모듈의 내용 가져올 수 있음

ES2015 모듈

자바스크립트 자체 모듈 시스템 문법이 생김

  • 아직 노드에서의 지원은 완벽하지ㅡ 않음. mjs 확장자를 사용해야함
  • 크게는 require 대신 import, module.exports 대신 export default를 사용

노드 내장 객체

global

: 노드의 전역 객체

  • 브라우저의 window같은 역할

  • 모든파일에서 접근 가능

  • window처럼 생략도 가능(console, require도 global의 속성)

  • global 속성에 값을 대입하면 다른 파일에서도 사용가능

console 객체

브라우저의 console 객체와 매우 유사

  • console.time, console.timeEnd : 시간 로깅(time부터 timeEnd까지의 시간 측정),인자값이 같아야함
  • console.error: 에러 로깅
  • console.log:평범한 로그
  • console.dir : 객체 로깅
  • console.trace : 호출스택 로깅

실행 결과

타이머 메서드

set메서드에 clear 메서드가 대응됨

  • set 메서드의 리턴값(아이디)을 clear메서드에 넣어 취소

  • setTimeout(콜백함수, 밀리초):주어진 밀리초 이후에 콜백함수를 실행

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

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

  • cleatTimeout(아이디): setTimeout을 취소

  • cleatInterbal(아이디): setInterbal을 취소

  • cleatImmediate(아이디): setImmediate을 취소

타이머 메서드들은 메서드가 선언된 시점에서 바로 시작되어 백그라운드에 올라감!!!!

filename, dirname

module, exports

module.exports 외에도 exports로 모듈을 만들 수 있음

  • 모듈 예제의 var.js를 다음과 같이 바꾼 후 실행
  • 동일하게 동작
  • 동일한 이유는 module.exports와 exports가 참조 관계이기 때문
  • exports에 객체의 속성이 아닌 다른 값을 대입하면 참조 관계가 깨짐

this

노드에서 this를 사용할 때 주의점이 있음

  • 최상위 스코프의 this는 module.export를 가르킴
  • 그 외에는 브라우저의 자바스크립트와 동일
  • 함수 선언문 내부의 this는 global(전역) 객체를 가르킴

require의 특성

  • require가 제일 위에 올 필요 x
  • require.cache에 한 번 require한 모듈에 대한 캐쉬 정보가 들어있음
  • require.main은 노드 실행시 첫 모듈을 가리킴

순환참조

dep1이 dep2를 require하고 dep2가 dep1를 require하면
dep1의 module.exports가 함수가 아니라 빈 객체가 됨(무한 반복을 막기위해)

process

현재 실행중인 노드 프로세스에 대한 정보를 담고 있음

process.env

시스템 환경 변수들이 들어있는 객체

  • 비밀키(데이터베이스 비밀번호, 서드파티 앱키 등)을 보관하는 용도로도 쓰임

process.nextTick(콜백)

이벤트 루프가 다른 콜백 함수들 보다 nextTick의 콜백 함수가 우선적으로 처리

  • 너무 남용하면 다른 콜백 함수들 실행이 늦어짐
  • 비슷한 경우로 promise가 있음(nexttick처럼 우선순위가 높음)
  • 아래 예제에서 setImmediate, setTimeout보다 promise, nextTick이 먼저 실행됨

process.exit(코드)

현재의 프로세스를 멈춤

  • 코드가 없거나 0이면 정상 종료
  • 그 외 비정상 종료

OS

운영체제의 정보를 담고 있음
모듈은 require로 가져옴(내장 모듈이기때문에 이름만 적어주면됨)

PATH

폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈

단방향 암호화(crypto)

암호화는 가능하지만 복호화는 불가능

  • 암호화 : 평문을 암호로
  • 복호화 : 암호를 평문으로

단방향 암호화의 대표주자는 해시 기법

  • 문자열을 고정된 길이의 다른 문자열로 바꿈

HASH

pbkdf2

강화된 암호화 알고리즘

profile
https://github.com/beombu

0개의 댓글