Asial Blog

Recruit! Asialで一緒に働きませんか?

jQuery 3.0βリリース。2系と3系の違いについて

カテゴリ :
フロントエンド(HTML5)
タグ :
JavaScript
jQuery

2016年に入り、jQuery 3.0βがリリースされました。はっきりとしたロードマップは出ていないものの、今年中には正式リリースするのではないでしょうか。



そこで今回はjQuery 2.xと3.xで何が変わるのか、紹介したいと思います。



jQuery Compatはなくなります



元々レガシーなブラウザをサポートするjQuery Compatも開発されていましたが、MicrosoftがIE8をサポートしなくなったのを受けて、jQueryもIEを非サポートすることになりました。その結果、jQuery Compatの開発は中止となり、jQuery 3.x一本になります。



Alphaで実装したshow()、hide()のインライン操作の排除



元々実験的なものでしたが、スタイルシートなどで設定された場合に必ずしも正しく動かないことが分かったためとしています。メソッド自体は残りますのでこれまで通りとなります。



data()メソッドでのアクセス方法変更



HTML Standardに沿う形になり、単語を-でつなぐ kebab-case から 2つ目以降の単語の最初の文字を大文字化する camelCase に変更するとのことです。



jQuery.DeferredがPromises/A+互換になります。



ES2015 Promisesとも同じとのことなので安心して利用できるようになりそうです。この場合、



  1. promise.then(function() {
  2.   // 正常終了の場合
  3. },
  4. function() {
  5.   // エラーの場合
  6. });

となり、これまで使われていた .catch() が使えなくなります。そのため、.catch().then(null, function() {}) のエイリアスになります。



.width(), .height(), .css(“width”), and .css(“height”) が十進数を返すようになります



これまでは整数しか返さなかったと思いますが、今後は小数点以下も含むようになります。



古いイベント処理がなくなります



.load.unload.error はなくなります。今後は .on に統一されます。



アニメーション処理はrequestAnimationFrameで行います



requestAnimationFrameはパフォーマンスを意識したアニメーションを実装できるようになります。ただしIE9とAndroid 4.4未満では実装されていません。



DOM操作を行う幾つかのメソッドが使えなくなります



jQuery.dirjQuery.siblingjQuery.buildFragmentjQuery.accessjQuery.swapはドキュメントにも記載されなくなり、アクセスできなくなります(内部では使うようです)。



カスタムセレクターの高速化



:visible の改善により、顕著な場合では17倍も高速になったとのことです。






なお、最新版では2.2.0はミニファイ版が85,589 byte、3.0βが86,071 byteとなっています。非サポートのブラウザは増えたものの、さほど大きさは変わらない模様です。常に進化しているとあって、今後のWeb/ハイブリッドアプリ開発でもjQueryは欠かせぬ存在になりそうです。



jQuery 3.0 Beta Released | Official jQuery Blog