使用swig模板渲染文件而不使用express

我一直使用swig(django风格模板引擎)和express。 我试图在请求/渲染之外使用swig,并简单地将上下文传递给标记为swig的文件,并让它生成HTML。

没有使用快递我无法弄清楚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似乎工作正常。)

显然有一些我不了解的东西,或者我需要在范例之外join。

更新:在注释后添加swig的版本号,以清楚我正在使用的版本。

从原始问题的评论:

它看起来像你试图使用Swig@~1.0,但你给的链接指向Swig@0.14.0。 Swig的API在v0和v1之间发生了巨大的变化。

有关当前支持版本的文档可以在http://paularmstrong.github.io/swig/上find

你看过https://github.com/assemble/assemble ? Assemble是一个基于Grunt的静态站点生成器,使用起来非常简单,Swig是Assemble的引擎之一。 这里有一些资源:

这里是一些渲染大头模板的步骤。 1.使用命令npm install swig --save

创buildserver.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); 

创buildindex.html模板文件为。

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

你需要告诉swig的模板path?

 var swig = require('swig'); swig.init({ root: __dirname + '/templates' }); var tmpl = swig.compileFile('home.html'); tmpl.render({ pagename: 'awesome people', authors: ['Paul', 'Jim', 'Jane'] });