2013-10-22 45 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。 –