ES 모듈
다이내믹 임포트, top level await
__filename
, __dirname
__filename
: 현재 파일 경로__dirname
: 현재 폴더(디렉터리) 경로global
global 속성 공유
console 객체
타이머 메서드
set 메서드에 clear 메서드가 대응됨
setTimeout(콜백, 0)보다 setImmediate 권장
process
process.env
process.nextTick(콜백)
마이크로태스크
process.exit
OS
os 모듈 메서드
path
path 모듈 메서드
path.sep: 경로의 구분자입니다. Windows는 \, POSIX는 /입니다.
path.delimiter: 환경 변수의 구분자입니다. process.env.PATH를 입력하면 여러 개의 경로가 이 구분자로 구분되어 있습니다. Windows는 세미콜론(;)이고 POSIX는 콜론(:)입니다.
path.dirname(경로): 파일이 위치한 폴더 경로를 보여줍니다.
path.extname(경로): 파일의 확장자를 보여줍니다.
path.basename(경로, 확장자): 파일의 이름(확장자 포함)을 보여줍니다. 파일의 이름만 표시하고 싶다면 basename의 두 번째 인자로 파일의 확장자를 넣어주면 됩니다.
path.parse(경로): 파일 경로를 root, dir, base, ext, name으로 분리합니다.
path.format(객체): path.parse()한 객체를 파일 경로로 합칩니다.
path.normalize(경로): /나 \를 실수로 여러 번 사용했거나 혼용했을 때 정상적인 경로로 변환해줍니다.
path.isAbsolute(경로): 파일의 경로가 절대경로인지 상대경로인지 true나 false로 알려줍니다.
path.relative(기준경로, 비교경로): 경로를 두 개 넣으면 첫 번째 경로에서 두 번째 경로로 가는 방법을 알려줍니다.
path.join(경로, .. .): 여러 인자를 넣으면 하나의 경로로 합쳐줍니다. 상대경로인 ..(부모 디렉터리)과 .(현 위치)도 알아서 처리해줍니다.
path.resolve(경로, .. .): path.join()과 비슷하지만 차이가 있습니다. 차이점은 다음에 나오는 Note에서 설명합니다.
인터넷 주소를 쉽게 조작하도록 도와주는 모듈
url 처리에 크게 두 가지 방식이 있음(기존 노드 방식 vs WHATWG 방식)
요즘은 WHATWG 방식만 사용함
WHATWG 방식 주소 체계는 다음과 같음
searchParams
dns
단방향 암호화(crypto)
Hash 사용하기(sha512)
pbkdf2
컴퓨터의 발달로 기존 암호화 알고리즘이 위협받고 있음
sha512가 취약해지면 sha3으로 넘어가야함
현재는 pbkdf2나, bcrypt, scrypt 알고리즘으로 비밀번호를 암호화
Node는 pbkdf2와 scrypt 지원
컴퓨터의 발달로 기존 암호화 알고리즘이 위협받고 있음
crypto.randomBytes로 64바이트 문자열 생성 -> salt 역할
pbkdf2 인수로 순서대로 비밀번호, salt, 반복 횟수, 출력 바이트, 알고리즘
반복 횟수를 조정해 암호화하는 데 1초 정도 걸리게 맞추는 것이 권장됨
양방향 암호화
util
(__filename)
을 워커 스레드에서 실행시킴여러 워커스레드 사용하기
child_process
동기 메서드와 비동기 메서드
노드는 대부분의 내장 모듈 메서드를 비동기 방식으로 처리
비동기는 코드의 순서와 실행 순서가 일치하지 않는 것을 의미
일부는 동기 방식으로 사용 가능
우측 코드 콘솔 예측해보기
버퍼와 스트림 이해하기
버퍼: 일정한 크기로 모아두는 데이터
스트림: 데이터의 흐름
try catch문