我正在使用kiwi模板引擎和express开发一个简单的网络应用。当我在浏览器中打开我的应用程序时,模板正确生成,除了结果之外的所有内容都是JSON编码的。 我尝试设置res.type('html'),但这似乎只会改变应用程序发送的mime。我还没有使用任何AJAX请求。
我有以下代码:
"use strict";
var express = require('express');
var path = require('path');
var publicDir = path.join(__dirname, 'public');
var app = express();
app.configure(function(){
app.set('views', __dirname + '/view');
app.engine('kiwi', require('kiwi').__express);
app.set('view engine', 'kiwi');
app.use(require('less-middleware')({ src: publicDir }));
app.use(express.favicon());
app.use(express.static(publicDir));
});
app.configure('development', function(){
app.use(express.logger());
});
app.get('/', function(req, res){
res.render('index', {title: 'kiwi'});
});
app.listen(process.env.PORT || 8080);
我使用这样的布局文件(为了便于阅读,删除了大部分布局html):
<div class="container">
{{block content}}{{/block}}
</div>
这是index.kiwi文件:
{{extend 'layout'}}
{{block content}}
<p>Hi ${title}</p>
{{/block}}
这是我在浏览器中看到的(与text / json mime一起发送):
"<div class=\"container\">\n\t\n<p>Hi kiwi</p>\n\n</div>"
如何让它发送普通的HTML?
更新:好的,我设法找到与我类似的another app(同时使用快递和猕猴桃),我发现只有库版本。所以我下载了快递3.0.0beta7,它正在工作。很奇怪吧?
UPDATE2:错误介于3.0.0rc4(html输出)和3.0.0rc5(json输出)之间
UPDATE3 :我认为只有相关的更改才能提交40be3ed05d和9eb1da4568,无论是更改连接版本还是8edf358739
您可以在此处查看回购:https://github.com/jtojnar/srs
答案 0 :(得分:1)
FWIW(阅读你的编辑,只是分享;):我最近检查了Kiwi模板并遇到了同样的问题。
我当时的解决方法是:
this.engine('kiwi', function(filename, options, callback) {
kiwi.__express(filename, options, function(err, rendered) {
if (! is_production && err)
console.error(err);
callback(err, rendered.toString());
});
});
rendered
参数不是字符串,而是对象。这使得Express和make(或者更确切地说:make)混淆了它返回JSON。没让我对新西兰人充满信心,最后我去了swig。