jquery3.0-beta1-point

22
3系リリース直前?変更箇所ポイント サト研(妹) ver.1.0.0 【jQuery10周年】

Upload: takami-kazuya

Post on 15-Apr-2017

273 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: jQuery3.0-beta1-point

3系リリース直前?変更箇所ポイント

サト研(妹)

ver.1.0.0【jQuery10周年】

Page 2: jQuery3.0-beta1-point

自己紹介

1

高見 和也(Takami Kazuya)

https://twitter.com/miiitaka

https://www.facebook.com/miiitaka

株式会社アラタナフロントエンドエンジニア

WordPress と JavaScript が友達です。

https://github.com/miiitaka

Page 3: jQuery3.0-beta1-point

ハッシュタグ

2

#satoimo

Page 4: jQuery3.0-beta1-point

アジェンダ

3

jQuery10周年振り返り

jQuery3.0.0beta1 変更点ポイント(12点)

Page 5: jQuery3.0-beta1-point

さてさて

4

jQuery10周年振り返り

Page 6: jQuery3.0-beta1-point

思えば10年前なんですね

5

1系

2006/08/26

2系

3系

2013/04/15 2015/01/13

2016/01/14

First Release

1.0

Sizzle

Selector

1.3

2009/01/14 2010/01/14 2011/01/15

実行速度改善1.4

Deferred 追加1.5

2011/11/03

bind等API統合1.7

IE6/7/8非サポート

2.0

3.0.0Alpha

3.0.0Compat

3.0.0Beta1

3.0.0Compat開発中止

Page 7: jQuery3.0-beta1-point

本題

6

jQuery3.0.0beta1

Page 8: jQuery3.0-beta1-point

Major Changes

7

◆jQuery公式サイトよりリリース内容を紐解く

http://blog.jquery.com/2016/01/14/jquery-3-0-beta-released/

メジャー変更点を解説していきます。

Page 9: jQuery3.0-beta1-point

1: .show() and .hide() methods

8

◆.show()メソッドと.hide()メソッドの動作が変わります。(……が?)

<button id="show">Show</button><button id="hide">Hide</button><p id="view">( ´▽ ` )ノ</p>

<script>(function($){

$(function(){$("#show").on("click", function(){

console.log("表示");$("#view").show();

});$("#hide").on("click", function(){

console.log("非表示");$("#view").hide();

});});

})(jQuery)</script>

id=“view”に対して<style>設定

#view {

display: “none”;

}

-Alpha版.show()でdisplay: “block”; にならない!

-Beta版元に戻した ε-(´∀`; )

Page 10: jQuery3.0-beta1-point

2: Special case with `.data()` names

9

◆.data()メソッドのキャメルケースの取り扱いが変わります。

<button id="test1" data-foo-bar="bar">data属性(数字なし)</button><button id="test2" data-foo-420="420">data属性(数字あり)</button>

<script>(function($){

$(function(){$("#test1").on("click", function(){

console.log($(this).data("foo-bar"));console.log($(this).data("fooBar"));

});$("#test2").on("click", function(){

console.log($(this).data("foo-420"));console.log($(this).data("foo420"));

});});

})(jQuery)</script>

bar

bar

420undefined

Page 11: jQuery3.0-beta1-point

3: jQuery.Deferred is now Promises/A+ compatible

10

◆jQuery.DeferredのPromises/A+互換性向上

- jQuery1.5から追加された非同期処理、それがDeferred。

- Promises/A+やECMAScript2015のPromiseに互換性を向上させたそうだ。

- Promises/A+仕様テストをクリアしている代物。

Page 12: jQuery3.0-beta1-point

4: Added catch() to Deferred

11

◆Deferredsにcatch()メソッドを追加

- 嬉しい ( ^ω^ )

Page 13: jQuery3.0-beta1-point

5: Removed special-case Deferred methods in jQuery.ajax

12

◆jQuery.ajax()の特殊なDeferredメソッドを廃止

- jqXHRオブジェクトは、Promiseであるが、.abort() のような追加メソッドを持っている。

- .complete() .success() .error() .done() .fail() .always() は非推奨にしないけど、気をつけてね。

Page 14: jQuery3.0-beta1-point

6: Error cases don’t silently fail

13

◆エラーをエラーとして返すようになりました

- ちゃんとエラーが表示されます。あれ?ってならない。

<script>(function($){

$(function(){console.log($(window).offset());

});})(jQuery)

</script>

コンソールにエラーが表示されます

Page 15: jQuery3.0-beta1-point

7: .width(), .height(), .css(“width”), and .css(“height”) to return decimal values

14

◆.width()メソッドと.height()メソッドの戻り値を小数以下も返すように

<p id="test1" style="background: #cccccc;width: 100.05px;">width()の例</p>

<script>(function($){

$(function(){console.log($("#test1").width());

});})(jQuery)

</script>

小数点以下の値も返す

- そもそもブラウザによって返す値がバラバラの謎仕様

- そのせいで要素間にすきまができたりしてA型性格の人をイライラさせる。高見とか。

- 戻ってきた値に四捨五入や切り捨て・切り上げを自分でコントロールできる ( ́ ▽ ` )ノ

Page 16: jQuery3.0-beta1-point

8: Removed deprecated event aliases

15

◆非推奨のイベントエイリアスの廃止

- jQuery 1.8から非推奨だった.load, .unload, .errorが廃止しました。

- .on()を使いましょう。そういう話。イベントリスナーを登録するようにしてください。

<script>(function($){

$(function(){$(window).on("load", function() {

console.log("loadイベント(on)");});$(window).load(function() {

console.log("loadイベント(Alias)");});

});})(jQuery)

</script>

$(Selector).load() のようなエイリアスは使用し

ないこと!

Page 17: jQuery3.0-beta1-point

9: Animations now use requestAnimationFrame

16

◆requestAnimationFrameの復活

• setInterval()はそもそもアニメーション用のメソッドでない。

• ブラウザの描画更新単位にあわせるメソッド、それがrequestAnimationFrame

• jQuery1.6から採用された

• 何故か1.6.3で突然の別れ (ー ー;)

• どうやらjQuery内で不具合が発生した模様(キューが溜まりまくるとか、コンフリクトとか)

• ( ´▽ ` )ノ <なめらか

• ( ´▽ ` )ノ < CPUの負荷がさがる

• ( ´▽ ` )ノ <モバイルデバイスなどのバッテリーの減りを抑止

◆こんな恩恵をうけます

Page 18: jQuery3.0-beta1-point

10: .unwrap( selector )

17

◆.unwrap()メソッドでセレクターの指定ができるようになりました。

<div id="test0"><p id="test1"><a>wrap1</a></p><p id="test2"><a>wrap2</a></p><p id="test3"><a>wrap3</a></p><p id="test4"><a>wrap4</a></p>

</div>

<script>(function($){

$(function(){$("a").unwrap("#test3");

});})(jQuery)

</script>

<div id="test0"><p id="test1"><a>wrap1</a></p><p id="test2"><a>wrap2</a></p><a>wrap3</a><p id="test4"><a>wrap4</a></p>

</div>

<script>(function($){

$(function(){$("a").unwrap("#test3");

});})(jQuery)

</script>

Page 19: jQuery3.0-beta1-point

11: jQuery.fn.domManip no longer accessible

18

◆内部的に使用していたメソッドを隠蔽

例えば $.swap() とか。 1.12.1と2.2.0にもマージされたみたい。

Page 20: jQuery3.0-beta1-point

12: Massive speedups for some jQuery custom selectors

19

◆いくつかのカスタムセレクタのパフォーマンス改善

• :hidden や :visible などのカスタムセレクタを改修

• Google のポール・アイリッシュありがとうという話

最大で17倍高速化するよ ( ^ω^ )

Page 21: jQuery3.0-beta1-point

ご清聴ありがとうございました。

20

ありがとうございました。

Page 22: jQuery3.0-beta1-point

- jQuery 3.0 Alpha

http://blog.jquery.com/2015/07/13/jquery-3-0-and-jquery-compat-3-0-alpha-versions-released/

- jQuery 3.0 Beta

http://blog.jquery.com/2016/01/14/jquery-3-0-beta-released/

- jQuery Wikipedia

https://ja.wikipedia.org/wiki/JQuery

- Selector API

https://developer.mozilla.org/ja/docs/DOM/Locating_DOM_elements_using_selectors

- Sizzle

https://sizzlejs.com

参考URL

21