1

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

如果不使用 express,我无法弄清楚 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']
});

rendertmpl 对象上不存在错误提示?(compileFile 似乎工作正常。)

显然有些东西我不理解,或者我需要在示例之外包含一些内容。

更新:在评论后添加了 swig 的版本号,以明确我正在使用的版本。

4

4 回答 4

2

从对原始问题的评论:

看起来您正在尝试使用 Swig@~1.0,但您提供的链接指向 Swig@0.14.0。Swig 的 API 在 v0 和 v1 之间发生了巨大变化。

当前支持的版本的文档总是可以在http://paularmstrong.github.io/swig/找到

于 2013-10-24T15:48:55.413 回答
2

你看过https://github.com/assemble/assemble吗?Assemble 是一个基于 Grunt 的静态站点生成器,非常好用,Swig 是 Assemble 的引擎之一。以下是一些资源:

于 2013-11-17T09:10:26.010 回答
2

这是渲染 swig 模板的一些步骤。1.使用命令安装swignpm 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>
于 2014-07-19T10:31:23.043 回答
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']
});
于 2013-10-22T21:45:35.737 回答