Node.js

[Node.js]: Node.js 입문하기 _ 모듈/함수

개발하는 노숙자 2024. 4. 1. 23:06


 

1) process 객체의 속성/이벤트

process 객체는 프로세스 정보를 제공/제어할 수 있게 하는 객체.

 

1.1) process 객체의 속성

속성 설명
env 컴퓨터의 환경정보를 표시
version Node.js 버전 표시
versions Node.js와 종속된 프로그램 버전 표시
arch 프로세서의 아키텍쳐 표시
platform 플랫폼 표시

 

1.2) process 객체의 메서드

메서드 설명
exit([exitCode = 0]) 프로그램 종료
memoryUsage() 메모리 사용 정보 객체 리턴
uptime() 현재 프로그램의 실행시간 리턴

 

1.3) process 객체의 이벤트

이벤트 핸들러(이벤트 리스너)는 이벤트 발생 시 호출할 함수를 의미.

이벤트 설명
exit 프로세스 종료시 발생
uncaughtException 예외가 일어날 때 발생

 

1.4) Node.js 이벤트 연결 메서드

메서드 설명
on(이벤트_이름, 이벤트_헨들러) 이벤트 연결

 

 


2) os 모듈

 

2.1) os 모듈 추출

const os = require('os');

 


3) url 모듈

 

3.1) url 모듈 추출

const url = require('url');

 

3.2) url 모듈 메서드

메서드 설명
parse(urlStr [parseQueryString=false, slashesDenoteHost=false]) URL 문자열을 URL 객체로 변환 리턴
format(urlObj) URL 객체를 URL 문자열로 변환 리턴
resolve(from, to) 매개 변수를 조합하여 완전한 URL 문자열을 생성해 리턴

 


4) File System 모듈

 

4.1) fs 모듈 추출

const fs = require('fs');

 

4.2) 파일 읽기

메서드 설명
fs.readFileSync(파일이름) 동기적으로 파일 읽기
fs.readFile(파일이름, 콜백함수) 비동기적으로 파일 읽기

 

동기적: 순차적

비동기적: 비순차적 (스레드 사용)

 

4.3) 파일 쓰기

메서드 설명
fs.writeFileSync(파일이름) 동기적으로 파일 쓰기
fs.writeFile(파일이름, 콜백함수) 비동기적으로 파일 쓰기

 

4.4) 파일 처리와 예외

구분 방법
동기 코드 예외 처리 try catch 구문 활용
비동기 코드 예외 처리 콜백 함수로 전달된 첫 매개 변수 error 활용

 

◆ 하지만 Node.js 에서 굳이 동기 처리를 사용할 이유는 없음. 비동기 관련 내용만 확실히 이해하면 됨.

 


5)  노드 패키지 매니저 - npm

내부 모듈 외부 모듈
어떤 프로그래밍 플랫폼이 기본적으로 제공하는 모듈 개발자가 내부 모듈을 조합해서 사용하기 쉬운 형태로 만들거나 새로운 기능을 구현하여 제공하는 것.

 


6) request 모듈

 

6.1) request 모듈 추출

const request = require('request');

 

◆ request 모듈은 웹 요청을 쉽게 만들어주는 모듈.

 


7) cheerio 모듈

 

request 모듈로 가져온 웹 페이지 = 단순 HTML 문자열

 

파싱(Parshing): 단순 데이터(data) → 원하는 정보 추출 → 정보(information)

*단순 데이터에서 원하는 정보를 추출하여 정보로 만드는 과정

 

cheerio 모듈을 사용하면 가져온 웹 페이지의 특정 위치에서 데이터를 추출 가능.

 

7.1) cheerio 모듈 추출

const cheerio = require('cheerio');

 

◆ cheerio 모듈은 jQuery를 알아야 제대로 활용하기 쉽다. 아래 교재로 공부하면 JS와 jQuery를 공부하기 쉽다.

https://www.yeamoonsa.com/shop/item.php?it_id=20140728123835253

 

예문사

 

yeamoonsa.com

 


8) async 모듈

 

Node.js는 대부분의 메서드가 비동기적으로 구성되어 있음. 때문에 실행 순서를 정의하기 어려움.

(들여 쓰기도 많음...)

콜백 지옥에 빠지기 쉬움. 이를 해결하기 위해 async 모듈을 사용함.

 

8.1) async 모듈 추출

const async = require('async');

 

8.2) async.parallel() 메서드

async.parallel() 메서드는 여러 개의 비동기 작업을 병렬로 실행하고 모든 작업이 완료될 때까지 기다린 후 결과를 수집함.

이를 통해 코드의 성능 향상을 기대할 수 있음.

 

 

8.2.1) async.parallel() 메소드 _ 예제

const async = require('async');

// 첫 번째 비동기 작업: 1초 후에 완료됨
function task1(callback) {
    setTimeout(() => {
        callback(null, 'Task 1 completed');
    }, 1000);
}

// 두 번째 비동기 작업: 2초 후에 완료됨
function task2(callback) {
    setTimeout(() => {
        callback(null, 'Task 2 completed');
    }, 2000);
}

// async.parallel을 사용하여 두 작업을 병렬로 실행
async.parallel([
    task1,
    task2
], function(err, results) {
    // 모든 작업이 완료된 후 실행됨
    if (err) {
        console.error('Error:', err);
        return;
    }

    // 각 작업의 결과를 출력
    results.forEach((result, index) => {
        console.log(`Result ${index + 1}:`, result);
    });
});

 

위는 병렬 처리에 대한 간단한 예제이다. async.parallel() 을 사용하여 두 개의 비동기 작업을 실행하는 코드이다.

 

task1 task2 함수는 각각 1초와 2초 후에 완료되는 비동기 작업을 정의한다. 이때 이 두작업은 async.parallel()배열 형태로 전달되어 병렬로 실행된다.

이후 모든 작업이 완료되면 최종 콜백 함수가 실행되어 각 작업의 결과가 로그에 출력된다.

 

여기서 알 수 있는것은 두 작업이 동시에 실행되어 각 작업의 완료를 기다리지 않는다는 것 이다.

결과적으로 더 긴 작업시간을 갖는 task2의 작업을 기다리지 않고도 task1의 결과를 즉시 얻을 수 있는것이다.


* 본 포스팅의 내용은 '한빛아카데미_자바스크립트 프로그래밍 입문 (2판)' 의 내용을 포함합니다. *