ども、小堤です。
先日から、TwitterでちょいちょいいってるNXの話。
まぁNode.JSの話なんですが。
Ext.Platformが、Ext JS 4.0/Sencha Touchの共通コアになることが発表されましたね。
まぁ、Ext Coreじゃなくて、今後このExt.Platformなのかな?かなかな?って思っています。それか、そのさらに中にExt Coreになるんか・・。まぁどっちでもいいんですが。
これのソースコードリーディングをしながら、ぼちぼちいろいろ試していて
最近、Node.JSも触っていて、なんか、Node.JSってjQueryとかExt JSとかそのまま使えるわけもなく。
でも、クラスの継承とか、セオリーとか、Sencha Touchっぽく実装したいわけで。
なので、xFramework NXとして、Ext.Platformの一部移植しつつ、xFramework PXっぽくさらにWebSocketサーバーとか簡単に作れるように
いまから、準備していこうと思って、先日Gitに切りました。
https://github.com/xenophy/xFrameworkNX
また、コア部分作ってる段階なんで、JSコード大好きなひとじゃなければ、つまらないかもね。
Node.JS は requireの戻り値で、オブジェクトに読み込んだ内容を設定するみたいな。
sys = require(‘sys’);
みたいな、書き方をよくするんですが、なんか、きもいー。
まぁ、きもくないんでしょうけど、きもいー。
あと、何かにつけコールバック関数で処理をおこなうんで、jQueryみたく、ネストの嵐、ネストは半角スペース2で?みたいな世界になりそう。
だったので、NX.js読み込めば、Ext オブジェクトみたく、グローバルスコープにNXオブジェクトが生成されて、extendやら、isXXXやら使えるようなところまではできています。
また、関数オブジェクトの数が肥大化することは必死なので、NX.test.UnitというNX.extendで継承したクラス前提のユニットテストも作成しました。
んで、これでユニットテストしながら、ちゃかちゃか作っていくわけですね。
まぁ、来年の春くらいには、使い物にしたいなぁと、時間見つけてはコーディング。
で、Node.JSさわってて、まぁそうだわなー、そうなんだーっていう点。
グローバルスコープは、windowじゃなくて、global
まぁ、足り前ですが。windowじゃないんですね。ついつい。
argumentsが配列ではなく、オブジェクト
こいつのせいで、そのまま動かないっていうのは多々あるのかも。
argumentsはブラウザだと配列ですが、Node.JSではオブジェクトです。なんか、特殊なオブジェクトってかんじ。
何が、特殊かというと、Objectはlengthプロパティがないけど、argumentsのオブジェクトは、互換性を考えてなのか、lengthが使えます。
引数の数を感知できるわけですね。
Function.callee.caller.nameが使えない
calleeまではオブジェクト存在するんですがねー。
callerもか。nameとれないんですよ。
自分自身の関数名を取得する手段が、いまのところ見当たらナス。
まぁそんな感じで、Node.JSもぼちぼち、触っていっています。
本当は、xFrameworkNX じゃなくて、Sencha NXとかSencha Serverとかいう名前にしたかったんだけど、さすがに怒られるかな(笑)と思って、自重しました。
ちなみに、READMEもまだかいてないし、ライセンスも書いてませんが、ライセンスはMITです。
なので、Ext.Platformのいいところはぱくるし、動かないところは、Node.JS用に書き直します。
あと、地味にPHP.JSの一部もNXスタイルでリライトして取り込もうと思ってます。
あんまりやり過ぎると重くなるかなぁ、と思うけど、結局NXオブジェクト取り込んでサーバー起動時の負荷で、リクエストに対する起動速度じゃなくなるのが、Apache + PHPと違うので、かなり動作も期待。
地道に作ります。
来年くらいから、小さい案件はNode.JSでNXで、WebSocketで、Ajaxで、みたいな感じで、ぱぱっといけるようにしたいなぁ。
ちなみに、ベース作るだけで、今年終わりそうだけど、UIは、HTML・Ext JS・Sencha Touchを考えています。
なんで、テンプレートエンジンもつくらねばーねば。
とりあえず、WebSocketサーバーできたら、Sencha Touchで簡易チャットだな(笑)