Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Ajaxフレームワークについて

やっぱ難しいんだろうな。
Ajaxって。
TeedaAjaxを使うとこんな感じになればいいなあって話(妄想アリ)

  • コールバックメソッド名でコンポーネント呼び出し(これは一応なんか出来てる)
  • JSONのkeyと同じidを持つ要素に値をセットするコールバック関数(一応これもほぼ完成)
  • アノテーションで指定したpropertyをJSON化してくれるJSONIntercepter

でここまでだと

Kumu.Ajax.executeTeedaAjax(Sample_Action,{}).observeClick('testButton');
function Sample_Action(response){
    Kumu.Ajax.setData(response);
}

でできるかなと。

Kumu.Ajax.executeTeedaAjax(Sample_Action,{}).observeClick('testButton');

はtestButtonってidの要素のonclickイベントにexecuteTeedaAjaxを割り当てるの意です。

Kumu.Ajax.setData(response);

がデータをセットする関数。
ここもloopとかサポートしてもいいかも。
idでバインドしていくやり方はMayaaでもやってるしその発展系って感じ。
(機能限定版無設定Mayaaなイメージ。送信したkeyだけ置き換えられる)
あとバインド自体サーバサイドJSでやろうと思えばできる。
(某フレームワークはこの方式だし)

使う側はexecuteTeedaAjaxに渡す関数名とパラメータさえ書いてくれればいいかなと。
サーバ処理も適当にJSON吐いてくれれば勝手に値が入ってくれますよと。
やっぱりサーバも合わせてのセット考えないといけない気がする。
セットで考えるとCometも楽勝だし。
DWRはセットで考えられてるけどjsの書く量がやっぱ多い気がする。
それにちょっとわかりにくい気がする。
spryもはっきりいって属性に書かれてるのは謎の暗号だし。
属性に情報を端的に書いても何やってるかわからんすぎ。
やっぱサーバ、クライアント全体でしきいを下げてあげないと使えないと思う。

関係ないけど、最近思ってることは結局JSFAjaxって両方イベント駆動なんだよなーって事。
なので同じ呼び出し方でsync、asyncで選べる感じにまでなってもいいと思うんだよねえ。
(ここまでくると妄想かー。)
単純な使い方であれば属性埋め込みでしきいはガンガン下げれるのでもっと下げてもいいかあ。
その属性埋め込みはUIComponentでやるってのもありか。
(某extentionもこの手だし)
というわけでまだまだ改良の余地はある領域ですな。
うくく。