我使用swig(django风格模板引擎)一直成功表达。我正在尝试在请求/渲染之外使用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']
});
有一个错误说tmpl对象上不存在render
?
(compileFile似乎运行正常。)
显然我不理解或需要在示例之外包含这些内容。
更新:在评论后添加了swig的版本号,以明确我正在使用的版本。
答案 0 :(得分:2)
来自对原始问题的评论:
看起来您正在尝试使用Swig@~1.0,但您提供的链接指向Swig@0.14.0。 Swig的API在v0和v1之间发生了巨大的变化。
找到当前支持的版本的文档答案 1 :(得分:2)
你看过https://github.com/assemble/assemble了吗? Assemble是一个基于Grunt的静态站点生成器,它非常易于使用,而Swig是Assemble的引擎之一。以下是一些资源:
答案 2 :(得分:2)
以下是渲染swig模板的一些步骤。 1.使用命令npm install swig --save
-create 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);
-create index.html模板文件为。
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<h2>{{say}}</h2>
</body>
</html>
答案 3 :(得分: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']
});