jQueryチームが待望の3.0リリースを公開した。新しいスリムビルド、新機能、改善、バグ修正が含まれている。
jQueryコアチームメンバーのTimmy Willison氏は、ブログ記事「jQuery 3.0 Final Released!」でjQueryの「スリムビルド」を発表し、次のように語った。「ajaxを必要としないときもあれば、ajaxリクエストにフォーカスした様々なスタンドアロンのライブラリのいずれかを使いたいときもあるでしょう。また、WebアニメーションにCSSとクラス操作の組み合わせを使う方が簡単な場合もよくあります。」
標準のjQueryと比べて、スリムバージョンはajax、effect、非推奨コードが外され、フルバージョンの30kに対して23.6kとスリムになっている。スリムなjQueryパッケージはここからダウンロードできる。
2014年10月以来、3.0の待望の新機能が、アップデートされたjQuery.Deferredオブジェクトだ。Promises/A+およびES2015 Promisesと互換性を持ち、Willison氏は次のように説明している。3.0において「.then()
コールバックでスローされる例外は、リジェクト値になります。これまで例外は上流に伝播し、コールバックの実行を中止していました。例外をスローしたdeferredの解決に依存しているdeferredは、もはや解決されなくなるでしょう。」
また、Willison氏は重要な差異として、rejectionコールバックでキャッチした例外を処理するのがより宣言的になり、開発者はPromiseを使うときに少なくとも1つのrejectionコールバックを追加する責任があると述べている。
その他の改善としては、アニメーション実行時のrequestAnimationFrame
APIの使用がある。これによって、スムーズなアニメーションとモバイル機器のためのバッテリー節約が見込まれる。Willison氏によると、このアップデートは以前にも試みられたが、コードの互換性問題で中断されたという。ブラウザのタブが見えないときにアニメーションを停止することで、この問題は解決されるとチームは期待している。
多数の変更に加えて、jQuery 3.0はjQuery.ready
Promiseを公式にサポートする。jQuery 1.8以来、jQuery.ready
はPromiseライクなオブジェクトとして使われてきたが、オブジェクトはjQuery.when
やネイティブのPromise.resolve()
でサポートされると明記された。典型的な使い方は次の通りだ。
$.when( $.ready, $.getScript("optional.js") ).then(function() {
// the document is ready and optional.js has loaded/run
}).catch( function() {
// an error occurred
})
できるだけ後方互換性を試みたものの、今回のリリースには破壊的変更がいくつか含まれている。jQuery coreに関して、jQueryは"use strict"
付きでビルドされている。ただし、Strict Modeで動かす必要はないため、大部分の既存コードは変更する必要がないはずだ。
その他の破壊的変更としては、jQuery coreにおける非推奨の.context
と.selector
プロパティの削除や、data名の変更がある。3.0より、すべてのdata名はケバブケース (click-count
) ではなく、キャメルケース (clickCount
) でストアされる。
3.0の新機能や破壊的変更の詳細について、開発者はjQuery Core 3.0 Upgrade Guideを読むべきだ。
Rate this Article
- Editor Review
- Chief Editor Action