노드 공부 기록(5) - 자주 사용하는 Node.js 내장 모듈 정리
my code archive
article thumbnail
반응형
  • 노드는 자바스크립트보다 더 많은 기능을 제공함. (운영 체제 정보 접근, 클라이언트 요청 url 정보 가져오기 등등...) -> 모듈 제공
  • 노드의 모듈은 버전마다 차이가 있음.

자주 사용하는 모듈 위주로 알아보도록 한다.

🔍os

  • 운영 체제의 정보를 가져옴.
  • os.arch() : process.arch와 동일
  • os.platform() : process.platform과 동일
  • os.type() : 운영 체제 종류를 보여줌
  • os.uptime() : 운영체제 부팅 이후 흐른 시간(초)을 보여줌.
  • os.hostname() : 컴퓨터 이름을 보여줌
  • os.release() : 운영체제 버전을 보여줌.
  • os.homedir() : 홈 디렉터리 경로를 보여줌
  • os.tmpdir() : 임시 파일 저장 경로를 보여줌
  • os.cpus() : 컴퓨터 코어 정보를 보여줌
  • os.freemem() : 사용 가능한 메모리를 보여줌
  • os.totalmem() : 전체 메모리 용량을 보여줌

실행 결과

 

🔍path

  • 폴더와 파일 경로를 쉽게 조작하도록 도와주는 모듈
  • 운영체제별로 경로 구분자가 다르기 때문에 필요함.
💡윈도 : C:\Users\mycodearchive
💡POSIX(맥, 리눅스) : /home/mycodearchive

 

🔍url

  • 인터넷 주소를 쉽게 조작하도록 도와주는 모듈
  • url.parse(주소) : 주소를 분해함. username,password 대신 auth 속성, searchParams 대신 query가 있음.
  • url.format(객체) : 분해되었던 url 객체를 다시 원래 상태로 조립함.

실행 결과

🔍searchParams

  • getAll(키) : 키에 해당하는 모든 값들을 가져옴
  • get(키) : 키에 해당하는 첫 번째 값만 가져옴
  • has(키) : 해당 키가 있는지 없는지 검사함.

실행 결과

 

🔍querystring

  • 기존 노드의 url을 사용 시 search 부분을 사용하기 쉽게 객체로 만드는 모듈
  • querystring.parse(쿼리) : url의 query 부분을 자바스크립트 객체로 분해함
  • querystring.stringify(객체) : 분해된 query 객체를 문자열로 다시 조립함

실행 결과

 

🔍crypto

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

💡고객의 비밀번호는 반드시 암호화가 필요함.

  • 단방향 암호화 : 복호화할 수 없는 (복호화 : 암호화된 문자열을 원래 문자열로 되돌려놓는 것) 암호화. 
  • 양방향 암호화 : 암호화된 문자열 복호화 가능, 키(열쇠)라는 것이 사용됨. 암호 복호화 시 암호화할 때 사용한 키와 같은 키를 사용해야함.

🔍util

  • 각종 편의 기능을 모아둔 모듈.
  • 계속해서 API가 추가되고 있으며 deprecated되어 사라지는 경우도 있다.
  • util.deprecate : 함수가 deprecated 처리되었음을 알림. 첫 번째 인수로 넣은 함수 사용 시 경고 메시지가 출력됨.
  • util.promisify : 콜백 패턴을 프로미스 패턴으로 변경함. 바꿀 함수를 인수로 제공하면됨.

실행 결과

 

🔍worker_threads

  • 노드에서 멀티 스레드 방식으로 작업할 수 있는 모듈
  • isMainThread를 통해 현재 코드가 메인 스레드에서 실행되는지, 우리가 생성한 워커 스레드에서 실행되는지 구분함.
  • 메시지를 한 번만 받고 싶다면 once('message')사용.
  • 워커에서 on 메서드 사용 시 직접 워커를 종료해야함. -> parentPort.close()

실행 결과

 

💡여러 개의 워커 스레드에 데이터 넘겨보기

  • new Worker 호출 시 두 번째 인수의 workerData 속성으로 원하는 데이터를 보낼 수 있음.
  • 워커에서는 workerData로 부모로부터 데이터를 받음.
  • 아래 코드에서는 두 개의 워커가 돌아가고 있고 각각 부모로부터 숫자를 받아서 100을 더해 돌려줌.
  • 돌려주는 순간 워커가 종료되어 worker.on('exit') 실행됨.

실행 결과

워커 스레드를 사용하지 않을 경우 상당한 시간이 소요되지만, 워커 스레드를 사용하여 여러 작업 시 속도가 빨라짐. 하지만 워커 스레드를 8개 사용한다고 해서 8배 빨라지는 것은 아니고 여러 스레드를 생성하고 통신하는 비용을 고려하여 멀티 스레딩이 필요함.

 

🔍child_process

  • 노드에서 다른 프로그램을 실행하고 싶거나 명령어를 수행하고 싶을 때 사용하는 모듈
  • 다른 언어의 코드(ex)파이썬)를 실행하고 결과값을 받을 수 있다.

실행 결과 : 현재 폴더의 파일 목록 표시

 

🔍기타 모듈들

  • assert : 값을 비교하여 프로그램이 제대로 동작하는지 테스트하는 데 사용
  • dns : 도메인 이름에 대한 IP 주소를 얻어내는 데 사용
  • net : HTTP보다 로우 레벨인 TCP/IPC 통신 시 사용
  • string_decoder : 버퍼 데이터를 문자열로 변경 시 사용
  • tls : TLS/SSL에 관련된 작업 시 사용
  • tty : 터미널과 관련된 작업 시 사용
  • dgram : UDP와 관련된 작업 시 사용
  • v8 : v8 엔진 접근 시 사용
  • vm : 가상 머신 접근 시 사용
반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형