2013-04-02 4 views
0

저는 노드에 초보자인데 비취 엔진 템플릿 엔진을 사용하려고하며 github 페이지에서 ReadMe를 읽었습니다. 직장 :Jade를 Node.js와 함께 사용하는 방법을 이해하려고 시도합니다.

var http = require('http'), 
    jade = require('jade'), 
fn = jade.compile('html p hello'); 

function onRequest(req, res) { 
    res.writeHead(200, {"Content-Type": "text/html"}); 
    res.write('Hello World!'); 

    fn; 


    res.end(); 
} 

http.createServer(onRequest).listen(8888); 
console.log('Server started.'); 

하지만, 내가 잘못한 것을 누군가에게 설명 할 수는 없습니까? 고마워요!

+0

그것은 autamagic 아니에요, 당신은 응답에 컴파일 된 옥을 써야만합니다 –

답변

0

이 줄의 코드 :

fn; 

중 & hellip; fn를 호출하지 않습니다. 변수 fn의 값을 검색 한 다음 아무 것도하지 않고 버립니다.

res.end(fn()); 

또한, html p hello 당신이 그것을하지 생각하지 않습니다 : 대신, 당신은 그것을 호출 한 후 res.end 인수로 반환 값을 사용하려면 그것은 텍스트, 당신은 태그, html을 원하는 생각 그것에있는 p hello. 그것은 당신이 원하는 것이 아닙니다. 당신은 줄 바꿈과 올바른 들여 쓰기를 사용해야하고 그것을 작동합니다 : 당신이 옥을 사용하려고하는 경우

html 
    p hello 

을 그건 그렇고, 당신은 할 수 없습니다 할 수 외부

res.write("Hello World!"); 
+0

답장을 보내 주셔서 감사합니다, 그 작품! 준비가되면 곧 답변을 선택하겠습니다. 예, 안녕하세요. 서버가 실행되고 있는지 확인하는 것입니다. – Datsik

2

Jade는 작업하기 위해 적절한 줄 바꿈이 필요합니다. 그리고 적절한 줄 바꿈은 인라인 자바 스크립트에서보기 흉합니다. (또한 Jade를 사용한 템플릿 적용의 이점은 코드의 뷰 로직이없는 등 관심사를 분리하는 것입니다.

이 작업을 수행하는 가장 쉬운 방법은 파일에 템플릿을 분리하는 것입니다

tpl.jade

doctype 5 
html 
    body 
    p hello 

하는 index.js

var http = require('http') 
    , jade = require('jade') 
    , path = __dirname + '/tpl.jade' 
    , str = require('fs').readFileSync(path, 'utf8') 
    , fn = jade.compile(str, { filename: path, pretty: true }); 

function onRequest(req, res) { 
    res.writeHead(200, {"Content-Type": "text/html"}); 
    res.write(fn()); 
    res.end(); 
} 

http.createServer(onRequest).listen(8888); 
console.log('Server started.'); 
+0

__dirname은 무엇을합니까? – Datsik

+0

@XCritics,'pretty'는 Jade에게 멋진 찾고 들여 쓰기 된 출력을 내도록 알려줍니다. __dirname은 실행중인 스크립트가 http://nodejs.org/docs/latest/api/globals.html#globals_dirname에있는 현재 디렉토리를 참조하는 node.js의 전역입니다. – methai

관련 문제