1

Express3.xでdustjs-linkedinテンプレートを使用する方法がわかりません。

 #app.js
  var dust = require('dustjs-linkedin');

  app.set('view engine', 'dust');

  app.get('/test1', routes.test1);

#./routes/test.js
exports.test1 = function(req, res){
  res.locals.session = req.session;
  res.render('test1', { title: 'Test 1' } );
};

#./views/test1.dust
{+base.dust/}
{<main}
  Child Content
{/main}

#./views/base.dust
    {+main}
      Base Content
    {/main}

/ test1に移動すると、次のエラーが発生します

500エラー:モジュール「ダスト」が見つかりません

4

3 に答える 3

5

私はあなたと同じ問題を抱えていました。また、dustjs-linkedin を Express 3.xi と一緒に使いやすくするために、小さなライブラリklei-dustをまとめました。ライブラリは簡単にセットアップでき、ビューのルート フォルダーを設定できます。これは、基本テンプレートとパーシャルに適用されます。

したがって、ビュー フォルダーがテンプレートviews/と一緒home.dustにある場合は、次のようになります。base.dusthome.dust

{>base/}
{<main}
Hello world
{/main}

したがって、機能するために書く必要はありませんviews/base.dust

于 2012-09-24T19:33:39.490 に答える
3

consolidate モジュールを使用して、dustjs-linkedin の動作バージョンを取得することができました。

https://github.com/chovy/express-template-demo

参考までに、レイアウトは二重引用符で囲む必要があります...これは私にとって大きな落とし穴であり、app.js ファイルに関連しており、末尾に / が必要です

{+"views/base.dust"/}
<p>Page content here</p>
于 2012-09-23T21:04:27.303 に答える
0

dustjs-linkedinでexpress3.xを使用する方法を説明します。

1)Expressには2つの設定があります。「ビューエンジン」とapp.engine

「viewengine」はデフォルトを設定するだけで、そのapp.engineは特定のファイル拡張子に使用するエンジンをマップするだけです。

したがって、次のようなことを行う必要があります。

   app.set('view engine', 'dustjs-linkedin');
   app.set('views', __dirname + '/views');
   app.engine('dust', dust.compileFromPath);

これに関する唯一の問題は、メソッドcompileFromPathがdust:pに存在しないことです。

Expressが期待する次のシグネチャを使用してdustオブジェクトにメソッドを追加する必要があります:(パス、オプション、コールバック)

これについて詳しくは、http: //expressjs.com/api.html#app.engineをご覧ください。

もう1つのオプションは、consolidate(http://spalatnik.com/blog/?p=54)を使用することですが、残念ながら、Consolidateはdustjs-linkedinバージョンをサポートしておらず、古いダストバージョンのみをサポートしています。

于 2012-09-19T15:16:32.010 に答える