JavaScript のライブラリ。
ドキュメント
デモ用インタープリタ
入手
リリース版はちょっと古いので、Subversion リポジトリから取ってくるのが いいでしょう。
svn co http://svn.mochikit.com/mochikit/trunk mochikit
MochiKit.Base
比較関数や関数型プログラミングのための関数など。 MochiKit の基本部分。
compare
比較
>>> [1, 2] == [1, 2]
false
>>> compare([1, 2], [1, 2])
0
map
写像
>>> map(function(e){ return e + e }, [1 ,'3', 5])
[2, "33", 10]
compose
関数合成
>>> square = function(e){ return e * e }
function (e) { return e * e; }
>>> double = function(e){ return e * 2 }
function (e) { return e * 2; }
>>> compose(square, double)(3)
36
>>> compose(double, square)(3)
18
- repr
開発者向けの文字列表現
>>> repr([1, '2', null])
"[1, \"2\", null]"
オブジェクトに repr() か __repr__() が実装されているとそれを使う。
MochiKit.Iter
Python 風イテレータ
わざとらしい例
forEach(takewhile(partial(operator.gt, 5), count()), function(e){ alert(e) })
MochiKit.DOM
DOM 用 API
HTML の主要タグは簡単に作成できる関数が用意されている。
例:
['a', 'b', 'c']
から
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
を作り、
の中に追加したい。var ul = UL(null, map(function(e){ return LI(null, e); }, ['a', 'b', 'c']));
appendChildNodes('foo', ul);
MochiKit.Signal
イベント関連
connect
id="foo" の要素の onclick イベントにハンドラを結びつける。
connect('foo', 'onclick', function(e){ alert('clicked') });
一般のオブジェクトに対して
a = {};
connect(a, 'fire', function(e){ alert('fired') });
// ...
signal(a, 'fire');
MochiKit.DragAndDrop
ドラッグアンドドロップとかできます。
http://mochikit.com/examples/draggable/index.html
MochiKit.Visual
ビジュアルエフェクト系
MochiKit.Async
非同期処理
var d = new Deferred();
d.addCallback(function(){ alert('foo') });
d.callback();
addCallback する時点で既にコールバックされていた場合、 addCallback するとすぐにコールバック関数が実行される。
var d = new Deferred();
d.callback();
d.addCallback(function(){ alert('foo') });
doSimpleXMHttpRequest
var d = doSimpleXMLHttpRequest("http://example.com/foobar");
d.addCallback(function(xhr){ ... });