BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 待望のjQuery 3.0リリース、スリムビルド登場

待望のjQuery 3.0リリース、スリムビルド登場

ブックマーク

原文(投稿日:2016/06/15)へのリンク

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

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT