>웹 프론트엔드 >JS 튜토리얼 >Node.js란 무엇입니까? 장점은 무엇입니까?

Node.js란 무엇입니까? 장점은 무엇입니까?

青灯夜游
青灯夜游앞으로
2021-01-06 17:51:062817검색

Node.js란 무엇입니까? 장점은 무엇입니까?

관련 추천: "nodejs Tutorial"

JS의 충성스러운 팬으로서 JS는 JAVA 생태계만큼 크지는 않지만 JavaScript는 클라이언트 측 스크립트에서 서버 측으로 이동했습니다. 주목하세요, 자바스크립트는 서서히 상승하고 있고, 우리는 이를 다른 관점에서 배워야 합니다.

Node.js란 무엇인가요?

Nodejs은 본질적으로 JavaScript 런타임 환경입니다.

Google의 V8 엔진을 기반으로 실제로는 Chrome의 V8 엔진을 잘라내어 캡슐화한 실행 환경입니다.

공식 웹사이트로 이동하여 패키지를 다운로드하고 확실한 방법으로 설치해 보겠습니다.

Node 다운로드 공식 웹사이트: https://nodejs.org/en/download/

javaScript 스크립트를 실행하려면 명령줄에 node를 입력하세요.

Node.js의 장점은? 스크립팅 언어인 JavaScript를 서버 언어로 사용할 수 있는 이유는 무엇입니까?

장점 1 Node.js는 매우 높은 동시성 기능을 가지고 있습니다

Node.js의 초기 목표는 고성능 서버를 만들고 서버 프로그램 개발 도구에서 다양한 애플리케이션을 실행할 수 있는 간단한 방법을 제공하는 것입니다. ㅋㅋㅋ                                                                                                           Java, PHP 또는 와 같은 기존 서버 측 언어에 비해 하나의 스레드에는 2MB의 메모리가 필요합니다. . 즉, 이론적으로 8GB 서버에는 약 4,000명의 동시 연결 사용자가 있을 수 있습니다. 높은 동시성으로 더 많은 사용자를 지원하려면 추가 서버를 추가해야 합니다.

                                                            Node.js는 각 클라이언트 연결에 대해 새 스레드를 생성하지 않고 하나의 스레드만 사용합니다. E 이것은 단일 스레드 기반의 노드입니다(요청을 선택하고 응답을 제공하는 하나의 메인 스레드만 있음)

속도가 느리지 않나요? 실제로는 그렇지 않습니다. ​ ​ Node.js가 사용자 연결을 수신하면 내부 이벤트가 트리거됩니다. 사전 정의된 기능을 통해 사용자 행동에 반응합니다. Node.js의 메인 스레드는 프로그램의 프로세스에 신경 쓰지 않습니다. 실제로 작업 스레드가 파일 데이터를 읽을 때 Node의 메인 스레드가 파일에 액세스하고 데이터베이스를 읽을 수 있도록 돕는 또 다른 작업 스레드가 있습니다. 콜백 함수는 발견된 데이터를 클라이언트로 다시 전송하고 일부 작업에 대한 연결을 닫는 등의 실행을 위해 노드 메인 스레드로 반환됩니다. (이것은 이벤트 중심의 노드 비차단 I/O입니다.)我 上 아래 제가 그린 그림 (혹시 틀린 부분이 있으면 양해 부탁드립니다)

이때 우리 머릿속에는 프로토타입이 있어야 하는데, 즉 Node.js의 메인 스레드가 받아온 것입니다. 요청을 요청하고 응답하는 작업이 혼합되어 있어 여러 클라이언트로부터 지속적으로 요청을 받을 수 있습니다. IO 작업 스레드가 데이터를 찾으면 이벤트 콜백 함수를 트리거합니다. 호스트에게 스레드 데이터를 얻었음을 알려줍니다. 이때 메인 스레드는 콜백 함수를 실행하고 데이터를 클라이언트에 반환합니다.

이론적으로 8G 메모리를 갖춘 서버는 동시에 30,000~40,000명의 사용자 연결을 수용할 수 있습니다. 이것이 바로 Node가 빛을 발하는 곳입니다(단일 스레드, 비차단 IO, 이벤트 중심)

Advantages 2 Node는 JavaScript 구문을 사용합니다.

Node.JS

javaScript 기반의 V8 엔진, 즉 JS 구문만 알면 백엔드 개발에 사용할 수 있다고 했는데, Node에서는 공식적으로 ECMA Script6(ES6) 구문을 권장합니다.

Node는 JavaScript가 브라우저에서만 실행되었던 과거의 상황을 깨고 프런트엔드와 백엔드 프로그래밍 환경을 통합하여 개발 비용을 크게 절감합니다. (이것은 프론트엔드 개발자에게 매우 친숙합니다. JS가 할 수 있는 일이 많을수록 프론트엔드 개발 속도가 빨라집니다.)

장점 3 Node.js의 등장 최근 몇 년간 급속한 발전과 함께 Node.js가 활약하고 있습니다. 대체할 수 없는 역할.

S Node.js는 운영 환경일 뿐만 아니라 JS 문법 기반을 수용하는 새로운 JavaScript 언어입니다. 또한 읽기 파일 URL의 모듈을 사용하여 분석합니다.

Rreeee

node.js에는 NPM 패키지 관리 도구도 통합되어 있어 프로젝트가 의존하는 가방을 명령줄을 통해 쉽게 다운로드할 수 있습니다.

                                                    ~
const http = require('http')

                                                                                                     노드는 사용자 정의 모듈 구문도 지원합니다. ↓↓

 const  Jquery = require('jquery');
const app =()=>{
     //模块代码
     
}
module.exports = app;

Node.js는 프런트 엔드 개발 모델에 어느 정도 영향을 미칩니다. 프런트 엔드 엔지니어링을 모듈화하고, 빠르게 개발하고, 코드 결합을 줄이고, 유지 관리성을 크게 향상시킵니다.

Node.js는 어디에 적합합니까?个 다음 목록은 여러 Node.js 응용 시나리오에 나열되어 있습니다. 위에는 수많은 node.js의 장점이 나열되어 있지만 언어가 없으면 단점이 없으며 Node도 예외는 아닙니다. 언어가 어떤 시나리오와 분야에 적합한가의 문제일 수 있습니다. D node.js를 적용할 수 없는 장면에 대해 얘기해보자(큰 제목 추가 ↓↓↓)

Node.js 0.8에서 CPU 계산 밀집 프로그램에 적합하지 않은 장면 이전 버전의 Node.js는 멀티스레딩을 지원하지 않았습니다. 물론 이는 디자인 철학의 문제입니다. Node.js 개발자와 지지자들은 단일 스레드 및 이벤트 기반 비동기 프로그래밍이 기존 다중 스레드 프로그래밍보다 더 효율적으로 실행된다고 굳게 믿고 있기 때문입니다. 그러나 실제로 멀티스레딩은 비용이 많이 들더라도 동일한 처리량을 달성할 수 있지만 멀티코어 환경을 위해 특별한 구성을 만들 필요는 없습니다. 반면, 단일 스레드 특성으로 인해 Node.js는 멀티 코어 리소스를 완전히 활용하기 위해 멀티 프로세스 접근 방식을 사용해야 합니다.

이상적으로 Node.js 단일 스레드는 실행 중에 CPU 코어를 완전히 점유하며 모든 요청은 현재 요청이 처리될 때까지 기다리고 응답하기 전에 이벤트 루프에 들어가야 합니다. 애플리케이션이 컴퓨팅 집약적이라면 수동으로 분리하지 않는 한 요청 응답 대기 시간이 상당히 길어집니다. 예를 들어 이벤트의 콜백 함수에서 복잡한 계산을 수행해야 하고 200밀리초의 CPU를 사용하는 경우 이벤트 루프의 모든 요청은 200밀리초 동안 기다려야 합니다. 응답 속도를 향상시키기 위한 유일한 방법은 이 계산 집약적인 부분을 여러 논리로 분할하는 것입니다. 이로 인해 프로그래밍이 더욱 복잡해집니다. 그럼에도 불구하고 시스템의 총 처리량과 총 응답 대기 시간은 줄어들지 않지만 스케줄링은 약간 더 공정해질 것입니다. 다행스럽게도 실제 웹 서버에서는 계산 집약적인 부분이 거의 없고, 있다고 해도 즉각적인 대응을 위해 구현해서는 안 됩니다. 올바른 방법은 서버가 처리 중이라는 메시지를 사용자에게 제공하고, 완료되면 사용자에게 알리고, 서버의 다른 프로세스나 다른 전용 서버에 작업을 맡기는 것입니다.

②단일 사용자 멀티 태스킹 애플리케이션앞서 논의한 내용은 일반적으로 서버 측 프로그래밍이며, 가정 중 하나는 사용자가 많다는 것입니다. 그러나 로컬 명령줄 도구나 그래픽 인터페이스와 같은 단일 사용자를 대상으로 하는 경우 소위 많은 수의 동시 요청이 존재하지 않습니다. 그래서 또 다른 끔찍한 문제가 발생합니다. 단일 사용자이지만 반드시 단일 작업은 아닙니다. 예를 들어 사용자에게 인터페이스를 제공하는 동안 백그라운드에서 특정 계산이 수행되는 경우 사용자 인터페이스가 차단되는 것을 방지하려면 멀티스레딩이나 멀티프로세스를 활성화해야 합니다. Node.js 스레드나 프로세스 간의 통신은 지금까지 잠금이 전혀 없어서 불편해서 교착상태가 되지 않는다고 합니다. Node.js의 여러 프로세스는 동일한 작업을 수행하고 여러 프로세스를 통해 여러 프로세서의 리소스를 활용하는 경우가 많습니다. 그러나 여러 프로세스가 서로 협력하면 확장됩니다.

③매우 복잡한 로직의 트랜잭션

Node.js의 제어 흐름은 이벤트에 따라 분리되지만 인간의 사고는 선형적이므로 언어나 컴파일러에 맞게 전환하면 안 됩니다. 희생은 없습니다. 예를 들어, 은행에서 돈을 인출하고, 그 돈을 사용하여 특정 가상 제품을 구매하고, 구매 후 재고 데이터베이스에 추가하는 등의 논리를 구현해야 합니다. 그 사이의 모든 단계에는 수십 번의 I/O 작업이 포함될 수 있습니다. . 작업이 실패한 후에는 롤백 작업을 수행해야 합니다. 이 프로세스는 선형이며 이미 매우 복잡합니다. 비선형 논리로 분할한다면 그 복잡성은 아마도 유지하기 어려울 것입니다. Node.js는 간단한 논리이지만 자주 액세스하는 작업을 처리하는 데는 더 좋지만, 매우 복잡한 논리가 있는 작업을 완료하는 데는 적합하지 않습니다.

“알겠습니다. Node.js에 대한 요약입니다. 더 이상 말하지 않겠습니다. 오랫동안 썼기 때문에 코딩하겠습니다.”

더 많은 프로그래밍 관련 지식은 , 방문해주세요: 프로그래밍 교육! !

위 내용은 Node.js란 무엇입니까? 장점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제