[깊이 들 어가 서 Node. js 시리즈 1] Node. js 가 뭐야?
Node. js 에 관 한 기술 보도 가 갈수 록 많아 지고 있 습 니 다. Node. js 의 작법 도 다양 합 니 다. NodeJS 라 고 쓰 인 것 도 있 고 Nodejs 라 고 쓰 인 것 도 있 습 니 다. 도대체 어떤 작법 이 가장 표준적 입 니까? 우 리 는 공식 적 인 설 을 따 르 는 것 도 좋 습 니 다.Node. js 공식 홈 페이지
”Node“ ”Node.js“
에 서 는 다른 표현 이 발견 되 지 않 았 습 니 다. "Node" 가 가장 많이 사용 되 었 습 니 다. Node 라 는 단어의 뜻 과 용도 가 너무 광범 위 하여 개발 자 들 이 오해 하기 쉽 습 니 다. ——”Node.js“,js Node
다른 이름 은 다양 하고 정확 한 출처 가 없 기 때문에 저 희 는 사용 을 추천 하지 않 습 니 다.2 노드 는 어떤 문 제 를 해결 하기 위 한 것 입 니까?
Node 가 공개 적 으로 선언 한 목 표 는
“ ”
입 니 다. 현재 서버 프로그램 에 무슨 문제 가 있 습 니까? 수학 문 제 를 풀 겠 습 니 다. 자바 에서™ PHP 와 같은 언어 에 서 는 모든 연결 에 새 스 레 드 가 생 성 됩 니 다. 새 스 레 드 마다 2 MB 의 메모리 가 필요 할 수 있 습 니 다. 8GB RAM 이 있 는 시스템 에 서 는 이론 적 으로 최대 의 병렬 연결 수가 4, 000 명의 사용자 입 니 다. 클 라 이언 트 가 증가 함 에 따라 웹 프로그램 이 더 많은 사용 자 를 지원 하려 면 더 많은 서버 를 추가 해 야 합 니 다.물론 서버 비용, 데이터 비용, 인건비 등 비용 을 증가 시 킬 수 있 습 니 다. 이러한 비용 상승 외 에 도 잠재 적 인 기술 문제 가 있 습 니 다. 즉, 사용자 가 요청 마다 다른 서버 를 사용 할 수 있 기 때문에 모든 공유 자원 은 모든 서버 에서 공유 해 야 합 니 다. , Web ( 、 ) :
Node 가 이 문 제 를 해결 하 는 방법 은:
입 니 다. 연결 마다 Node 엔진 프로 세 스 에서 실행 되 는 이 벤트 를 발사 합 니 다. 연결 마다 새로운 OS 스 레 드 를 만 드 는 것 이 아 닙 니 다. Node , , I/O
서버 를 실행 하면 수만 개의 병렬 연결 을 지원 할 수 있 습 니 다.3 Node. js 는 JS 애플 리 케 이 션 이 아니 라 JS 운영 플랫폼 입 니 다.
Node. js 라 는 이름 을 보면 초보 자 들 은 자바 script 애플 리 케 이 션 이 라 고 착각 할 수 있 습 니 다.자 바스 크 립 트 를 언급 할 때, 여러분 이 가장 먼저 생각 하 는 것 은 일상적으로 사용 하 는 브 라 우 저 입 니 다. 현대 브 라 우 저 는 렌 더 링 엔진, 자 바스 크 립 트 엔진 등 다양한 구성 요 소 를 포함 하고 있 습 니 다. 그 중에서 자 바스 크 립 트 엔진 은 웹 페이지 의 자 바스 크 립 트 코드 를 해석 하 는 일 을 맡 고 있 습 니 다. 웹 전단 에서 가장 중요 한 언어 중 하나 로 서 자 바스 크 립 트 는 전단 엔지니어 의 특허 입 니 다. 단,
,Node.js C++ , Javascript
V8 , C++
간단 한 명령 은 다음 과 같다.#node helloworld.js
Node. js 는 Google Chrome 브 라 우 저의 V8 엔진 을 사용 하여 파일 조작, 네트워크 프로 그래 밍 등 성능 이 좋 습 니 다.
Node.js Javascript
에 비해 Node.js Javascript ( Linux、Windows)
.4. Node. js 는 이벤트 구동, 비동기 프로 그래 밍 을 사용 하여 네트워크 서 비 스 를 위해 설계 되 었 다.
이벤트 구동 이라는 단 어 는 낯 설 지 않 습 니 다. 일부 전통 언어의 네트워크 프로 그래 밍 에서 우 리 는 리 셋 함 수 를 사용 합 니 다. 예 를 들 어 socket 자원 이 특정한 상태 에 이 르 렀 을 때 등 록 된 리 셋 함수 가 실 행 됩 니 다.
Javascript , Node.js
. Net 모듈 의 경우, 그 중의 net. Socket 대상 은 다음 과 같은 사건 이 있 습 니 다. connect, data, end, timeout, drain, error, close 등, Node. js 를 사용 하 는 개발 자 는 자신의 업무 논리 에 따라 해당 하 는 리 셋 함 수 를 등록 해 야 합 니 다. API
이 는 코드 구조 에서 이러한 함수 들 이 순서대로 등 록 된 것 처럼 보이 지만 자신 이 나타 난 순서 에 의존 하지 않 고 해당 하 는 사건 이 발생 하 기 를 기다 리 는 것 을 의미한다. 사건 구동, 비동기 프로 그래 밍 의 디자인 은 중요 한 장점 은 시스템 자원 을 충분히 이용 하고 코드 를 실행 하 는 데 어떤 작업 이 완성 되 기 를 기다 리 는 것 을 막 지 않 아 도 된다 는 것 이다. 유한 한 자원 은 다른 작업 에 사용 할 수 있다 는 것 이다.백 엔 드 의 네트워크 서비스 프로 그래 밍 에 적합 한 디자인 입 니 다. Node. js 의 목표 도 여기에 있 습 니 다. 서버 개발 에서 동시 다발 적 인 요청 처 리 는 큰 문제 입 니 다. 차단 식 함 수 는 자원 낭비 와 시간 지연 을 초래 할 수 있 습 니 다. 이벤트 등록, 비동기 함 수 를 통 해 개발 자 는 자원 의 이 용 률 을 높이 고 성능 도 개선 할 수 있 습 니 다.Node. js 가 제공 하 는 지원 모듈 에서 우 리 는
Javascript ,
전통 적 인 언어 와 차이 가 있 습 니 다. 또한 서버 개발 을 편리 하 게 하기 위해 Node. js 의 네트워크 모듈 은 특히 많 습 니 다. HTTP, DNS, NET, UDP, HTTPS, TLS 등 을 포함 하여 개발 자 들 은 이 를 바탕 으로 웹 서버 를 신속하게 구축 할 수 있 습 니 다. 간단 한 helloworld. js 를 예 로 들 면:// require() , require() , JavaScript 。require("http") http 。
var http = require('http');
// http.createServer , web server , , 。
http.createServer(function (req, res) {
// response.writeHead() HTTP 200 HTTP (content-type)
// response.write() HTTP “Hello World"
res.writeHead(200, {'Content-Type': 'text/plain'});
//
res.end('Hello World
');
// http.listen() HTTP 。
}).listen(80, "127.0.0.1");
// console.log , firebug ,Node 。
console.log('Server running at http://127.0.0.1:80/');
위의 코드 는 간단 한 http 서버 를 만 들 었 습 니 다.http://127.0.0.1로 컬 에서 80 포트 를 감청 할 수 있 습 니 다. 임의의 http 요청 에 대해 서버 는 머리 상태 코드 200, Content - Type 값 이 'text / plain' 인 'Hello World' 문자 응답 을 되 돌려 줍 니 다. 이 작은 예 에서 몇 가 지 를 알 수 있 습 니 다.
Node.js , Javascript
서버 를 만 들 었 고, 그것 을 만 드 는 방법 에 함 수 를 전 달 했 습 니 다. Node.js , API 、
왜 이런 시간 구동 이 Node 에 이상 적 입 니까?
익명 함수 와 패 키 지 를 사용 할 수 있 기 때문에 더 중요 한 것 은 코드 를 쓴 사람 은 누구나 문법 을 잘 알 고 있 습 니 다. 이벤트 가 발생 했 을 때 호출 되 는 리 셋 함 수 는 캡 처 이벤트 에서 작성 할 수 있 습 니 다. 코드 를 쉽게 작성 하고 유지 할 수 있 습 니 다. 복잡 한 대상 프레임 워 크 가 없고 인터페이스 가 없 으 며 과도 한 디자인 가능성 이 없습니다. 이 벤트 를 감청 하고 작성 하 십시오.리 턴 함수, 다른 일 은 시스템 에 맡 길 수 있 습 니 다!5 Node. js 의 특징
다음은 Node. js 의 특징 을 말씀 드 리 겠 습 니 다. 이벤트 구동, 비동기 프로 그래 밍 의 특징 은 방금 상세 하 게 말씀 드 렸 습 니 다. 여 기 는 중복 되 지 않 습 니 다.
. 창시자 인 Ryan Dahl 의 말 에 따 르 면 성능 은 Node. js 가 고려 하 는 중요 한 요소 이다. ,
Node. js 는 디자인 에 있어 서도 비교적 대담 하 다. ,
전통 적 인 언어 에 익숙 한 인터넷 서비스 개발 자 들 은 다 중 스 레 드 병행 과 협력 에 익숙 할 수 있 지만 Node. js 에 직면 하여 우 리 는 그 특징 을 받 아들 이 고 이해 해 야 합 니 다. 따라서 우 리 는 이러한 디자인 회 JavaScript
를 추측 할 수 있 습 니까? 눈 에 보 이 는 것 이 사실 입 니 다. 타 오 바 오 공유 데이터 플랫폼 팀 이 Node. js 에 대한 성능 테스트 를 보 는 것 이 좋 지 않 습 니 다.Node.js
현재 제3자 Node. js 다 중 프로 세 스 지원 모듈 이 많이 발표 되 었 습 니 다. 다음 글 은 Node. js 가 다 중 핵 CPU 에서 의 프로 그래 밍 을 상세 하 게 설명 할 것 입 니 다.Node. js 의 또 다른 특징 은 지원 하 는 프로 그래 밍 언어 가 자바 script 이라는 것 입 니 다. 동적 언어 와 정적 언어의 장단 점 에 대한 비 교 는 여기에서 더 이상 토론 하지 않 습 니 다. 세 가지 만 말 합 니 다.
C++ V8 Ruby
helloworld 의 예 에서 우 리 는 리 셋 함수 가 익명 함수 의 형식 으로 실현 되 는 것 을 볼 수 있 고 편리 하 다. 패 킷 을 닫 는 역할 이 더욱 크다. 아래 의 코드 예 시 를 보면 var hostRequest = http.request(requestOptions,f unction(response) {
var responseHTML ='';
response.on('data', function (chunk) {
responseHTML = responseHTML + chunk;
});
response.on('end',function(){
console.log(responseHTML);
// do something useful
});
});
위의 코드 에서 우 리 는 end 이벤트 에서 responseHTML 변 수 를 처리 해 야 한다. 、 ( , ? Javascript ), Node.js , , http ,Node.js
그리고 data 이벤트 에 대응 하 는 리 셋 함수 에서 값 을 계속 수정 하고 최종 적 으로 end 이벤트 에 접근 하여 처리 합 니 다. CPU( ?) ( Java OutOfMemory ?)
.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.