Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임(환경)으로 , JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램입니다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하며, 이를 통한 웹 서버의 동작에 있어 더 많은 통제에서 벗어나 여러가지 기능을 하게 합니다.
JavaScript 런타임 런타임이란 특정 언어로 만든 프로그램을 실행 할 수 있는 환경을 말합니다. 따라서 Node.js는 자바스크립트 프로그램을 컴퓨터에서 실행 할 수 있게 하는 자바스크립트 실행기 입니다.
Node.js 사용이유
Node.js를 사용하려면 먼저 JavaScript를 배워야 합니다.
Node.js는 JavaScript를 사용하기 위해 만들어졌기 때문입니다.
JavaScript는 C/C++, Java와 같은 프로그래밍 언어 입니다.
하지만 이름에서 알 수 있듯이 JavaScript는 독립적인 언어가 아닌 스크립트 언어입니다.
스크립트 언어는 특정한 프로그램 안에서 동작하는 프로그램이기 때문에 웹 브라우저 프로그램 안에서만 동작합니다.
즉, 웹 브라우저(크롬, 사파리, 익스플로러 등)가 없으면 사용 할 수 없는 프로그램입니다.
여기서 Node.js가 나오는 이유가 됩니다.
즉,JavaScript를 웹 브라우저에서 독립시킨 것으로, Node.js를 설치하게 되면 터미널프로그램(윈도우 cmd, 맥 terminal 등)에서 Node.js를 입력하여 브라우저 없이 바로 실행할 수 있습니다.
하지만 JavaScript에서 분리된 언어이기 때문에 문법은 동일합니다.
이렇게 Node.js를 이용하여 웹 브라우저와 무관한 프로그램을 만들 수 있게 됩니다.
또한 Node.js를 이용하여 서버를 만 들 수 있습니다.
이전까지 Server-Client 웹사이트를 만들 때 웹에서 표시되는 부분은 JavaScript를 사용하여 만들고, 서버는 Reby,Java 등 다른 언어를 사용하여 만들었어야 했지만Node.js를 사용 함으로써 한가지 언어로 전체 웹 페이지를 만들 수 있게 된 것입니다.
Node.js 주요특징
자바스크립트 언어 사용 자바스크립트를 사용할 줄 아는 개발자들에게는 진입장벽이 낮습니다. 또한, 자바스크립트로 백엔드 로직까지 개발할 수 있다는 엄청난 장점으로 점유율이 높아지고 있습니다.
빠른 속도 구글에서 개발한 자바스크립트 엔진을 사용하기 때문에 빠른 속도를 자랑합니다.
이벤트 기반 비동기 방식(Non-Blocking) Node.js에서는 모든 API가 비동기 방식이므로, 호출 후 응답을 기다리지 않고 다른 API를 호출합니다. 이전에 호출했던 API의 응답이 오면 이벤트 루프가 확인하여 처리합니다.
싱글스레드와 이벤트 루프 싱글스레드이지만 이벤트 루프가 비동기적으로 계속해서 또다른 작업 쓰레드에게 일을 전달해주기 때문에 효율적입니다.
이벤트 루프
- 일종의 감시자로 어떤 이벤트가 있는지 지속적으로 체크합니다. - 이벤트가 감지되면 그 작업을 작업 스레드(작업 공간)에 배정합니다. - 작업 스레드는 일이 마무리되면 콜백을 감시자(이벤트 루프)에 요청힙니다.