1. 설치
먼저 http://nodejs.org로 이동하여 다운로드 및 설치하십시오. 내가 다운 버전은 0.8.14입니다. 설치는 매우 간단하며 다음 단계는 다음 단계입니다. 그런 다음 경로에서 설치 디렉토리를 구성하면 MSI가 NPM (Node Package Manager)을 함께 설치합니다.
설치 디렉토리는 C :/Program Files (x86)/nodejs입니다. 현재 CMD 명령 창 node -v 및 npm -v 명령을 사용하여 NPM -V 명령에서 설치된 버전을보십시오.
1.1. Helloworld
node.js 프로젝트 디렉토리에서 새 파일 Hello.js를 만들고 코드 라인을 입력하십시오.
Console.log ( 'hello, nodejs.');
명령 줄 콘솔을 입력하고 Node.js 프로젝트 디렉토리를 입력하고 Node Hello.js를 입력하십시오.
콘솔 출력 "안녕하세요, Nodejs."
1.2. Helloworld의 웹 버전
node.js 프로젝트 디렉토리에서 새 http.js를 만듭니다. 코드는 다음과 같습니다.
var http = require ( "http"); http.createserver (function (request, response) {response.writehead (200, { "content-type": "text/html"}); response.write ( "hello world!"); response.end ();};명령 줄에서 서비스를 시작하고 노드 http.js를 클릭하십시오.
그런 다음 브라우저 주소 표시 줄을 열고 http : // localhost : 8000/을 입력하고 Hello World를 참조하십시오! 페이지에서 출력하면 성공합니다.
node.js의 버전은 API와 동기화되어야합니다.
node.js의 버전 번호는 일반이며 버전도 안정적인 버전이며 홀수 버전은 비 안정적인 버전입니다.
2 Helloworld 코드 분석
좋아, 지금부터 HelloWorld 라인을 분석하십시오.
모듈을 소개합니다
var http = 요구 사항 ( "http");
요구 방법은 모듈을 소개하는 데 사용되며 매개 변수는 모듈의 이름입니다. 예를 들어, 파일 시스템 모듈은 다음과 같이 도입 될 수 있습니다.
var fs = 요구 ( "fs");
우리는 require () 메소드를 글로벌 메소드로 사용할 수 있지만 실제로는 특정 모듈에 속하는 로컬 메소드와 비슷합니다. 문서는 여기에 있습니다 : https://nodejs.org/api/globals.html.
요구 메소드는 요구 사항 ( "http")과 같은 특정 모듈의 인스턴스를 반환하여 HTTP 인스턴스를 반환합니다. http 인스턴스에 대한 참조 문서는 다음과 같습니다. https://nodejs.org/api/http.html.
HTTP 모듈에는 메소드 CreateServer ()가 있는데, 여기에는 두 번째 코드 줄이 포함됩니다.
서버를 만듭니다
HTTP 모듈의 CreateServer () 메소드는 메소드를 매개 변수로 받아들이고 프로토 타입은 다음과 같습니다.
http.createserver ([requestListener])
requestListener는 http.server 클래스의 요청 이벤트와 관련된 메소드입니다. 이러한 방식으로 클라이언트 요청이 도착하면 requestListener가 호출됩니다.
RequestListener에는 두 가지 매개 변수가 있으며 기능 프로토 타입은 다음과 같습니다.
함수 (요청, 응답) {} 첫 번째 매개 변수 요청 유형은 http.IncomingMessage 이며 Readable Stream 인터페이스를 구현합니다.
두 번째 매개 변수의 유형은 http.ServerResponse 이며, 이는 Writeable Stream 인터페이스를 구현합니다.
스트림 API는 여기에 있습니다 : https://nodejs.org/api/stream.html. 동시에 요청 및 응답은 특정 이벤트를 방출 할 수있는 이벤트 메미터입니다.
Eventemitter API는 여기에 있습니다 : https://nodejs.org/api/events.html#events_class_events_eventimitter. 나중에 우리는 이벤트 미터를 사용하여 이벤트를 시작하고 처리하는 방법에 대해 이야기 할 것입니다.
서버를 만든 코드를 검토합시다.
http.createserver (함수 (요청, 응답) {response.writehead (200, { "content-type": "text/plain"}); response.write ( "Hello World!"); response.end ();}). 듣기 (8000);http.createserver http.server 인스턴스를 반환합니다. http.server의 청취 방법은 서버가 예제에서 8000 인 특정 포트에서 청취 할 수 있습니다.
보시다시피, 우리는 CreateServer 메소드에 익명 기능을 제공합니다. 이 방법에서 우리는 "Hello World!" 응답 매개 변수를 통해 클라이언트에게 메시지를 보내십시오.
클라이언트 요청을 분석합니다
우리는 일찍 http.createserver 메소드를 분석했습니다. 매개 변수는 두 매개 변수가있는 메소드입니다. 하나는 클라이언트가 보낸 요청을 나타내고 다른 하나는 클라이언트에게 다시 쓰는 응답을 나타냅니다. 요청 매개 변수를 살펴 보겠습니다.
요청은 http.IncomingMessage 의 인스턴스입니다. 이 인스턴스를 통해 http 메소드, http 버전, URL, 헤더 등과 같은 요청 매개 변수를 얻을 수 있습니다. 특정 API는 다음과 같습니다.
helloworld.js (helloworld2.js로 저장)를 수정하여 살펴 보겠습니다. 코드는 다음과 같습니다.
// HTTP 모듈 소개 var http = require ( "http"); // 서버를 작성하고 클라이언트 요청을 처리하는 함수를 지정하여 http.createserver (function (request, response) { "method-" + request.method); console.log ( "version -" + request.httpversion); console.log ( "url-" + request.url); response.wrl (200, content-type. "텍스트"}). Console.log ( "Hello World Start Listen in 8000");보시다시피, 콘솔 객체를 사용하여 일부 디버깅 정보 및 HTTP 방법, 버전, URL 및 기타 정보를 인쇄했습니다. Node Helloworld2.js를 실행할 수 있고 브라우저는 http : // localhost : 8000을 방문한 다음 명령 줄로 실행하여 출력이 어떤 정보인지 확인합니다. 나는 이렇게 :
간단한 Helloworld는 이미 클라이언트에게 응답 데이터를 보낼 수 있으며 "Hello World!"라는 단어를 볼 수 있습니다. 브라우저에서. 이 응답은 http.ServerResponse 의 인스턴스 response 통해 클라이언트에게 전송됩니다.
http.ServerResponse 는 또한 Stream 또는 이벤트 미터입니다. 이를 통해 HTTP 상태 코드, 데이터, HTTP 헤더 및 기타 정보를 클라이언트에 반환합니다.
HTTP 모듈
Node.js의 HTTP 모듈에서 상태 라인은 http.serverresponse의 WriteHead 메소드를 통해 클라이언트에게 기록됩니다. Writehead 메소드의 프로토 타입은 다음과 같습니다.
response.writehead (statusCode [, statusMessage] [, 헤더]))
이 메소드의 첫 번째 매개 변수는 상태 코드이며, 이는 200 및 403과 같은 숫자입니다. 나머지 매개 변수는 선택 사항입니다. 마지막 매개 변수는 JSON 객체 표기법을 사용하여 {“Content-Type”:”text/plain”,”Content-Length”:11} 과 같은 일부 HTTP 헤더를 작성할 수있는 헤더입니다. 첫 번째 선택적 매개 변수 상태 상태는 상태 설명 메시지를 지정하는 데 사용됩니다.
HTTP 헤더
헤더는 키 값 쌍입니다. 예를 들어, Helloworld에서 볼 수있는 "컨텐츠 유형"은 데이터 유형을 나타내는 데 사용되는 헤더 태그이며, 이는 텍스트 파일, 그림, 비디오, 바이너리 등에 해당 할 수 있습니다. 마찬가지로 "Content-Length"는 데이터 길이를 지정하는 데 사용됩니다. "날짜", "연결"등과 같은 더 많은 것이 있습니다. 이전 링크를 참조하십시오.
헤더는 http.serverresponse의 response.setHeader(name, value) 메소드를 사용하여 별도로 설정할 수 있으며 한 번에 하나의 HTTP 헤더를 설정할 수 있습니다.
데이터
헤더 후에는 데이터가 있습니다. 200과 같은 일부 상태 코드에는 향후 일부 데이터가 있습니다. 301, 404, 403, 500과 같은 일부는 대부분 데이터가 없습니다.
데이터는 http.serverresponse의 쓰기 방법을 통해 클라이언트에게 다시 기록됩니다.
response.setheader ( "Content-Type", "Text/Html");
여기에는 두 가지 일반적인 HTTP 데이터 전송 인코딩 방법이 있음을 언급해야합니다.
컨텐츠 길이, 전송 고정 길이 데이터를 설정하고, 전송 인코딩 헤더를 청크로 설정하고, 청크에서 데이터 전송 데이터를 전송합니다.
현재 HelloWorld 예제와 마찬가지로 컨텐츠 길이 헤더를 설정하지 않고 Node.js의 http 모듈을 청크 인코딩으로 설정합니다.
Chrome Browser의 개발자 도구를 사용하여 명확하게 볼 수있는 네트워크 데이터를 볼 수 있습니다. 아래 그림과 같이 :
HTTP 응답
내가 표시 한 세 가지 점은 Helloworld 예제에 의해 브라우저에 전달 된 HTTP 헤더 정보입니다.
http.serverresponse의 쓰기 방법을 통해 클라이언트에게 데이터를 작성합니다. 모든 데이터를 한 번에 작성하거나 데이터를 별도로 그리고 여러 번 쓸 수 있습니다. 전송할 데이터의 양이 클 경우 여러 번 쓰기는 것이 더 합리적인 접근법입니다. 예를 들어, 큰 파일을 클라이언트에 보내면 여러 번 쓰기에 더 적합합니다. Node.js의 비동기 기능을 사용하여 우수한 성능을 얻을 수도 있습니다.