1 분 소요

Node.js란?

Node.js란 서버 측 JavaScript 실행 환경으로, Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.

  • Node.js는 JavaScript를 사용하여 서버 측 애플리케이션을 만들 수 있는 유연성과 성능을 제공하기 때문에 Node.js는 웹 개발자들 사이에서 매우 인기 있는 기술 중 하나이다.

Node.js 특징

  • 비동기 I/O 처리
    • Node.js는 비동기 I/O 처리 방식을 채택하여, 블로킹(blocking)을 방지하고, 높은 처리 성능을 보여준다. (각각의 I/O 처리 될 때까지 비동기적 작업 수행 불가 방지)
    • 블로킹 관련
  • 높은 확장성
    • Node.js는 다양한 모듈을 이용해 쉽게 기능을 확장하거나, 클러스터링을 이용하여 멀티 코어 환경(CPU가 여러 개의 코어를 가진 컴퓨터 환경)에서도 높은 성능을 발휘할 수 있기 때문에 확장성이 높은 구조를 가지고 있다고 볼 수 있다.
  • 빠른 개발이 가능
    • JavaScript 언어를 기반으로 하기 때문에, 프론트와 백엔드를 모두 JavaScript를 사용하여 개발 할 수 있다. 이로인해 개발 속도가 빨라진다.
  • 오픈소스
    • Node.js는 커뮤니티가 활성화되어 있어서 다양한 라이브러리와 패키지가 제공되고 있다.
  • 플랫폼 독립성
    • 가장 큰 특징 중 하나인 플랫폼 독립성이란 특징 때문에 Windows, macOS, Linux 등 다양한 운영체제에서 동작이 가능하다. 따라서 서버를 운영하는 환경을 신경쓰지 않고 Node.js를 이용한 애플리케이션을 개발할 수 있다.

이러한 특징들을 통해 Node.js는 서버 사이드 개발에 높은 성능과 개발 편의성을 제공한다.

Node.js의 비동기 통신 사용 예시

  • 이 코드는 실제 날씨 API를 사용할 때 비동기 통신을 위해 사용했던 코드의 일부분이다. 해당 코드는 fetch() 메소드를 통해 API 호출을 비동기적으로 처리하고, Promise를 반환한다. 이 때 await를 사용해 Promise 결과를 기다려서 JSON 데이터를 받와서 사용한다.
  • 코드 설명을 덧붙이자면 React에서 useEffect()를 사용해서 해당 컴포넌트가 처음 렌더링될 때 getWeather()함수를 호출하고, 반환된 JSON 데이터를 useState()를 이용하여 상태값으로 저장하고 그 값을 이용해 날씨의 이미지나 상태를 표시하는 페이지의 일부이다.

    /* 날씨에 관한 정보 가져오는 비동기 함수(외부 API 요청)*/
    async function getWeather() {
        // console.log("패치 시작");
        return await fetch(`https://api.openweathermap.org/data/2.5/weather?lat=37.5586816&lon=126.976&appid=${API_KEY}`)
                .then(response => response.json());
    }
        
            useEffect(() => {
                getWeather(position).then(res =>{
                            setWeather(res.weather[0]);
                            getImage(res.weather[0].main);
                                
                            // console.log("useEffect 실행");
                            })
                                
                        },
                    []
                );

  • 이와같이 비동기적으로 데이터를 처리하면, 다른 작업을 수행하면서도 서버로부터 데이터를 받아와 UI를 업데이트할 수 있다. 이러한 비동기 처리는 Node.js에서 중요한 기능 중 하나이다.

업데이트: