2012-09-19 1 views
1

노드를 배우려고합니다. 콧수염과 노드를 사용하여 정적 html 파일을 제공하고 싶습니다. 이 코드를 사용하여 서버를 시작하기위한 나는 모듈을 만들 :노드 js 및 콧수염

var http = require("http"); 
function startServer(){ 
    function onRequest(request,response){ 
     console.log("Request received"); 
     response.writeHead(200, {"Content-type" : "text/html" }); 
     response.write("hello"); 
     response.end(); 
    } 
    console.log("The server is running at http://localhost:8888"); 
    http.createServer(onRequest).listen(8888); 
    } 

exports.startServer = startServer; 

을 한 후 나는 indexjs 파일에이 작업을 수행 :

var server = require("./server"); 
var util = require("util"); 
var fs= require("fs"); 
var mu = require("mu2"); 

function renderIndex(){ 
    var streamIndex = mu.compileAndRender('index.html',{"name" : "Antonio"}); 
    util.pimp(streamIndex, response); 
} 

server.startServer(renderIndex); 

내가 완전히 잘못 뭔가를하고있어 것을 알 수 있지만, 오류가 어디 있는지 알 수 없습니다. nodejs에 대해 읽은 두 개의 자습서를 병합하려고했습니다.

P.S : 나는 익스프레스 또는 다른 프레임 워크를 사용할 수 있다는 것을 알고 있지만 실제로 작동하는 방법을 이해하기 위해 nodejs를 처음부터 사용하고 싶습니다.

+0

실제로 실패한 곳을 알려주십시오. 브라우저에서 페이지로드가 발생하지만 템플릿이 실패합니까? 아무것도 표시하지 않습니까? – Geuis

+0

페이지를 전혀로드하지 않습니다. 나는 renderIndex 함수를 호출해야한다는 것을 알고 있지만, 서버처럼 페이지를로드 할 수없는 것처럼 보일지라도 전체 아이디어는 표현식이나 다른 프레임 워크를 사용하지 않는 이유입니다. –

답변

3

먼저 코드는 renderIndex()을 호출해야합니다. 둘째, 콧수염을 마지막으로 살펴본 이후 심각하게 다시 쓰지 않는 한, mu.compileAndRender은 보통 httpResponse s write 또는 end 메쏘드를 사용하여 보내야하는 문자열을 돌려 줄 것입니다. util.pimp은 오타입니다 (감탄할만큼 충분히 재미있는 것은 사실이지만). util.pump이 이제 비추천이며, readStream이있는 경우 pipe 메소드를 writeStream (예 : httpResponse)에 해당하는 인수로 호출하는 것이 좋습니다.

나는 당신이 너무 많은 것을 한꺼번에 배우려고하고 있다고 생각한다; 먼저 express을 사용하여 라우팅 및 유사 항목 (당분간 표현의 템플리트/렌더링 능력 무시)을 처리 한 다음 렌더링 및 템플리트 작업 (콧수염은 매우 일반적이고 인기가 있기 때문에 익스프레스 개발자들은 이미 그것을 통합했을 것입니다. 그러나 어떤 이유로 그들은 그렇지 않습니다).

+0

Express를 사용하면 nodej를 익히는 데 도움이 될 것이라고 생각합니까? 내 생각은 프레임 워크없이 직접 노드를 사용하여 시작하는 것이 었습니다. jquery와 javascript와 같을 것입니다. –

+0

한 번에 얼마나 많은 내용을 배울 필요가 있는지에 대한 질문입니다. 때로는 원시 수준에서 시작한 다음 그것에 기초한 무언가를 배우는 것이 좋습니다. 반대의 경우는 사실입니다. 대부분의 사람들에게, 그것들을 번갈아하는 것이 가장 좋습니다. '고급'(예 : 표현식 또는 jquery)을보고 이해 한 다음 노드의 http 모듈 또는 DOM API와 같이 '하위 수준'항목으로 변환되는 방식에 대해 생각해보십시오. 핵심은 다른 개념 수준을 서로 멀리 떨어지지 않게 유지하는 것입니다. – ebohlman