4

TwitterでHogan.jsを見ています。

http://twitter.github.com/hogan.js/

彼らは、サーバーを介してテンプレートをプリコンパイルできると話していますが、これはパフォーマンスが向上する可能性があると私は理解しています。

現在、テンプレートをレンダリングするたびに、AJAX がサーバーにヒットしてデータを取得した後、次のことを実行します。

     var template = Hogan.compile($('#seasonsTmpl').html());
     $('#main').html(template.render(data));

次のテンプレートがあるとします。

<script type="text/html" id="seasonsTmpl">

     <ul>
    {{#season}}
        <li>{{.}}</li>
    {{/season}}
    </ul>

</script>

ASP.MVC バックエンドを使用してサーバー側を「プリコンパイル」するにはどうすればよいですか? を使用することを中心にしているように見えるので、これは不可能Node.jsですか?

4

1 に答える 1

1

テンプレートを最適化する正しい考えがあります。2 つのオプションがあり、どちらを選択するかは、おそらく、テンプレートをクライアント側でレンダリングするか、サーバー側でレンダリングするかによって異なります。

それらをクライアント側でレンダリングしたい場合は、Hogan.js を使用して真のプリコンパイルを行うことができます。はい、これは .NET では動作しませんが、プリコンパイルが可能な場合を誤解していると思います。各 Web リクエストまたはページの読み込みで発生することを期待するのではなく、ビルド プロセスの一部として事前にテンプレートをコンパイルできます。あなたこれを設定するには node と npm をインストールする必要がありますが、これを自分のマシンでローカルに実行するか、ビルド ボックスを使用する場合はビルド ボックスを実行するだけで済みます。テンプレートを更新するたびに、Hogan を再度実行して出力ファイルを更新します。コンパイルされた出力は、後で使用するために最適化された関数でいっぱいの JavaScript ファイルになります。これらの関数には、テンプレート文字列と、データを Mustache 風にレンダリングするロジックが含まれます。次に、他の JavaScript インクルードと同じように出力ファイルをインクルードするか、そうする場合は縮小のために他のソースにインクルードできます。

2 番目のオプションは、テンプレートをサーバー側でレンダリングすることです。これはプリコンパイルとは異なります。サーバーは Web リクエストごとにテンプレートを再度コンパイルしてレンダリングします。Hogan.js から離れて、Nustache などの .NET 代替を検討してください。Mustache の優れた点は、仕様があり、いくつかのサーバー側言語に移植されていることです。

レンダリングが行われる場所に関して、これらのオプションには根本的な違いがあります。Nustache を使用してサーバー側で最初のページ読み込みをレンダリングしたいが、Hogan を介してプリコンパイルされたテンプレートを使用してブラウザーでレンダリングする必要がある動的要素がある場合など、特定のシナリオでは両方のアプローチを活用することもできます。

詳細: Github の Nustache

これがお役に立てば幸いです。

于 2013-03-13T12:26:43.903 に答える