ECMAScript 規定: ドル記号は機械的に生成されるコード中のみの使用を意図される

ECMAScript 3 規定のドル記号 ($) に関わるつぶやき。
16
前へ 1 2 ・・ 6 次へ
think49 @think49

$ を魔法の言葉的に扱うのもあまり好きになれない。機能が統一されてるならまだしも揺らぎがあるので、全体としてみないと判断できないし。

2010-09-06 05:49:45
think49 @think49

@uupaa それは興味深いお話です。そういえば、jQueryはイベントハンドラから一度はグローバルオブジェクトを経由しなければならないのが気になってはいました。

2010-09-06 05:52:39
えんじに🐈にゃーん💉💉 @uupaa

uupaa.jsとjQueryではイベント周りの設計ポリシーが大きく異なります。jQueryはeventオブジェクトをラップしてクロスブラウザに仕立てた擬似eventオブジェクトを返す。uupaa.jsはeventオブジェクトに便利なプロパティを追加する、必要なことだけ。まだある

2010-09-06 05:53:49
えんじに🐈にゃーん💉💉 @uupaa

uupaa.jsのイベントハンドラはDOM標準のhandleEventメソッドに対するイベント配信も可能なので、クラスインスタンスに対してもイベントを配信できます。

2010-09-06 05:56:45
えんじに🐈にゃーん💉💉 @uupaa

jQueryは何でもイベントでやるけれど、DOMのイベントはそもそも単純な通信に使うには余計な物が多すぎる(キーとか発生元とかバブルアップとか)。uupaa.jsはクラスインスタンス間でメッセージングが使えるため、メッセージの配信が可能。オレオレイベントも使えるが、使う必要はない

2010-09-06 05:59:40
えんじに🐈にゃーん💉💉 @uupaa

uupaa.jsではメッセージングを利用して未知の相手とやりとりが可能なので、未知のプラグイン同士で協調動作を設計することが可能。メッセージングは、相手を指定して、グループを指定して、ブロードキャストが可能で、同期/非同期通信が可能。ITRONのメッセージボックスの感覚で使える

2010-09-06 06:02:41
えんじに🐈にゃーん💉💉 @uupaa

jQueryはDOMContentLoadedのサポートだけだが、uupaa.jsはDOMReady,WindowReady,AudioReady,StorageReady,CanvasReady,SVGReady,オレオレReady などのイベントの待機やイベントの発火が可能

2010-09-06 06:05:43
think49 @think49

@uupaa むー、jQueryのコードは読んだ経験があるので見当がつくんですが、uupaa.js は…後で読もう。速度はイベント周りの工夫でしょうか?

2010-09-06 06:07:46
think49 @think49

書き込んでいる間に増えてる!やはり、touch では遅すぎますね。

2010-09-06 06:09:35
えんじに🐈にゃーん💉💉 @uupaa

@think49 そうですね。eventまわりはmousemoveのレスポンス改善を第一目標に設計しているためjQueryと一桁動作速度が違ってる気がします。またjQueryはクロージャを多用してコードを短くみせていますが、イベント周りもクロージャで多重ラップしており、速度が…

2010-09-06 06:14:49
えんじに🐈にゃーん💉💉 @uupaa

uupaa.js の bind(uu.event)は http://bit.ly/aIydjC で jQuery1.4.2だと 2361行付近ですね

2010-09-06 06:19:17
think49 @think49

@uupaa なるほど。クロージャの影響でさたか。確かに「クロージャを無駄に生産するな」とはよく指摘されたなあ…。

2010-09-06 06:19:54
think49 @think49

@uupaa jQueryはコメントやヘルプには気を遣ってますが、洗練されたコードではない印象がありますね。互換性重視というべきか…。

2010-09-06 06:23:49
think49 @think49

速度周りといえば、jQueryで気になったのは jQuery($) を多用することが前提になっていることです。スコープチェーンではグローバル変数は避けるべきですが、イベントハンドラでは使わざるを得ず…。

2010-09-06 06:24:49
えんじに🐈にゃーん💉💉 @uupaa

jQueryのコードが短く見えているのは(最近はそ6000行もあって当初からかなり増量しているけど)、クロージャで何重にもラップして処理を断片化しているからです。コードの短さに設計が最適化されており、高速性についての配慮はさほど読み取れません

2010-09-06 06:24:49
えんじに🐈にゃーん💉💉 @uupaa

このまえ某所で「煎茶touch試してみたら、重すぎてこりゃ無理だと思った」ってトークがあったのを思い出した。

2010-09-06 06:27:12
えんじに🐈にゃーん💉💉 @uupaa

@think49 互換性重視の部分と速度重視の部分は作風を使い分けて記述すべきですが、jQueryは互換性とコードの短さを重視した結果、速度が犠牲になっています。uupaa.js は作者がワガママなのでどっちもやってます。

2010-09-06 06:30:20
think49 @think49

@uupaa touchでJavaScript書いてみようなんて考えたこともありましたが、入力があまりにも面倒だったのと期待するテキストエディタがなかったので諦めましたw

2010-09-06 06:30:52
えんじに🐈にゃーん💉💉 @uupaa

IEのCSSExpressionのやばさを思い出してください。あれはマウスが1px動くと関数が呼ばれモッサリします。mousemoveやtouchmoveも基本同じです。速度が重要な場所でfor in回したり内部関数を沢山呼んだりクロージャでラップしているのがjQueryです

2010-09-06 06:35:18
think49 @think49

@uupaa 確かに両者は分けて考えるものですが、ネイティブ関数を使った方が速くて確実っていうのもあると思うんです。jQueryは最も低機能なブラウザに合わせてコードを書いているように思えます。

2010-09-06 06:36:51
えんじに🐈にゃーん💉💉 @uupaa

@think49 うん。PCだとCPUもMEMも電源も余りまくってるので古いブラウザの救済も「どーぞどーぞ」なんですが。PCでの動作を前提に設計されているライブラリをモバイルデバイスでも… ってのは大変だろうなぁ~ って思います

2010-09-06 06:40:56
えんじに🐈にゃーん💉💉 @uupaa

PC前提に設計してるかはよく知らないけどね

2010-09-06 06:41:29
えんじに🐈にゃーん💉💉 @uupaa

ガーってjQueryにキツイこといったけど。モバイルデバイス全盛期だとjQueryどうなっちゃうんだろうね

2010-09-06 06:46:18
think49 @think49

@uupaa jQueryではイベントが発生する度に余計な処理が走っている、ということですね。バブリンクする範囲が大きいと大変なことになりそうです…。

2010-09-06 06:47:01
えんじに🐈にゃーん💉💉 @uupaa

@think49 はい。そこらへんを直されると、uupaa.js の立場がまずいのでそっとしておいてください。

2010-09-06 06:48:02
前へ 1 2 ・・ 6 次へ