<aside> 💡 Node 환경을 사용하는 것이 복잡하다고 생각되신다면 기존에 배운 CDN 방식에서 좀 더 익숙해지신 다음 진행하시는 것이 좋습니다. 복잡도가 한 번에 커지면 절망감이 느껴지고, 극복하긴 쉽지 않습니다. 여러분이 가장 쉽게 테스트할 수 있는 환경으로 먼저 시작하세요.

</aside>

1. Node.js 설치 및 개요

Node.js

노드JS(Node.js)는 자바스크립트를 이용하여 서버사이드 개발을 가능하게 하는 오픈소스 플랫폼입니다. 라이언 달(Ryan Dahl)이 개발한 노드JS는 크롬의 자바스크립트 엔진인 V8 엔진을 사용하여 작성된 자바스크립트 코드를 컴파일하고 실행할 수 있는 환경(런타임)을 제공합니다. https://medium.com/tech-confs-in-korean/ryan-dahl-내가-node-js에-대해-후회하는-것-10가지-jsconf-eu-2018-c4c3cbb6b5ef

https://www.youtube.com/watch?v=M3BM9TB-8yA

DENO 가 궁금하다면? https://www.youtube.com/watch?v=WtQlAzhE3gY

스크린샷 2023-05-01 오후 1.10.19.png

<aside> 🧐 런타임(runtime)이란? **런타임 환경(**runtime environment)은 컴퓨터가 현재 실행중인 OS와 별개로 프로세스나 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신을 의미합니다. 여기서 가상 머신(Virtual Machine)이란 하나의 물리적 컴퓨터에서 여러 운영체제(OS)를 실행하기 위한 소프트웨어로 가상 머신을 사용하면 하나의 컴퓨터에서 여러 개의 운영체제를 실행할 수 있으며, 특히 서버 운영 등에 유용하게 사용됩니다.

가상머신의 구조도 (Kernel : 애플리케이션 프로그램이 하드웨어에 접근할 수 있도록 하는 중간다리)

가상머신의 구조도 (Kernel : 애플리케이션 프로그램이 하드웨어에 접근할 수 있도록 하는 중간다리)

맥 사용자들에게 친숙한 부트캠프 역시 가상머신입니다.

맥 사용자들에게 친숙한 부트캠프 역시 가상머신입니다.

</aside>

1.1 우리는 왜 Node.js 환경에서 리액트를 실행시켜야 하나요?

합리적인 의심입니다! 앞서서 분명 VSC와 브라우저만 가지고도 우리는 리액트 앱을 만들고 실행했습니다. 갑자기 Node.js는 왜 등장하는거죠?

NPM (Node Package Manager)

Node.js 의 소울메이트. 바로 NPM입니다.

NPM은 자바스크립트 패키지 매니저의 약자로, Node.js 런타임에서 사용되며, 개발자들이 자바스크립트 패키지를 쉽게 설치, 업데이트, 삭제할 수 있도록 도와주는 관리 프로그램입니다. NPM은 기본적으로 Node.js와 함께 설치되며, CLI(Command Line Interface)를 통해 사용할 수 있습니다. 다양한 패키지를 검색하고, 패키지를 설치하고, 버전 관리 등의 다양한 기능을 제공합니다. (여기서 패키지란 Node.js 환경에서 실행가능한 소프트웨어를 의미하며, React 역시 NPM을 통해 다운받아서 설치할 수 있는 라이브러리의 하나입니다.)

NPM은 자바스크립트 생태계에서 매우 중요한 위치를 차지하고 있으며, 수많은 패키지가 NPM을 통해 배포되고 있습니다. 이러한 패키지를 사용하면 개발자들은 빠르고 효율적으로 자신의 소프트웨어를 개발할 수 있습니다.