javascript高速テンプレートレンダリングエンジンmvcを実現します.
2875 ワード
なぜjavascriptのmvcが必要ですか?
多くの場合、私たちのjavascriptコードには多くのスプライスコードの断片が含まれています.メンテナンスも簡単ではないし、使いにくいです.そのようなシングルクォーテーションマークの意味は卵が長い間痛いということです.私の話の意味が分かりますか?分かりました.下のコードをよく見てください.
以下のコードは簡単な代替方式でjavascriptの代替方式によってテンプレートエンジンを実現しました.もう複雑なコードのセグメントをつなぎ合わせません.
velocityやfreemarkerを使ったことがある人は、これらのコンパクトで使いやすいテンプレートエンジンが好きです.しかし悲劇的なのは多くの先端プログラマがまだjsを使ってデータによってほんの少しのつなぎ合わせコードを使っています.
役に立つと思います.忘れずに載せてください.
多くの場合、私たちのjavascriptコードには多くのスプライスコードの断片が含まれています.メンテナンスも簡単ではないし、使いにくいです.そのようなシングルクォーテーションマークの意味は卵が長い間痛いということです.私の話の意味が分かりますか?分かりました.下のコードをよく見てください.
以下のコードは簡単な代替方式でjavascriptの代替方式によってテンプレートエンジンを実現しました.もう複雑なコードのセグメントをつなぎ合わせません.
velocityやfreemarkerを使ったことがある人は、これらのコンパクトで使いやすいテンプレートエンジンが好きです.しかし悲劇的なのは多くの先端プログラマがまだjsを使ってデータによってほんの少しのつなぎ合わせコードを使っています.
役に立つと思います.忘れずに載せてください.
var user={name:'david supper',age:12, gender:'man'}
:
<div class="user_info">
<span class="user_name">david supperman</span>
<span class="user_age">12</span>
<span class="user_gender">man</span>
<div>
jsを通して直接綴り込みをするなら、必要です.<script language="javascript">
var user={name:'david supper',age:12, gender:'man'}
$(document).ready(function(){
var html='<div class="user_info">';
html+=' <span class="user_name">'+user.name+'</span>';
html+=' <span class="user_age">'+user.age+'</span>';
html+=' <span class="user_gender">'+user.gender+'</span>';
html+='</div>'
// html
});
</script>
テンプレートエンジンを使うと、htmlテンプレートを定義するだけです.<script id="user_info_template" type="text/x-jquery-tmpl">
<div class="user_info">
<span class="user_name">#{name}</span>
<span class="user_age">#{age}</span>
<span class="user_gender">#{gender}</span>
<div>
</script>
上のテンプレートがあったら、私たちはそれとデータを混ぜて、私たちのテンプレートエンジンを実現できます.<script language="javascript">
// , javascript mvc , ,
var user={name:'david supper',age:12, gender:'man'}
$(document).ready(function(){
var template=$("#user_info_template").html();
var html=renderTemplate(template,user);
// html
});
/* , */
function renderTemplate(template,data){
var content='';
if(data instanceof Array){
for(var i=0;i<data.length;i++){
content+=renderTemplate(template,data[i]);
}
}else{
var t=template;
for(var attr in data){
var value=data[attr];
t=t.replace(new RegExp("#{"+attr+"}","gm"),value);
}
content+=t;
}
return content;
}
</script>