こんにちは。きんくまです。
JS関係のメモをひきつづき。
TypeScriptはこちらのページがまとまっていて、わかりやすかったです。
Underscore.js
Backbone.jsというのがあるみたいです。使い方を調べていたのですが、データの追加・削除・更新などをするのに便利そうでした。(たぶん)
>> Backbone.js Advent Calendar 2011
んで、Backbone.jsというのは、Underscore.jsというのに依存しています。
Underscore.jsは他に依存していないので、独立して使うことが可能です。
配列とかの便利なユーティリティ関数がいっぱいつまったライブラリです。
で、その辺のやつでなくて、個人的に便利!と思ったのがtemplate機能です。
>> Underscore.jsのtemplate触ったメモ
JSでDOMを書くと文字列を連結したり、domにappendChildとかしたりして見通しが悪いのです。
var mydom = '<div>私の名前は' + name +'です</div>';
という感じの文字列の連結とか。文字列足し込んでいくのとかがmendoi。
なので、動的部分を変数にもたせてあげたhtmlのひな形を書けると見やすいです。
Underscoreはそいつに変数を渡してあげるとDOMの文字列が生成されます。
script type=”text/template” となっているのがポイント。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="jquery-1.8.3.min.js" type="text/javascript"></script> <script src="underscore-min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ //ex1 var personCompiled = _.template($('#person_template').text()); var personText = personCompiled({ person:{ name:'やまだ', age:15 } }); $('#container').append(personText); //ex2 var listCompiled = _.template($('#list_template').text()); $('#container').append(listCompiled({ lists:[ 'りんご','ごりら', 'ラッパ', 'パンツ', 'つみき' ] })); }); </script> </head> <body> <div id="container"></div> <script type="text/template" id="person_template"> <div> 名前は<%= person.name %>デス。としは<%= person.age %>デス。 </div> </script> <script type="text/template" id="list_template"> <ul> <% for(var i = 0, len = 5; i < len; i++){ %> <li>ここがリスト <%= i %> です。変数は <%= lists[i] %>です。</li> <% } %> </ul> </script> </body> </html>
あ、いまIE7,8でためしてみたところ、上のコードだと動きませんでした。
script type=”text/html”として、jQueryのところをtext()からhtml()にかえると動きました。
※参考ページです。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="jquery-1.8.3.min.js" type="text/javascript"></script> <script src="underscore-min.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ //ex1 var personCompiled = _.template($('#person_template').html()); var personText = personCompiled({ person:{ name:'やまだ', age:15 } }); $('#container').append(personText); //ex2 var listCompiled = _.template($('#list_template').html()); $('#container').append(listCompiled({ lists:[ 'りんご','ごりら', 'ラッパ', 'パンツ', 'つみき' ] })); }); </script> </head> <body> <div id="container"></div> <script type="text/html" id="person_template"> <div> 名前は<%= person.name %>デス。としは<%= person.age %>デス。 </div> </script> <script type="text/html" id="list_template"> <ul> <% for(var i = 0, len = 5; i < len; i++){ %> <li>ここがリスト <%= i %> です。変数は <%= lists[i] %>です。</li> <% } %> </ul> </script> </body> </html>
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ