2013-10-22 85 views
1

我一直使用swig(django風格模板引擎)和express。我試圖在請求/渲染之外使用swig,並簡單地將上下文傳遞給標記爲swig的文件,並讓它生成HTML。使用swig模板渲染文件而不使用快遞

我無法弄清楚沒有使用快遞的API。

從網站,他們有這樣的例子,我不能去上班: https://github.com/paularmstrong/swig/tree/bd3f5a0dc08078ffd4372fa61248f8d50d8cbbf8

var template = require('swig'); // v1.1.0 
var tmpl = template.compileFile('/path/to/template.html'); 
tmpl.render({ 
    pagename: 'awesome people', 
    authors: ['Paul', 'Jim', 'Jane'] 
}); 

有一個錯誤說render沒有了TMPL對象上存在嗎? (compileFile似乎工作正常。)

顯然有一些我不理解,或者我需要在示例外包括。

更新:在評論後添加了swig的版本號,以明確我正在使用的版本。

+1

您是否正在使用已棄用的v0.14.0或v1.0.0?你給的鏈接是v0.14.0,但是你對Kim T的回答的評論使它看起來像你不是。 –

+0

嗨。這是問題。新版本與舊文檔一起使用。是的,我正在使用swig v1.1.0的最新版本。它的工作原理 - 像蘋果派一樣簡單 - 在引用當前文檔之後:http://paularmstrong.github.io/swig/ –

+0

@PaulArmstrong不知道如何在評論中回答問題。你能正式回答,我可以接受嗎? –

回答

0

您是否需要告訴swig模板的路徑?

var swig = require('swig'); 
swig.init({ root: __dirname + '/templates' }); 

var tmpl = swig.compileFile('home.html'); 
tmpl.render({ 
    pagename: 'awesome people', 
    authors: ['Paul', 'Jim', 'Jane'] 
}); 
+0

Hi Kim。感謝你的回答。用'swig.init'我得到'TypeError:Object#沒有方法'init'。但是,我直接將完整路徑傳遞給compileFile('full/path/home。HTML');這工作是因爲它將數組中的編譯好的html給回了。我認爲這個問題是另一回事。 –

2

下面是一些步驟,以使痛飲模板。 1.使用命令npm install swig --save

- 創建server.js

var http = require('http'), swig=require('swig'); 
http.createServer(function(request, response){ 
var tpl = swig.compileFile('index.html'); 
renderedHtml = tpl({ 
         say:'hello word' 
        }); 
response.writeHead(200, { 'Content-Type': 'text/html' }); 
response.end(renderedHtml); 
}).listen(8080); 

- 創建index.html的模板文件安裝痛飲。

<html> 
    <head> 
    <meta charset="utf-8" /> 
    </head> 
    <body> 
    <h2>{{say}}</h2> 
    </body> 
    </html> 
+0

pleaseeeeeee不要shoutttttt! –

+0

對不起,我遲到了。由於一些個人問題。謝謝@ Paresh Mayani。 –