내가 당신의 고통을 어떻게 느끼는지!
많은 사람들과 마찬가지로 Node.js의 본질에 도달하기가 어려웠습니다. 대부분의 사람들은 자신이 유용하다고 생각하는 Node 부분에 대해서만 쓰고 이야기하기 때문입니다. 흥미를 느끼는 부분은 일반적으로 Node.js의 주요 이점이 아닌 2 차 이점입니다. 목적. Node가 단지 자바 스크립트 런타임이라고 말하는 것은 사람들에게 화가 났다고 생각합니다. 자바 스크립트의 노드의 사용 - 그리고 V8 런타임의 선택은 - 단순히 종료 수단 , 노드의 개발자 해결하고 싶어하는 문제에 가장 적합한 도구를 제공합니다.
Node의 주요 목적은 웹 앱에서 사용자 이벤트를보다 효율적으로 관리하는 것이 었습니다. 그래서 Node는 압도적으로웹 앱의 백엔드에서 사용됩니다. 이벤트 관리에서는 이러한 사용자 이벤트에 대해 서버 시스템에서 무언가를 수신해야합니다. 따라서 각 이벤트를 적절한 핸들러 스크립트로 라우팅하도록 http 서버를 설정해야합니다. Node는 사용자 요청을 위해 전용 포트에서 수신하도록 서버를 빠르게 설정하기위한 프레임 워크를 제공합니다. JavaScript에는 콜백 함수가 있기 때문에 Node는 이벤트 처리에 JavaScript를 사용합니다.이를 통해 종속 작업의 결과가 반환 될 때까지 하나의 작업을 일시 중단 할 수 있습니다. 이 기능이있는 다른 언어는 많지 않으며 Google의 V8 런타임만큼 효율적인 인터프리터가 없을 수 있습니다. 대부분의 웹 개발자는 JavaScript를 알고 있으므로 Node.js로 추가 언어 학습이 필요하지 않습니다. 또한 콜백 함수를 사용하면 모든 사용자 작업을 단일 스레드에 배치 할 수 있습니다.데이터베이스 또는 파일 시스템에 대한 액세스를 요구하는 작업에 명시적인 차단을 적용하지 않고 그리고 이것이 개발의 주된 목적인 동시 사용이 많은 노드에서 뛰어난 실행 효율성으로 이어집니다.
Node 사용자가 신속하게 백엔드 코드를 작성할 수 있도록 Node의 개발자는 일상적인 작업 (예 : HTTP 요청, 문자열 (디코딩, 스트림 등)과 관련된 문제) 및 NPM (노드 패키지 관리자) 저장소를위한 내장 JS 라이브러리를 모두 구성했습니다. : 이것은 다양한 표준 및 사용자 정의 기능을위한 오픈 소스, 사용자 유지 스크립트 패키지 세트입니다. 모든 노드 프로젝트에서는 설정된 npm install 명령을 통해 NPM 패키지를 프로젝트로 가져올 수 있습니다.
Node를 통해 처리되는 사용자 요청은 인증, 데이터베이스 쿼리, 콘텐츠 관리 (Strapi CMS) 등과 같은 웹 앱에 필요한 것입니다.이 모든 것들은 Node 포트로 전송됩니다. (데이터베이스에서 얻은 데이터 분석에 많은 CPU 시간이 소요되는 경우 이러한 유형의 프로세스는 별도의 스레드에 배치하는 것이 가장 좋으므로 단순한 사용자 요청이 느려지지 않습니다.) 다른 유형의 사용자 요청 (예 : 다른 웹 페이지로드) , 다운로드 CSS / JS / 이미지 파일 등은 웹 서버 프로그램 (Apache, NGinx 등)이 처리 할 서버 시스템의 기본 포트로 브라우저에 의해 계속 전송됩니다.
따라서 실제로 Node는 기본적으로 빠른 서버 생성 및 이벤트 처리를위한 프레임 워크이지만 웹 서버 프로그램의 일부 기능 만 대체하는 프레임 워크입니다 .
Node의 백엔드가 아닌 다른 사용은 단순히 V8 엔진과 같은 기능 중 하나 또는 다른 기능을 이용합니다. 예를 들어 프런트 엔드 빌드 도구 인 Grunt와 Gulp는 Node.js를 사용하여 SASS를 CSS로 변환하고, CSS / JS 파일을 최소화하고, 이미지 크기 /로드를 최적화하도록 코딩 할 수있는 빌드 스크립트를 처리합니다.하지만 이런 종류의 작업은 실제로 웹 애플리케이션을위한 효율적인 백엔드 프로세스를 만드는 주된 용도가 아니라 Node의 부산물 사용입니다.