해갈 2023. 5. 15. 14:46

배워야 하는 이유?

리액트를 배우는데 Node.js 를 배워야 하는 이유는 간단합니다. 리액트가 자바스크립트의 라이브러리이기 때문이죠. 좀 더 구체적으로 이야기하면 자바스크립트 연의 코드들이 어디에서 어떻게 동작하는지에 대한 이야기로 흘러갑니다. 

자바스크립트는 자바스크립트 엔진 위에서 동작하고, 그 엔진은 사파리, 파이어폭스, 크롬, 엣지, 오페라 와 같은 웹 브라우저에 있습니다. 그런데 이 브라우저들이 모두 똑같은 엔진을 사용하는 것이 아닌, 각각 자신들의 엔진을 사용합니다. 그중에서 크롬 브라우저가 가진 V8 자바스크립트 엔진이 가장 대표적인 자바스크립트 엔진으로 알려져 있습니다. 그래서 브라우저에 속해 있는 자바스크립트 엔진을 사용해야 하기 때문에 자바스크립트는 웹브라우저에서만 실행될 수 있다고 배웠습니다. 그리고 브라우저는 HTML 문서를 기반으로 동작하니까 자바스크립트 언어는 HTML 문서 안에서 사용하게 됐습니다. 그래서 자바스크립트 언어는 고작 버튼, 이벤트를 처리하는 등의 웹사이트의 인터렉션 말고는 할 수 있는 일이 제한적이었습니다. 그 당시만 해도 자바스크립트가 이렇게 팬들과 사용량을 보유하고 있지 못했죠. 그런데 자바스크립트라는

 

 

 

Node.js 의 기능

그래서 Node.js 를 컴퓨터에 설치해 두면, Node.js 를  이용해서 자바스크립트 코드를 브라우저 없이 컴퓨터에서도 실행할 수 있게 됩니다. 컴퓨터에서 자바스크립트를 실행할 수 있게 되었다는 건 엄청난 의미입니다. 자바스크립트가 브라우저에서 벗어나 독립적으로 실행될 수 있다는 건 자바스크립트라는 언어가 태생적으로 가진 엄청난 한계가 사라진 것입니다. 자바스크립트로 카카오톡이나 ppt 와 같은 pc 프로그램도 만들 수 있다는 뜻입니다. 그렇게 자바스크립트로 만들 수 있는 프로그램 중에 집중해서 살펴봐야 하는 부분은 자바스크립트로 웹 서버까지 만들 수 있게 되었다는 겁니다. 

 

 

웹 서버

Node.js 로 만들 수 있다는 웹 서버는 url 이라는 주소로 요청을 받아서 요청받은 주소에 알는 웹사이트인데 HTML , CSS, JavaScript 로 이루어진 웹 파일들을 브라우저한테 던져준다고 생각할 수 있습니다. 이때 url 주소는 사실 웹 서버의 주소였다는 것을 생각해 볼 수 있습니다. 그러면 Node.js 를 이용해서 자바스크립트 언어를 이용해서 웹 서버를 만들 수도 있고, 웹 서버는 도메인 주소를 요청받아서 알맞은 웹 파일을 던져주는 역할을 한다는 것까지 알 수 있습니다. 

 

 

리액트와 관계

결론적으로 리액트는 브라우저에서 동작하는 복잡하고 여러 기능을 가진 자바스크립트 파일들을 쉽게 만들어내는 기술입니다. 리액트를 사용해서 만들어낸 자바스크립트 파일들은 매우 여러 가지의 복잡하지만 좋은 기능들을 가지기 때문에 웹 브라우저에 전달되어서 고전적인 웹 사이트가 아니라 마치 프로그램처럼 돌아갑니다. 그런 의미에서 리액트로 만든 웹 사이트를 웹 애플리케이션이라 부르고, 리액트 애플리케이션이라고도 부릅니다. 리액트는 Node.js 를 기반으로 사용할 수 있는 기술이기 때문에 Node.js 없이는 사용하기 어렵습니다. 그렇기 때문에 리액트의 근간인 Node.js 의 기본적인 개념과 사용법에 대해서 필요한 만큼만 다루려고 합니다.

 

 

 

자바스크립트의 역사는 Node.js 의 등장 이전과 이후로 나뉠 만큼, Node.js 는 자바스크립트 생태계에 지대한 영향을 미쳤습니다. 리액트 또한 Node.js 를 기반으로 작동합니다.

 

자바스크립트는 웹 브라우저에 내장된 자바스크립트 엔진에 의해 실행됩니다. 또한 자바스크립트를 실행하는 웹 브라우저를 자바스크립트의 구동 환경이라는 뜻에서 '자바스크립트 런타임' 이라고도 표현합니다. 

 

그렇다면 자바스크립트 생태계에 혁신적인 변화를 가져온 Node.js 는 무엇일까요? 한마디로 Node.js 는 또 하나의 자바스크립트 런타임입니다. Node.js 등장 이전에는 웹 브라우저가 유일한 자바스크립트 런타임이었습니다. 따라서 자바스크립트는 웹 브라우저 외에서는 사용할 수가 없었습니다. 그러나 독립적인 자바스크립트 런타임인 Node.js 가 등장한 이후에는 어떤 환경에서도 자바스크립트를 실행할 수 있게 되었습니다. 결국 자바스크립트를 이용해 웹 서버나 모바일 애플리케이션을 개발하는 등 자바스크립트의 활용 범위가 넓여졌고, 이를 사용하는 개발자도 많이 늘어나게 되었습니다.

 

영어권 최대 개발자 Q&A 사이트인 스택오버플로(Stackoverflow) 에서는 매년 전 세계 개발자를 대상으로 설문조사를 진행합니다. 2022년에 진행한 설문에서 전체 응답자의 65% 의 개발자가 자바스크립트를 사용한다고 밝혀, 자바스크립트는 개발자가 가장 많이 사용하는 프로그래밍 언어가 되었습니다.

 

Stackoverflow 의 언어별 개발자 통계

 

Node.js 를 서버 개발 기술로 잘못 알고 있는 경우가 꽤 있습니다. 하지만 Node.js 는 단순 자바스크립트 런타임입니다. 게임과 게임기에 비유하자면 자바스크립트는 게임이고, Node.js 는 게임을 구동하는 게임기에 비유할 수 있습니다.

 

리액트를 잘 다루기 위해서는 Node.js 학습이 선행되어야 합니다. Node.js 에는 리액트를 효율적으로 다루는 여러 도구들이 내장되어 있을 뿐만 아니라, 궁극적으로 Node.js 가 리액트로 만든 자바스크립트 애플리케이션을 구동하기 때문입니다.

 

Node.js 는 어떤 특별한 별도의 언어가 아니라 
자바스크립트를 웹브라우저가 아닌 pc 에서도 독립적으로 실행시켜주는 도구, 즉 
자바스크립트의 런타임입니다.