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 対応用の記述が 無くなります。

スポンサードリンク