これは、組み込みjavascriptオブジェクトを操作するためのjavascriptライブラリです。
- 便利で直感的なメソッドを追加することにより、組み込み言語オブジェクトを拡張します。
- 壊れているかどうかに関係なく、クロスブラウザー機能を追加します。
- テストで完全にカバーされています。
- 他のフレームワークやサードパーティのコードと簡単にやり取りできます。
- わかりやすく使いやすい
使用例として、著者は次のコードを引用しています。
getLatestTweets( function (t) {
var users = t.map( 'user' ).unique();
var total = users.sum( 'statuses_count' ).format();
var top = users.max( 'followers_count' ).first();
var count = top.followers_count.format();
var since = Date.create(top.created_at);
return users.length + ' users with a total of ' + total + ' tweets.\n' +
top.screen_name + ' is the top with ' + count + ' followers\n' +
'and started tweeting ' + since.relative() + '.' ;
});
そうではない、コードはほとんど英語のテキストのように読みます。
せっかちな人はこのリンクを介して提供された機能を調べることができ、残りの人はカットの下で簡単な説明を見つけるでしょう。
配列
Sugarは、
indexOf
、
forEach
、
reduce
などの標準Javascript 1.6メソッドのサポートを修正します。これらのメソッドは、標準関数がサポートしない引数タイプ(ネストされたオブジェクト、正規表現、文字列)を受け入れるように変更されました。 可能であれば、ネイティブのブラウザメソッドが使用されます。 メソッドの完全なリスト 。
[ 'a' , 'b' , 'c' ].indexOf( 'c' ); > 2
[{ foo: 'bar' }, { moo: 'car' }].indexOf({ moo: 'car' }); > 1
[ 'rocksteady' , 'and' , 'bebop' ].map( 'length' ); > [10,3,5]
[ 'rocksteady' , 'and' , 'bebop' ].sortBy( 'length' ); > [ "and" , "bebop" , "rocksteady" ]
[ 'rocksteady' , 'and' , 'bebop' ].findAll(/o/); > [ "rocksteady" , "bebop" ]
[ 'rocksteady' , 'and' , 'bebop' ].first(1); > [ "rocksteady" ]
[ 'rocksteady' , 'and' , 'bebop' ].from(1); > [ "and" , "bebop" ]
[ 'three' , 'two' , 'one' ].groupBy( 'length' ); > { "5" :[ "three" ], "3" :[ "two" , "one" ]}
[1,65,2,77,34].average(); > 35.8
[1,2].add([2,3]); > [1,2,2,3]
[1,2].subtract([2,3]); > [1]
[1,2].intersect([2,3]); > [2]
[1,2].union([2,3]); > [1,2,3]
行
Sugarは、正規表現で
split
を使用する場合のブラウザー間の違いを修正します。 Unicodeおよび中国語、日本語、ギリシャ語、ヘブライ語をサポートするメソッドを追加することにより、言語サポートが改善されました。 テキストの柔軟な作業のために、
each
、
words
、
lines
、
paragraphs
などのメソッドが追加されました。 メソッドの完全なリスト 。
'abcdefgh' .split(/[bdf]/); > [ "a" , "c" , "e" , "gh" ]
'こんにちは' .hasHiragana(); > true
'환영 합니다' .hasHangul(); > true
' !' .hasCyrillic(); > true
'welcome' .pad(1, ' ' ).pad(3, '-' ); > "--- welcome ---"
'hut!' .repeat(3); > "hut!hut!hut!"
'off with her head!' .words(); > [ "off" , "with" , "her" , "head!" ]
'off with her head!' .each(/he.+?\b/g); > [ "her" , "head" ]
'off with her head!' .startsWith(/[az]ff/); > true
'off with her head!' .first(3); > "off"
'off with her head!' .from(3); > " with her head!"
数字
Math
オブジェクトの基本的なメソッドは、ショートカットとしてSugarで使用できます。 追加のパンは、必要な精度で丸められ、数字を揃えてフォーマットします。 Sugarには、数値を日付にバインドして、簡単に変換できるメソッドもあります。 メソッドの完全なリスト 。
(125.425).round(2); > 125.43
(125.425).round(-2); > 100
(4235000).format(); > "4,235,000"
(50).pad(5); > "00050"
(23).ordinalize(); > "23rd"
(5).upto(10); > [5,6,7,8,9,10]
(5).daysAfter( 'Wednesday' ); > "Monday, August 8, 2011 00:00"
(5).yearsBefore( '2001' ); > "Monday, January 1, 1996 00:00"
(5).times( function () {
/* Run 5 times */
})
日程
Sugarは
Date.create
メソッドを日付に追加します。これはさまざまな形式の日付を理解します(残念ながらdd.mm.yyyyは理解できません)-テキスト、相対、絶対、タイムスタンプ。 日付は、単純な構文を使用してさまざまな形式で表示できます。 すべての日付入力形式を理解する
is
メソッドを使用する
is
、複雑な比較を行うことができます。 メソッドの完全なリスト 。
Date.create( 'June 15, 2002' ); > "Saturday, June 15, 2002 00:00"
Date.create( '2002-06-15' ); > "Saturday, June 15, 2002 00:00"
Date.create( '2002/06/15' ); > "Saturday, June 15, 2002 00:00"
Date.create( '15 June, 2002' ); > "Saturday, June 15, 2002 00:00"
Date.create( 'today' ); > "Monday, August 1, 2011 00:00"
Date.create( '2 days ago' ); > "Saturday, July 30, 2011 20:26"
Date.create(888888888899); > "Tuesday, March 3, 1998 04:34"
Date.create( 'the 15th of last month' ); > "Friday, July 15, 2011 00:00"
Date.create( 'the first day of 1998' ); > "Thursday, January 1, 1998 00:00"
Date.create().format( '{12hr}:{mm} {tt} on {Weekday}' ); > "8:26 pm on Monday"
Date.create( '3200 seconds ago' ).relative(); > "53 minutes ago"
Date.create().iso(); > "2011-08-01T16:26:20.122Z"
Date.create().isAfter( 'May 25' );> true
Date.create(). is ( 'tuesday' ); > false
Date.create(). is ( 'July' ); > false
Date.create(). is ( 'the 7th of June' ); > false
Date.create().addDays(2); > "Wednesday, August 3, 2011 20:26"
Date.create().addMonths(2); > "Saturday, October 1, 2011 20:26"
Date.create().addYears(2); > "Thursday, August 1, 2013 20:26"
オブジェクト
Sugarは
Object.prototype
と直接対話しませんが、ライブラリは
Object
クラスのメソッドにアクセスするためのいくつかのショートカットを提供します。 それらの1つは
Object.extended
。これは、他の言語で利用可能なものと同様のメソッドを持つハッシュオブジェクトを作成します。
isString
や
isFunction
などのタイプチェックメソッドも追加されます。
Object.extended({ broken: 'wear' }).keys(); > [ "broken" ]
Object.extended({ broken: 'wear' }).values(); > [ "wear" ]
Object.keys({ broken: 'wear' }); > [ "broken" ]
Object.clone({ broken: 'wear' }); > { "broken" : "wear" }
Object.isString( 'yes, it is' ); > true
Object.isFunction( function () {}); > true
機能
Sugarには
bind
などの基本的なメソッドがあり、関数のスコープを定義できます。 また、
delay
、
defer
および
Function.lazy
メソッドがあり、CPUに大きな負荷をかける計算用のクロージャーを作成できます。 メソッドの完全なリスト 。
( function (a) {
/* this = 'wasabi', a = 'bobby' */
}).bind( 'wasabi' , 'bobby' )();
( function () {
/* delayed 500ms */
}).delay(500);
[1,2,3].each(Function.lazy( function () {
/* Each iteration will occur 5ms after the previous one */
}, 5));
* This source code was highlighted with Source Code Highlighter .
便利なリンク: