私は、dust.js のような JavaScript テンプレート ライブラリや、canJS のような他のより広範なライブラリを調べてきました。
私が働いている場所では、クライアント側のアプリケーション/サイトのほぼ 99% を処理しています。現在、私はhtmlの文字列を構築し、domに注入し、クリック/アクションをリッスンし、ajaxを実行し、結果からhtmlの文字列をさらに構築し、domに注入するなどしています。
この簡単な例を挙げると。
//stringbuilder
function StringBuilder(e){this.strings=new Array("");this.append(e)}StringBuilder.prototype.append=function(e){if(e){this.strings.push(e)}};StringBuilder.prototype.clear=function(){this.strings.length=1};StringBuilder.prototype.toString=function(){return this.strings.join("")}
var data = {
fname: "Joe",
lname: "Doe",
occupation: "Developer",
things: ["some", "list", "of", "things"]
}
var sb = new StringBuilder();
sb.append("<h1>" + data.fname + " " + data.lname + "</h1>");
sb.append("<p>Occupation: " + data.occupation + "</p>");
sb.append("<h3>A list of things</h3>");
sb.append("<ul>");
for (var i = 0; i < data.things.length; i++) {
sb.append("<li>" + data.things[i] + "</li>");
}
sb.append("</ul>");
$("#output").html(sb.toString());
これは、テンプレート化によってどのように改善できますか? 私が見てきたことから、上記よりも読みやすく、保守しにくい特定のテンプレート構文に適応する必要があります。複雑なレイアウト、または再帰があるシナリオ (何レベルになるかわからないリスト内のリスト) についてはどうですか。場合によっては、テンプレートの構文/エンジンが制限要因になると感じています。
そのhtmlをJSから完全に引き出すのはいいことだと思いますが、HTML内のテンプレート構文でスクリプトタグを使用することは考えられません。特に、テンプレートを外部ファイルとして使用したくないため、追加のリクエストを実行する必要があります読んだ。
私を教育してください!