Born Too Late

Yuya's old tech blog.

メタプログラミングで jQuery.ajax を Fluent Interface にする

2011-05-28 15:05:53

jQuery で Ajax リクエストを行う場合, パラメータはハッシュ (JavaScript の Object 型) で指定して実行します.

この例だとまだシンプルに見えますが, success コールバックなどが肥大化してくると, 見通しが悪くなってきます.

そこで以下のようなコードを用意します.
jQuery.ajax() のラッパーとなる FluentAjax オブジェクトと, それを呼び出すヘルパーとして fajax() 関数を定義しました.

メソッドの定義にはメタプログラミングを使用しており, 実質上のプログラムは約 30 行程度です.

これを利用すると, 同じ Ajax リクエストを以下のように行うことができるようになります.

メソッドチェインでリクエストオプションを組み立てていき, 最後に execute() メソッドでリクエストを実行しています.
いわゆる Fluent Interface (流れるようなインターフェイス) になっていると思います.

メソッドチェインを使った方が可読性が高い... かどうかは好みの問題かもしれませんが, ひとつのサンプルとして.
これをもう少し抽象化すれば, 1 つのハッシュを引数にした複雑な関数は, 何でも Fluent Interface にできそうですね.

See also