1

私はノードとエクスプレスを最も単純なものから学んでおり、ビューをレンダリングするときにres.render('view',{data:data})、ビューに収まるのはヒスイのようなテンプレートエンジンだけです。通常のhtmlは使えないのですか?

4

2 に答える 2

1

できますが、これは私がNodeを学習しているときに遭遇した問題です。テンプレートエンジンを使用したくない場合でも、Nodeに静的な方法でHTMLファイルのコンテンツを吐き出させることができます。例(非常に基本的な例):

var base = '/path/to/your/public_html',
  fs = require('fs'),
  http = require('http'),
  sys = requrie('sys');

http.createServer(function (req,res) {
  path = base + req.url;
  console.log(path);

  path.exists(path, function(exists) {
    if(!exists) {
      res.writeHead(404);
      res.write('Bad request: 404\n');
      res.end();
    } else {
      res.setHeader('Content-Type','text/html');
      res.statusCode = 200;
      var file = fs.createReadStream(path);
      file.on("open",function() {
        file.pipe(res);
      });
      file.on("error",function(err) {
        console.log(err);
      });
    }
  });
}).listen(80);

console.log('server on tcp/80');
于 2013-02-25T07:29:16.350 に答える
0

Nodeの優れている点は、テンプレートをロジックから分離する必要があることです(ある程度までは、とにかく多くのロジックをテンプレートに詰め込むことができます)。

私はJadeが好きではなく、クライアント側のEJSがサーバー側とは異なり、ブラウザーでテンプレートを実際に再利用できないことが判明するまでEJSを使用していました(ページのレンダリングを開始するときに必ず必要になるため)ブラウザで)。単純なEJSテンプレートを再利用することはできますが、パーシャルを含むテンプレートを再利用することはできません(ほとんどのテンプレートがそうであるように)。

多くの検索と試行錯誤の末、非常に高速(実際には最速)、軽量(JavaScriptのわずか140行)で、Expressに簡単に統合できるdoTテンプレートを使用することになりました(以下を実行することにより)統合のパターン-統合をdoTで直接使用することはまだできません)、ブラウザーで使用できます(パーシャルをロードする機能は異なる必要がありますが、これも簡単です)。

doTには、他のテンプレートエンジンには見られない機能があるようです。非常にエレガントな構文で、ハンドルバー(私のお気に入り)に最も近いですが、内部で通常のJavaScriptを使用できます(そのため、最初にEJSを選択しました)。

于 2013-02-26T21:32:02.147 に答える