2016-08-30 2 views
3

로컬 컴퓨터에 Node.js 웹 응용 프로그램을 쓰고 싶을 때 WAMP 또는 MAMP를 사용하여 로컬 서버를 설정할 필요가 없습니다. node.js가 실제로 배후에서 무엇을하고 있습니까? 나는 간단한 인사 세계 웹 응용 프로그램을 만들기 위해이 코드를 제공하고 있습니다 : 브라우저의 URL 표시 줄에로드 할 때Node.js를 사용하여 로컬 서버를 설정할 필요가 없습니까?

var http = require("http"); 

http.createServer(function(request,response){ 

    response.writeHead(200, {"content-type":"text/html"}); 
    response.write("hello world"); 
    response.end(); 

}).listen(8080); 

console.log("server is running...."); 

"로컬 호스트 : 8080"가 작동합니다.

Node.js로 작업 할 때 어떻게 작동하며 왜 로컬 서버가 필요하지 않은가?

답변

3

로컬 서버가 있습니다 ... Node.js 응용 프로그램입니다.

http.createServer()으로 전화하면 HTTP 서버가 만들어집니다. 해당 서버에서 .listen()으로 전화하면 요청 된 포트와 선택적으로 요청 된 주소에 바인딩되고 연결을 수신 대기합니다. 이러한 연결에서 데이터가 들어 오면 다른 HTTP 서버와 마찬가지로 응답합니다.

는 HTTP 서버가 유효한 HTTP 요청이 들어올 때마다 발사, 요청/응답 콜백을 사용합니다.

+0

http.createServer (에서 당신에게 기능을 많이 제공하는 익스프레스 JS 모듈을) 가져 가라. 그러나 호스팅 웹 사이트에 내 웹 사이트를 넣을 때 "createServer()"메서드를 사용해야합니까? 내 웹 사이트가 원격 서버에 이미 업로드 되었기 때문에 나는 아니오라고 생각합니까? 이건 정말 혼란 스럽군. –

+1

@FaisalJulaidan 귀하의 노드 앱이 웹 서버 내에서 실행되고 있지 않습니다. Node.js 애플리케이션은 통신 할 방법이 필요합니다. 그것은 일반적으로 HTTP입니다. Nginx와 같은 웹 서버를 응용 프로그램 앞에 두는 것이 일반적이지만 HTTP 서버는 여전히 응용 프로그램과 통신하기 위해 HTTP를 사용합니다. – Brad

+0

까지 내가 당신의 의견에서 이해할 수있는 서버의 두 가지 유형이 있다는 1.HTTP 서버 2. 웹 서버? 그렇다면 무엇이 다른가요? :) ** 당신을 방해해서 미안 해요 ** –

2

를 노드 당신이 웹 서버를 실행하는 데 필요한 모든 라이브러리는 HTTP 라이브러리와 상자에서 나오는 때문에 그 당신은 8080 포트를 열고 당신이

이 부분

를 제공하는 기능을 가진 요청을 처리하는 사용 :

function(request,response){ 

    response.writeHead(200, {"content-type":"text/html"}); 
    response.write("hello world"); 
    response.end(); 

} 
0

아니, 당신이 그것을 필요하지 않습니다. 자신의 예제처럼 노드 자체가 웹 서버가 될 수 있기 때문입니다. 노드는 크롬 자바 스크립트 엔진 인 V8을 기반으로합니다.

은 이제 의미가 않습니다, 나를 위해 서버를 만들 않는 모습을 상자

+1

V8을 기반으로하는 것은 실제로 * 왜 * 노드가 웹 서버로 작동 할 수 있는지 설명하지 않습니다. 이는 Node에 내장 된 HTTP 라이브러리와 더 관련이 있습니다. – ssube

관련 문제