0

私は、ExpressJS と NodeJS で DustJS を使用しています。

ExpressJS がレンダリングされると、dustJS の新しい行と空白が自動的にエスケープされます。私は JavaScript を DustJS テンプレートに入れているので、空白をそのまま残したいと思っています。

それを達成する方法は?

どうもありがとう。

更新:ここにいくつかの詳細な説明があります:

私のtemplate.dustには、次のようなものがあります。

 <script type='template' id="tempVO">{.vo|s}</script>
 <script>  {! Block to compile the dustJS into cache !}
 $(function($){
   dust.compile($("#tempVO").html(),"vo");

   // register helper
   dust.helpers.justToString = function(chunk, ctx, body, param){
     console.log(param);
   }
 })();

次のようにして、expressJS で使用した場合の DustJS のデフォルトの動作:

app.get("/",function(req,res){
  res.render("ajaxTemplate",xmlService.templates);
});

すべての空白をエスケープして、次のようになります。

 $(function($){dust.compile($("#tempVO").html(),"vo");// register helperdust.helpers.justToString = function(chunk, ctx, body, param){console.log(param);}})();// AJAX Callback</script><script>$(function(){$(".tipNeeded").tooltip();$(".tabsNeeded").tabs();});

これは確かに私が望むものではありません.]

次のような外部 JavaScript インポートを使用することもできますが、

  <script src="my/own/beautiful.js"></script>

それでも、dustJS ファイルをレンダリングするときに、空白をエスケープせずに HTML スクリプト内に配置する方法を知りたいです。

4

1 に答える 1

1

空白抑制の制御に関するダスト チュートリアルから、正確な方法は使用しているバージョンによって異なります。v1.2.6 (この記事の執筆時点で最新) を使用している場合は、次の行をコードに追加します。

dust.optimizers.format = function(ctx, node) { return node };

簡単にテストするには、dustjs-linkedin モジュールの require の直後に次の行を追加します。

var dust = require('dustjs-linkedin');

編集:

バージョン 1.2.0 から 1.2.5 まで、コンパイル関数は 3 つの引数を取ります。

dust.compile = function(source, name, strip)

stripが設定されている場合false、空白は保持されます。ただし、この引数は1.2.6 で削除されたようです。strip引数を持つバージョンでも、expressdust.compileを使用する場合、直接呼び出すことはありません。consolidate.jsのようなものをベースとして使用して、空白を含むものと空白を含まないものの 2 つのレンダリング呼び出しを作成できるかもしれませんが、単純な方法はわかりません。

于 2013-06-10T13:23:35.733 に答える