2011-06-24 6 views
2

更新クライアントサイドのテンプレートをコンパイルしないようにして、ローカルのAntビルドプロセス中にコンパイルしたいと思っています。おそらく、サイにjQueryとjQueryのテンプレートを読み込む$.template()関数に順番に各.jstファイルの内容を渡し、そして含まれている必要があります「templates.js」構築のようなもの:この道をプロジェクトビルドの関数にJavaScriptテンプレートをあらかじめコンパイルする

$.template['model-view'] = resultingFunction.toString(); 
// 1 for each .jst file 

は、私が維持することができます各テンプレートを別々のファイルに入れ、すべてのクライアントが同じテンプレートを重複してコンパイルするのを避けます。私はjQueryのテンプレートを使用しています、とjQueryでプロジェクトが構築されたときに自分のファイル(例えばモデルview.jst)関数にコンパイルされているにそれらを分離することを望んでと利用できるようになりました


後で使用するための.tmpl()スコープ例えば

、ファイルモデルview.jst

<li>${name}</li> 

このファイルを与えられ、他のすべての.jstのファイルは、後にどこでも使用できる関数にコンパイル、ビルドにピックアップする必要がありますそのようなプログラム:

$.tmpl('model-view', { 
    name: 'Matt' 
}); 
+0

答えとして期待しているものは、ビルドスクリプトですか。あなたのビルドステップは実際には* .jstファイルを読み込み、 'modelView ="

  • $ {name}
  • "'(文字列の内容を正しくエスケープすることを忘れないでください)のようなものに変換する必要があるからです。 '$ .tmpl(modelView、{...}) 'を呼び出すと動作します。 –

    +0

    私はあなた自身が解決策を見つけたと思う。 –

    +0

    私は、何をする必要があるかという大まかな考え方をしています。 jQueryとjQueryのテンプレートをRhinoにインポートしようとするときの最大の問題は、RhinoにはないDOMが必要だということです。私は最初にRhinoに "ヘッドレス"ブラウザをインポートしてそこから行くことができるかもしれません。 –

    答えて

    1

    のホープ、あなたのコードのどこにでも使用することができます私はこの問題をNode.jsとcoffeescriptを使って部分的にディレクトリを実行ファイルにすることで解決しました事前にコンパイルされた関数を呼び出すことができます。お役に立てれば。

    https://github.com/wookiehangover/jquery-tmpl-jst

    0

    私はあなたがそれを好きか、君にjsの共通ライブラリを

    を:)ないこのFUNCを定義する場合、あなたが決めさせン:

    function loadTemplate(templateName) { 
        $.ajax({ 
         url: templateName + '.jst', 
         success: function(data) { 
         $.template(templateName, data); 
         }}); 
    } 
    

    は次に、あなたに追加できるHMLファイル<head></head>セクションをマスター:

    <script type="text/javascript">loadTemplate('model-view');</script> 
    <script type="text/javascript">loadTemplate('another-model-view');</script> 
    

    ので、あなたが

    $.tmpl('model-view', your-data) 
    $.tmpl('another-model-view', your-data) 
    

    はそれが

    +1

    各テンプレートに対してAJAXリクエストを送信することは本当に良い考えではありません。 – ThiefMaster

    +0

    はい、私は知っていますが、他に何も見ません。 jQueryテンプレートは、Matty Fがクライアント側を望んでいないので、とにかくこれは質問に答えることができません。 –

    +0

    コンパイル –

    関連する問題