2

自作したいのですが、どうしたら良いかわかりません。パーシャルは、別のより大きなテンプレートの一部にすぎず、他の複数のテンプレートに自由に挿入できるテンプレートです。テンプレート自体はかなり基本的なもので、文字列の抽出と連結だけですが、クライアント側のパーシャルは少し困惑しています。

私が考えたいくつかの方法を次に示します。

1. ajax を介して何らかの形式のローカル ストレージにパーシャルをロードする JavaScript ヘルパー関数を記述でき、その特定のパーシャルを必要とする後続のすべてのテンプレートは、最初にローカル ストレージ内を検索します。ローカル ストレージが常に保証されているとは限らないため、この方法はあまり安全ではないと思います。また、それらをローカル ストレージに保存できない場合、パーシャルによって ajax 呼び出しが多すぎます。

2、それらすべてをメインの html ファイル内のスクリプト タグに入れることができました。これは、特に head.js (スクリプト タグの並列読み込みを有効にするため) ではかなりうまく機能しますが、それでも - 各スクリプト タグはサーバーへの個別の呼び出しだと思いますよね? それは状況を正確に改善しません。

3、すべてのテンプレートを 1 つのスクリプト タグ (または html だと思います) に入れ、ある種の区切り文字で手動でフィルター処理することができます。これにより、サーバーへの呼び出しが 1 回だけになり、残りはすべてクライアントで行われます。

提案?私は既存のテンプレート エンジンを調べましたが、どのようにそれを行っているかを実際に判断することはできません。コードはかなり複雑です

4

1 に答える 1

1

jQuery テンプレートの仕様/書き換えのためのテンプレート呼び出しとオンデマンド ロードを仕様化するために私が取ったアプローチは、それをパイプライン化することです。

(初期の)ドラフト仕様のセクション 9 を参照し、カスタム オンデマンド テンプレートの読み込みの例については、一番下の適合スイート テストを参照してください(テストケース「メイン コールとジャスト イン タイムで読み込まれました!」が関連するものです)。

基本的な要点は、(JS で記述された) プラグイン ローダーが解析とコンパイルの間にフックして、解析ツリーを検査することです。プラグイン パスは、オブジェクト マッピング テンプレート名を取得してツリーを解析します。部分的なテンプレート セレクター (用語を使用する場合) が表示された場合、Node.js で AJAX 呼び出しまたはファイル I/O を使用して未解決のテンプレートを読み込んで、部分的なものを入力オブジェクトに追加して、コンパイラーに単にコンパイルさせることができます。公開テンプレートとともにパーシャルをロードしました。

効率に関しては、ベンチマークを参照してください。コードを github に移行中です: https://github.com/mikesamuel/jquery-jquery-tmpl-proposal協力したい場合に備えて。

于 2011-05-07T12:54:49.847 に答える