jQuery 1.11.0 と 2.1.0 での変更箇所の自分なりのまとめ

jQuery 1.11.0 と 2.1.0 がリリース されたので、自分なりに変更点をまとめました。 誤訳や誤解して間違ってまとめていることもあるかも知れませんので 読まれる際はご注意下さい。 以前の記事( beta1 , beta2 , beta3 , rc1 )の要約みたいなものです。 (※ページをそのまま訳したわけではありません)
箇条書きにすると以下のような感じ:

API に変更点無し

1.10, 2.0 から API の変更はありません。 多くのバグ修正と AMD 対応強化、npm 登録、性能改善など、 内部の管理環境の変更を行っています。

リストに戻る

リフロー(レイアウト)強制を少なくした

一部のブラウザで発生させていた 無駄なリフロー(レイアウト)の強制(特にクラス名の変更時に発生) を削減したそうで、大きく性能改善したページもあるようです。

リストに戻る

読み込み時のオーバーヘッドを低減

いままで jQuery の読み込み時に行っていた 一連の機能特定の処理を、その機能特定を必要とする API の 初実行時に延期させることで jQuery の起動時間が短縮されたそうです。 この遅延はモバイル環境で影響が大きかったようです。

リストに戻る

カスタムビルドがより細かく可能に

jQuery 全体としては 1.7 で AMD(Asynchronous module definition) に対応していましたが、 現在はモジュールも AMD に沿って 定義され、ビルド処理に r.js を使っています。 モジュール間の依存性の管理が容易になった(以前は Gruntfile.js に書いていた)ためか、モジュールは細かくなり、 より細かくカスタムビルドができるようになっています。 ビルド方法は README に書いてあります。

ビルド方法(2013/1/27 時点)

簡単にビルド方法を書いておきます。 2013/1/27 時点の README を読んでのものであり、 現在では異なるかもしれません。

まず、最近の Node.js と npm、git(1.7以降)が必要ですので インストールしておきます。 そして、リポジトリから clone します。

git clone git://github.com/jquery/jquery.git

その後 jquery のディレクトリに入り

cd jquery

ビルドスクリプトを走らせます

npm run build

これでフル版の jQuery が dist/ に置かれます。 圧縮版とマップファイルも同じ場所に出力されます。

カスタムビルドは除外するモジュールを指定することで実行できます。 上でビルドスクリプトを走らせてない場合はまだ 依存パッケージがインストールされてないのでインストールします

npm install

grunt へのオプション custom に除外するモジュールを羅列して 実行すればカスタムビルドできます。モジュールは src/ からの相対パス(拡張子 .js をはずす)で 指定できます。以下は一例です

grunt custom:-ajax,-css,-deprecated,-event/alias,-offset,-wrap

core と selector モジュール以外はどのモジュールでも 除外でき、除外されたモジュールに依存するモジュールも 除外されるそうです。

リストに戻る

npm への登録、ついでに Bower にも

このリリース以降(正確には beta2 以降)、 npm へ登録 していくようです。 始めは 2.x 系だけのつもりでしたが、browserify で使いたい という要望もあり 1.x 系も登録するようです。 ただし、node 上での動作は 2.x 系のみでのサポートと なりますので注意してください。

npm に登録されたことにより、例えば npm install jqueryで インストールでき、require("jquery")で 利用できます。 CommonJS 環境(module や module.exports が存在する)では document オブジェクトの有無で require の振る舞いが異なります。 document オブジェクトが在る場合は jQuery 本体が返りますが、 グローバルに expose されないので、必要なら例えば window.jQuery = window.$ = require("jquery") と手動で expose します。 document オブジェクトが無い場合は jQuery 本体の ファクトリ関数が返り、document オブジェクトを持つ オブジェクトを渡して jQuery 本体を作成します。 この場合は渡したオブジェクトの jQuery プロパティと $ プロパティに jQuery 本体が設定されます。

また、以前は Sizzle や QUnit など内部で利用するパッケージの管理に git の submodule の機能を使っていたのですが、 代わりに Bower を使うようになったようで、それに伴い jQuery は Bower にも公開されます。

他のパッケージマネージャのサポートをするつもりは 今のところないようです

リストに戻る

圧縮ファイルからソースマップ用コメントを削除

このリリースでは圧縮ファイル(.min.js)にソースマップ用のコメント
//# sourceMappingURL=jquery-....min.map
が削除されました。 ソースマップが正しく機能するには圧縮ファイル、 未圧縮のファイル(.js)、マップファイル(.min.map)が必要で、 圧縮ファイルとマップファイルに参照するファイルの名前を 正しく指定できないとうまく動かず 404 エラーを発生する場合もあります。 CDN のファイルをそのまま使うなら大丈夫だったのですが、 圧縮ファイルだけを別の場所に置いて使ったり ファイル名を変更したりするとうまくいかなくなります。 そしてソースマップ関連で問題が発生した時に その原因が jQuery にあると勘違いされた場合があったそうです。

コメントは削除されていますがマップファイルは配布されます。 ソースマップの機能を使いたい場合は、 圧縮ファイルの最後に マップファイルを指定するコメントを正しく記述すれば 利用できます。

一方、自前で jQuery をビルドした場合は マップファイルが作成される上 コメントも追加されるので、 そのままソースマップの機能を利用できます。 ソースマップの機能を使いたくない場合はコメントを 削除するようにしましょう。

リストに戻る

スポンサードリンク