「Sugar」公式サイト
http://sugarjs.com/
すごくいいです。
ネイティブオブジェクトを拡張し、便利なメソッドをたくさん使えるようにしたライブラリ。
Ajaxやアニメーション、Dom操作をするためのライブラリではありません。
Javascriptで面倒な日付操作や、配列、数値、文字列、オブジェクト等の操作を楽にするためのライブラリです。
もちろんクロスブラウザ対応されており、jQueryとも併用できます。
また、下でも書いてますが、日本語を考慮した処理がなされていて、日本人には嬉しいライブラリだと思います。
「Sugarの機能について」
http://sugarjs.com/features
「SugarのAPI一覧」
http://sugarjs.com/api
もう、上のページを見れば、その便利さがすぐ分かると思います。
その中でも、便利そうなメソッドを見ていきましょう。
String -文字列
has ・・・文字を含んでいるかどうか
'sheep'.has('h'); //true 'sheep'.has(/[a-e]/); //true <-正規表現も渡せる
each ・・・文字を分割して、配列にしたりループで回したり
'sheep'.each(); // ["s","h","e","e","p"] 'sheep'.each(/[a-h]/,function(w){ alert(w); // hが1回、eが2回 引数に渡される });
'sheep'.encodeBase64(); // c2hlZXA=
hankaku ・・・半角文字に変換する
('SHEEP ヒツジ'.hankaku()); // SHEEP ヒツジ <-カタカナにも対応!
zenkaku ・・・全角文字に変換する
('SHEEP ヒツジ'.zenkaku()); // SHEEP ヒツジ <-カタカナにも対応!
trim ・・・トリムする
('|' + ' sheep '.trim() + '|'); // '|sheep|' <-全角スペースにも対応!
※このtrimメソッドはIEでも全角スペースを取り除いてくれます。
jQueryのtrimメソッドだとIEの場合、全角スペースが取り除かれず、涙を流して独自実装をした方もいると思いますが、
「Sugar」なら大丈夫!
ソースを見ると、わざわざ全角スペースを取り除く処理を入れてくれています。
Number -数値
Number.random ・・・引数1と2の間のランダムな数値を返す
Number.random(0, 10); //0〜10までの間のランダムな数値
pad ・・・パディングする
(12).pad(8); // '00000012'
round ・・・四捨五入する
(3.49).round(); // 3 (3.49).round(1); // 3.5 (3.49).round(2); // 3.49
times ・・・その数分、処理を繰り返す
(5).times(function(i) { alert(i + '回目'); // 0回目、1回目、2回目、3回目、4回目とアラートが表示される });
Arrays -配列
findAll ・・・条件に合う要素を探す
['dog','sheep','pig'].findAll(/g/); // ['dog', 'pig'] ['dog','sheep','pig'].findAll(function(w){ return w.length == 5; }); // ['sheep']
average ・・・平均を返す
[1,9,8].average(); // 6
unique ・・・重複を取り除く
['dog','sheep','pig','sheep'].unique(); // ['dog','pig','sheep']
Dates -日付 (これが一番便利かも)
create ・・・Dateオブジェクトを生成
Date.create('2011-08-01'); // Mon Aug 01 2011 00:00:00 GMT+0900 Date.create('2011/08/01'); // Mon Aug 01 2011 00:00:00 GMT+0900 Date.create('3 days ago'); // Thu Jul 28 2011 22:40:49 GMT+0900 Date.create('today'); // Sun Jul 31 2011 00:00:00 GMT+0900
format ・・・フォーマットする
Date.create().format('{YYYY}/{MM}/{dd}'); // "2011/07/31" Date.create().format('{24hr}:{mm} ({Weekday})'); // "22:40 (Sunday)"
is ・・・引数で与えた条件と一致しているか
Date.create('2011-07-31').is('Sunday'); // true Date.create('2011-07-31').is('July'); // true
addXXX ・・・日付を加減算する
Date.create('2011-08-01').addMinutes(100)); // Mon Aug 01 2011 01:40:00 GMT+0900 Date.create('2011-08-01').addDays(5)); // Sat Aug 06 2011 00:00:00 GMT+0900 Date.create('2011-08-01').addWeeks(5)); // Mon Sep 05 2011 00:00:00 GMT+0900 Date.create('2011-08-01').addMonths(-1)); // Fri Jul 01 2011 00:00:00 GMT+0900 Date.create('2011-08-01').addYears(2)); // Thu Aug 01 2013 00:00:00 GMT+0900
isXXX ・・・条件と一致しているか
Date.create('2011-07-01').isPast(); // true Date.create('2011-07-31').isLastMonth(); // true Date.create('2011-08-01').isBefore(Date.create('2011-08-31')); // true
※日付系は以下に詳しく載っている
http://sugarjs.com/dates
Object -オブジェクト
clone ・・・オブジェクトをディープコピーする
Object.clone([function(){alert('hoge')},{'a1':'dog', 'a2':'sheep'},[1,3,5]]); // [function(){alert('hoge')},{'a1':'dog', 'a2':'sheep'},[1,3,5]]
each・・・プロパティごとに繰り返し処理をする
Object.each({ name1:'sheep', func1:function(){alert('hoge')} }, function(key, value) { if(Object.isString(value)) { alert(value); } else if(Object.isFunction(value)) { value(); } });
※ あの忌まわしき hasOwnProperty を入れないで繰り返し処理が出来て、すっきり。
isXXX・・・オブジェクトの型を判別
Object.isString('sheep'); // true Object.isDate(new Date()); // true Object.isBoolean(false); // true Object.isArray([1,2,3]); // true Object.isObject({name1:'sheep'}); // true Object.isNumber(123); // true Object.isFunction(function(){alert('hoge')}); // true
なにげにjavascriptで型判別する機会はあって、しかもちゃんとした知識がないと正確に型判別出来なかったですが、
Sugarだと簡単ですね。
isArrayも Object.prototype.toString.call(obj) でちゃんと判断していて、さすがです。
まとめ
「Sugar」は非常にいいライブラリだと思います。
これがあったら便利だよね!っていうのがたくさん詰まっていて、かつ
Javascriptのハマりどころも隠蔽してくれてて、普通にプロジェクトで採用したい感じです。
(ネイティブオブジェクトを拡張するのに賛否両論あると思いますが)
とくに、日付系!これは本当に素晴らしい。
あと、全角スペース対応や半角文字を全角にしたり、全角文字を半角にしたりと、
日本語を考慮されているのが凄くいいです。
気になって、作者さんのことを調べましたが、
どうやら、渋谷の会社で働いているようです。
また、http://www.quickkanji.com という、外国の方が漢字を調べるためのサイトも運営していらっしゃるようです。
ソースも見ましたが、非常に参考になりました。
とくに、こういうutil系のライブラリって勉強になりますよねー。
ということで、直感的に使える便利なjavascriptライブラリ「Sugar」のご紹介でした