본 문서는 2022년 1월 19일 에 초안 작성되었습니다.
Node 시리즈 Node.js 포스트 중 👀 Node 내장 모듈 의 부속 게시물입니다.
위 포스트에서 간단하게 언급한 각 Node 내장 모듈에 대한 세부 기록물입니다.
Vanilla JS 는 운영체제의 정보를 가져올 수 없으나,
Node JS 는 운영체제의 정보를 가져올 수 있다.
import * as os from "os";
const os=require("os");
os 모듈은 다음과 같은 경우에 사용할 수 있을 것 같습니다.
Node JS 는 운영체제 별 폴더 경로에 대응할 수 있습니다.
import * as path from "path";
const path=require("path");
폴더 파일 경로는 크게 두 종류가 있습니다.
해당 모듈은 너무나 많은 함수를 가지고 있기에, 별도로 언급하지 않겠습니다.
인터넷 주소를 쉽게 조작하도록 도와주는 모듈입니다
import * as url from "url";
const url=require("url");
Node 의 Url 처리도 크게 두 가지 방식이 있습니다.
하지만,
위 내용에 대한 이론적인 접근이 아니라
실제로도 중요하게 사용할 줄 알아야 하는 지는 모르겠습니다.
아래에 이론만 간단하게 정리하고 넘어가겠습니다.
위 href 가 WHATWG url 방식이며, 아래 href 가 구 Node url 방식입니다.
url 모듈에서 구 Node url 을 사용할 때,
search 기능을 더 쉽게 사용하기 위한 모듈입니다.
import * as querystring from "querystring";
const querystring=reqruie("querystring");
Node 에서 기본으로 제공하는 암호화 모듈입니다.
암호화에는 크게 단방향 / 양방향 으로 나뉘며 주로 해싱 기법 을 이용하여 암호화를 달성합니다.
해싱 기법에 대한 이론적인 부분은 Dev 알고리즘 시리즈 중 Hash Table 에서 공부하였습니다.
import * as crypto from "crypto";
const crypto=require("crpyto");
웹 서비스에서 가장 많이 다룰 해시는 단방향 해시 에 해당합니다.
그 때, 보안의 강도를 결정 짓는 것은 해싱 함수의 강도 를 의미합니다.
이러한 부분에 대한 내용은 깊이가 범위를 벗어난다고 생각하므로,
자세히 언급하지 않겠습니다.
현재 많이 사용되는 (단방향) 암호화 모듈은 다음과 같습니다.
그러나 어떠한 경우, 양방향 대칭형 암호화 가 필요합니다.
이 때, crypto 모듈을 사용할 수 있는데, 이를 제대로 사용하려면 암호학을 공부해야 합니다.
Node 의 각종 편의와 관련된 함수들이 모여있습니다.
하지만, 종종 @deprecated : 중요도가 떨어지거나 사용빈도가 떨어져서 사라지거나 대체될 것이다 라는 문구가 붙기 때문에, 사용할 것이라면 지속적인 관리가 필요한 부분이다.
최초 문서에서 알아보았듯,
Node 는 기본적으로 싱글 스레드입니다.
하지만 싱글 스레드로의 한계를 맞이하였고 그 해답을 찾고자 한다면 다음의 2가지가 있습니다.
여기서 멀티 스레드에 해당하는 기능을 담당하고 있는 것이 바로 worker_threa 파트입니다.
해당 파트는 제가 멀티 스레드에 대한 공부를 진행하지 않았고 당장 계획에 없으므로 언급만 하였습니다.
Node 에서 다른 언어를 사용하기 위한 모듈입니다.
Nomad Corders 의 Wetube 클론코딩 을 들었을 때,
ffmpeg 라는 프로그램을 이용하여 클라이언트가 녹화한 webm 을 mp4 로 인코딩하는 것을 했었습니다.
이 경우에도 ffmpeg(다른 언어로 만들어진 프로그램) 을 Node 하위 프로세스에서 실행했었습니다.
이 부분이 마치 WEB ASSEMBLY 와 유사하다고 느껴져서,
해당 부분은 재사용을 하게 될 시기에 다시 공부를 해봐야겠다고 생각합니다.
Node 의 파일 시스템 접근 모듈 입니다.
Nomad Corders 의 Wetube 클론코딩 과 Life Folio 프로젝트 에서 파일 업로드를 위해서 multer 모듈 을 사용하였는데, 이러한 기능 구현을 직접 하기 위한 뼈대가 되는 기능이라고 이해하고 있습니다.
차후, 해당 관련 부분을 사용하게 될 이유가 있다면 자세히 공부하도록 하겠습니다.
Node 에서의 Buffer 와 Stream 에 대한 내용입니다.
여기서의 Buffer, Stream 은 위에서 언급한 fs 모듈과 관련되어 있는 이론입니다.
위 에외에도 Node 에서는 수많은 모듈이 있고 생겨나고 사라지고 있습니다.
또한 대부분 섬세한 모듈들의 경우 극히 세부적인 내용과 관련되어 있습니다.
이러한 부분은 이론적인 부분의 공부가 필요하고 따라서 기록만 하고 넘어가도록 하겠습니다.