jQuery 1.11 と 2.1 のベータ版1の変更箇所のメモ
先月 jQuery 1.11 と 2.1 のベータ版1が発表 されましたのでメモしておきます。ベータ版です。
API 自体は前のバージョンと変更されていません。 AMD 対応強化、バグ修正と性能改善がなされているそうです。 利用者にとってはあまり変更されてないように見えますが、 内部的にはかなり変わっています。
AMD(Asynchronous Module Definition)は JavaScript のモジュールの仕様です。 これに対応すると AMD ローダの RequireJS や最近の Dojo などで、モジュールの非同期読み込みを 依存性を考慮して行うことができます。 jQuery 全体としては 1.7 で AMD に対応していましたが、 それをモジュール単位にまで広げたそうです。
CDN から jQuery を読み込んでいる、おそらくは大半であろう 利用者にとってはあまり関係のない変更だと思います。 この変更に伴い、ビルド処理に r.js を使うようになったそうです。 また、カスタムビルドで除外できるモジュールが大幅に増えました (event, exports/amd, core/ready, deferred 等)。
性能改善の変更としては、いままで jQuery の読み込み時に 行っていた一連の機能特定の処理を、関連する API を初めて 利用する時に延期させることで jQuery の起動時間が短縮されたそうです。 また、一部のブラウザで発生していた jQuery による無駄な レイアウト処理をなくしたそうです。
Sizzle や QUnit など内部で利用するパッケージの管理に いままでは git の submodule の機能を使って いたのですが、代わりに Bower を使うようになった ようです。 それに伴い jQuery の製品版を Bower にも公開するそうです。 Bower は Twitter 製の web 用パッケージマネージャです。
そのため jQuery のビルドに Bower が必要ですので ビルドするときは Bower をインストールしておきましょう。 npm からインストールできます。 Bower をインストールすればビルド方法はそんなに 変わりません(ちょっとだけ違う)。 ビルド方法は README に書いてあります。
ビルドに関して、前回との違いを適当に羅列すると (現時点でのことですので最新情報は README を確認してください)、
- Bower をインストールする必要がある
- event-alias が event/alias へと変わった
- 除外できるモジュールがかなり増えた
モジュールは、core と selector 以外はどのモジュールでも除外できます。 src フォルダからの .js ファイルへの相対パスを モジュール名として指定します(拡張子 .js は抜く)。
増えたモジュールについて、
例えば core/ready モジュールはjQuery.fn.ready()
等の機能が除外されます。.on("ready", ...)
と
ready イベントを登録しても実行されなくなります。
他にも、
event は.on()
や.off()
を含める
イベント機能全般(event/alias 含む)が除外されます。
deferred はjQuery.Deferred
が除外されますし、
exports/amd は jQuery 本体に対する AMD 対応用の記述が
無くなります。