본문 바로가기

Node.js

node

모듈
노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와는 다르다.
모듈이란 특정한 기능을 하는 함수나 변수들의 집합이다.
모듈을 만들 때는 모듈이 될 파일과 모듈을 불러와서 사용할 파일이 필요하다.

[노드 내장 객체]
process.env
시스템의 환경변수.
process.env는 서비스의 중요한 키를 저장하는 공간으로도 사용된다 - 서버나 데이터베이스의 비밀번호, 각종 API 키
const secretId = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;
process.env에 키 값을 넣은 방법은 운영체제마다 상이하지만, dotenv를 사용하여 한 번에 모든 운영체제에 동일하게 넣을 수 있는 방법이 있다.

process.nextTick(콜백)
이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선으로 처리하도록 만든다.
process.nextTick은 setImmediate나 setTimeout보다 먼저 실행된다.
+ resolve된 Promise도 nextTick처럼 다른 콜백들보다 우선시된다.
=> process.nextTick과 Promise를 마이크로태스크(microtask)라고 따로 구분지어 부른다.


* 마이크로태스크의 재귀 호출
process.nextTick으로 받은 콜백 함수나 resolve된 Promise는 다른 이벤트 루프에서 대기하는 콜백 함수보다도 먼저 실행된다. 따라서 이런 Microtask를 재귀 호출하게 되면 이벤트 루프는 다른 콜백 함수보다 Microtask를 우선하여 처리하므로 콜백 함수들이 실행되지 않을 수도 있다.

[노드 내장 모듈]
os
운영체제 정보를 제공하는 모듈
cf. 코어 개수 확인 - os.cpus().length를 하면 코어 개수가 나온다. 노드는 싱글 스레드라 코어가 몇 개이든 대부분의 경우 코어를 하나밖에 사용하지 않는다. 하지만 cluster 모듈을 사용하는 경우 코어 개수에 맞춰서 프로세스를 늘릴 수 있다.
cluster: 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈

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


url
인터넷 주소를 쉽게 조작하도록 도와주는 모듈.
두 가지 방식의 url 처리
1. 노드 버전 7에서 추가된 WHATWG(웹 표준을 정하는 단체) 방식의 url
2. 예전부터 노드에서 사용하던 방식의 url

url 모듈 안에 URL 생성자가 있다. 이 생성자에 주소를 넣어 객체로 만들면 주소가 부분별로 정리된다 => WHATWG의 url.
WHATWG에만 있는 username, password, origin, searchParams 속성이 존재한다.
url.parse(주소) : 주소를 분해한다. 기존 노드 방식으로, WHATWG 방식과 비교하면 username과 password 대신 auth 속성이 있고, searchParams 대신 query가 있다.
url.format(객체) : WHATWG 방식의 url과 기존 노드의 url 모구 사용할 수 있다. 분해되었던 url 객체를 다시 원래 상태로 조립한다.

노드의 url 형식을 꼭 사용해야 하는 경우: 주소가 host 부분 없이 pathname 부분만 오는 경우(WHATWG 방식은 이 주소를 처리할 수 없음)
WHATWG 방식은 search 부분을 searchParams라는 특수한 객체로 반환하므로 유용하다.

querystring
WHAT 방식의 url 대신 기존 노드의 url을 사용할 때 search 부분을 사용하기 쉽게 객체로 만드는 모듈.

crypto
다양한 방식의 암호화를 도와주는 모듈

1. 단방향 암호화
복호화할 수 없는 암호화 방식
-> 한 번 암호화하면 원래 문자열을 찾을 수 없다.
원래 비밀번호는 어디에도 저장되지 않고 암호화된 문자열로만 비교하는 것이다.
비밀번호는 보통 단방향 암호화를 사용해서 암호화한다.
단방향 암호화 알고리즘은 주로 해시 기법(어떠한 문자열을 고정된 길이의 다른 문자열로 바꿔버리난 방식)을 사용한다.

2. 양방향 암호화

동기와 비동기: 함수가 바로 return되는지 여부
블로킹과 논블로킹: 백그라운드 작업 완료 여부
노드에서는 동기-블로킹 방식과 비동기-논블로킹 방식이 대부분이다.

'Node.js' 카테고리의 다른 글

ES2015+  (0) 2022.04.13