0

kiwiテンプレート エンジンとexpressを使用して、単純な Web アプリを開発しています。ブラウザでアプリを開くと、テンプレートが正しく生成され、結果以外はすべて 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 を送信するにはどうすればよいですか?

更新: OK、私は私のものに似た別のアプリ(express と kiwi の両方を使用) を見つけることができましたが、見つかった唯一の違いはライブラリのバージョンでした。そこで、エクスプレス 3.0.0beta7 をダウンロードしましたが、動作しています。変でしょ?

UPDATE2:バグは 3.0.0rc4 (html 出力) と 3.0.0rc5 (json 出力) の間にあります

UPDATE3:関連する可能性のある変更のみがコミット40be3ed05d9eb1da4568であり、両方とも接続バージョンを変更するか、おそらく8edf358739であると思います

ここでレポを見ることができます: https://github.com/jtojnar/srs

4

1 に答える 1

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を混乱させ、代わりにJSONを返すようにします(またはむしろ作ります)。キウイにはあまり自信がありませんでしたが、結局、代わりにスウィッグを選びました。

于 2013-02-26T12:12:34.840 に答える