私たちの時代には、すでにそれらのかなりの数がありますよね? たとえば、100分の1秒でHTMLを生成する必要がある場合、彼らは自分の作業にもうまく対処します。これは非常に高速であり、ユーザーはこの遅延を感じません。 そして、なぜ私たち全員が、mightとmainを使用してクライアント側のテンプレートを急いで使用しないのですか? さて、例えば、いくつかのポイント:
-ページの生成(そのほとんど)はすでに高価になっています。
-混合テンプレート(javascriptとお気に入りのスクリプト言語の両方のテンプレート)を使用する場合、それらを複製するときに状況が発生します。
2番目の点についてお話したいと思います。その解決策は、最初の問題の解決策であるパフォーマンスに直接影響します。
テンプレートの複製が悪いという事実について、説明する必要はありませんか? アイデア自体は新しいものではありませんが、実装の重要な性質のため、一般的ではありません(少なくとも、この方法については、サーバー言語のテンプレートエンジンほど多くはありません)。
そのため、javascriptとお気に入りのperl / php / python /の両方をキャッチできるテンプレートを作成しています。 すべては論理的です、私たちは皆これを理解しています、私たちは望んでいますが、既製のオプションは数十ドルではありません。おそらく自分で書く必要がありますが、今は少しの時間があり、それから何とか忘れられます。
プログラマーの仕事は、設計の90%が設計、試行テストの実行であり、10%の時間は誰も私たちに気づかず、気にしないまでコードを書くことです。 テンプレートエンジンに必要なものについて話しましょう。その後、自分で作成します。
簡単な例で、図全体を見てみましょう。
テンプレート:
< ul >
{%topics}
< li class ="{?#id == 1}first{|}other{/?}" > {#title} </ li >
{/%topics}
</ ul >
* This source code was highlighted with Source Code Highlighter .
JSONとしてのデータ:
[{title: '' ,id: 1},{title: '' ,id: 2},{title: '' ,id: 3},{title: '' ,id: 4},{title: '' ,id: 5}]
* This source code was highlighted with Source Code Highlighter .
結果のhtml
< ul >
< li class ="first" > </ li >
< li class ="other" > </ li >
< li class ="other" > </ li >
< li class ="other" > </ li >
< li class ="other" > </ li >
</ ul >
* This source code was highlighted with Source Code Highlighter .
テンプレートをテンプレートパーサーで処理した結果、出力はjsライブラリとスクリプト言語のモジュールになります。
私たちのお気に入りのスクリプト言語に対するコードのあり方に関する部分は省略します。ハッシュ配列にフィードする場合、すぐにhtmlを生成することに注意してください。
そして今、JavaScriptライブラリについて。 これに似たものを取得する場合(これはテンプレートエンジンの結果のコードであり、原則として、私たちにとっての読みやすさは、何が起こっていたかを思い出します):
( function (){
zTpl = function (options) {
this .init(options);
return this ;
};
zTpl.prototype = {
init: function (options) {
this .opt = options
},
topics: function (data) {
var out = '<ul>' ;
for ( var i=0; i< data.length; i++) {
out += '<li class="' ;
if (data[i].id == 1) {
out += 'first' ;
} else {
out += 'other' ;
}
out += '">' +data[i].title+ '</li>' ;
}
out += '</ul>' ;
return out ;
}
};
})();
* This source code was highlighted with Source Code Highlighter .
これはすでにクライアント側で行われているため、これを行います。
var d = [{title: '' ,id: 1},{title: '' ,id: 2},{title: '' ,id: 3},{title: '' ,id: 4},{title: '' ,id: 5}];
var tpl = new zTpl();
var html = tpl.topics(d);
* This source code was highlighted with Source Code Highlighter .
そして、私たちは望んでいたものを手に入れました。
-テンプレートおよび入力JSONによるHTML生成。
-テンプレートはスクリプト言語とjavascriptの両方で使用されているため、重複はありません。
-テンプレートがネイティブコード(スクリプト言語とjavascript)に変わるという事実により、可能な限り最大の生成速度が得られます。
注:
-生成は、テンプレートの交互の変数と静的データ(本質的に行)の連結により発生します。
-上記のテンプレートとコードは、将来のテンプレートエンジンの可能性の氷山の一角です。 ここでは、可能な限り、サーバーテンプレートエンジンのすべての利点とオーバーフローがあります。たとえば、変数のマルチレベルネスト、再帰、キャッシングのようなものです。
紳士はこの開発についてどう思いますか? この行動の都合は?