亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

jQuery 3.0 beta 發(fā)布

LeanCloud / 494人閱讀

摘要:回調(diào)函數(shù)將固定為異步執(zhí)行。這些將被移除這些應(yīng)該會(huì)保留需要注意的是,那些繼續(xù)存在的回調(diào)函數(shù)不會(huì)有任何變化,只有的方法會(huì)受影響。

創(chuàng)作不夠,譯文來湊。

跟上篇一樣是編譯,不準(zhǔn)備逐字翻。比如,我會(huì)把“we”譯成“jQuery官方團(tuán)隊(duì)”,或者“他們”。

初譯版,待校正。這篇文章比較長,翻譯難度也不小,如果有問題,歡迎提出,我盡量修改。

正文開始。

歪果仁也要雙喜臨門,于是 jQuery 官方團(tuán)隊(duì)選在 jQuery 面世10周年之際發(fā)布 3.0 beta。大家還記得上周發(fā)布的1.x和2.x小版本更新吧,他們?nèi)蘸髸?huì)繼續(xù)維護(hù)這倆分支,一段時(shí)間,當(dāng)然只改bug。因?yàn)?.0才是未來嘛!

需要支持IE6-8的可憐蟲請(qǐng)繼續(xù)使用1.12分支上的最新版。

沒有兼容版了

看過 alpha 發(fā)布公告的同學(xué)可能還記得,他們起初準(zhǔn)備同時(shí)發(fā)布3.0和“3.0兼容版”,適配老瀏覽器。但是現(xiàn)在他們想通了。微軟今年1月12日宣布放棄IE8910,jQuery 會(huì)保守一些,不過至少不打算支持IE8,所以就放棄所謂的兼容版,以后就只有一個(gè)版本了。

盡管大版本號(hào)發(fā)生變化,jQuery 團(tuán)隊(duì)仍然認(rèn)為升級(jí)不會(huì)太麻煩。大變化是有,不過影響應(yīng)該沒有很大,而且他們還開發(fā)了3.0專用遷移插件,可以幫助我們找到代碼中的兼容性問題。所以,請(qǐng)盡早使用新版本,并及時(shí)將體驗(yàn)反饋給他們,這樣才能讓jQuery 越來越好。

你可以直接通過CDN使用:

https://code.jquery.com/jquery-3.0.0-beta1.js

https://code.jquery.com/jquery-3.0.0-beta1.min.js

或者用NPM安裝到本地

npm install jquery@3.0.0-beta1
重點(diǎn)變化

接下來就是需要關(guān)注的新功能、升級(jí)、以及 Bug 修正了。完整列表見于 Github。

.show().hide()

剛啟動(dòng)3.0的時(shí)候,他們嘗試將這兩個(gè)方法修改為“刪除行內(nèi) display:none 樣式”(.show())和 “增加行內(nèi) display:none 樣式”(.hide())。這樣可以極大的簡化實(shí)現(xiàn)所需的代碼,并且顯著改善性能(計(jì)算量大幅下降了嘛)。但是,這給廣大用戶帶來了不小的麻煩,因?yàn)橐瞥?display:none 很多時(shí)候并不能讓元素顯示出來,比如有其它CSS將它置為隱藏。最終 jQuery 團(tuán)隊(duì)不得不承認(rèn)沒有辦法完成期望中的簡化。

于是他們放棄了這次嘗試。不過,即便如此,他們還是想辦法改善了隱藏大量元素時(shí)的性能。

.data() 的注意事項(xiàng)

為了兼容 HTML5 dataset 規(guī)范,jQuery 團(tuán)隊(duì)升級(jí)了 .data() 實(shí)現(xiàn)。如今所有的 key 都會(huì)從短線連接(a-bc-de)轉(zhuǎn)換成駝峰式(aBcDe),數(shù)字不再轉(zhuǎn)換。于是,“foo-bar”轉(zhuǎn)換后和“fooBar”是一樣的,但“foo-42”和“foo42”就不一樣。當(dāng)用戶直接使用 .data() 取所有數(shù)據(jù)時(shí),就需要注意這個(gè)區(qū)別,尤其不要再誤用 .data("foo42") 取代 .data("foo-42")

問題匯報(bào)處

jQuery.Deferred 現(xiàn)在兼容 Promises/A+

Promise 我用的比較少,看到的文檔也不多,不太清楚里面的幾個(gè)名詞怎么翻譯,所以我盡量用括號(hào)備注。

jQuery.Deferred 得到升級(jí),兼容 Promises/A+ 和 ES2015 Promises,并且已經(jīng)通過 Promises/A+ Compliance Test Suite 認(rèn)證。這意味著 .then() 的使用機(jī)制發(fā)生了非常顯著的變動(dòng):

.then() 回調(diào)函數(shù)里拋出的異常,會(huì)成為失敗(rejection)處理函數(shù)的參數(shù)。之前,異常會(huì)冒泡,中斷函數(shù)執(zhí)行,并永久性鎖死上下級(jí) Deferred 對(duì)象。

.then() 返回的 Deferred 對(duì)象,如果它的回調(diào)函數(shù)拋出異常,將會(huì)調(diào)用失?。╮ejection)處理函數(shù),并作為參數(shù)傳進(jìn)去;如果返回其它不能繼續(xù) .then() 的對(duì)象,就會(huì)調(diào)用成功(fulfillment)處理函數(shù),返回值也作為參數(shù)傳進(jìn)去。以前,失敗處理函數(shù)返回任何值都會(huì)將其置為失敗。

回調(diào)函數(shù)將固定為異步執(zhí)行。以前它們?cè)诮壎ɑ蛘呓鉀Q時(shí)會(huì)被立即執(zhí)行。

進(jìn)度的回調(diào)函數(shù)不會(huì)再把它綁定的 Deferred 對(duì)象標(biāo)記為完成。

以下代碼演示當(dāng)上級(jí) Deferred 觸發(fā) rejected 時(shí),下級(jí)調(diào)用失敗回調(diào)函數(shù)之后的結(jié)果:

var parent = jQuery.Deferred();
var child = parent.then( null, function() {
  return "bar";
});
var callback = function( state ) {
  return function( value ) {
    console.log( state, value );
    throw new Error( "baz" );
  };
};
var grandchildren = [
  child.then( callback( "fulfilled" ), callback( "rejected" ) ),
  child.then( callback( "fulfilled" ), callback( "rejected" ) )
];
parent.reject( "foo" );
console.log( "parent resolved" );

在 jQuery 3.0 中,會(huì)先輸出“parent resolved”,然后再執(zhí)行回調(diào)函數(shù);然后下級(jí) Deferred 進(jìn)入失敗狀態(tài),執(zhí)行函數(shù),返回“bar”;“bar”被轉(zhuǎn)化為三級(jí) Deferred 的成功,于是輸出“fulfilled bar”;接著,拋出錯(cuò)誤“baz”,導(dǎo)致三級(jí)函數(shù)進(jìn)入錯(cuò)誤處理;最后,輸出“rejected baz”。如果是之前的版本,下級(jí) Deferred 會(huì)認(rèn)為上級(jí) Deferred 失敗,進(jìn)入錯(cuò)誤處理,輸出“rejected bar”;并且在未捕獲的錯(cuò)誤“baz”被拋出后,整個(gè)進(jìn)程立刻被終止;此時(shí),由于三級(jí)函數(shù)未處理完,“parent resolved”也不會(huì)輸出。

捕獲異常不僅對(duì)在瀏覽器里調(diào)試有幫助,在失敗后的回調(diào)函數(shù)中處理它們,也使得代碼更加直觀合理。請(qǐng)謹(jǐn)記,這也意味著使用 Promise 模式的時(shí)候,要至少設(shè)置一個(gè)函數(shù)處理失敗。不然的話,所有錯(cuò)誤都會(huì)被忽略掉。

如果你還想使用以前的代碼,可以用 .pipe() 函數(shù)替換 .then()。后者雖然已經(jīng)被標(biāo)記為不建議使用,但它接口一樣,而且會(huì)暫時(shí)延續(xù)之前的邏輯。

我們還開發(fā)了輔助調(diào)試調(diào)試 Promises/A+ 的工具。如果你覺得有些錯(cuò)誤好像沒觸發(fā)出來,可以試用之。

jQuery.when 函數(shù)也升級(jí)了,現(xiàn)在可以傳入任何支持 .then() 的對(duì)象,包括原生 Promise 對(duì)象。

https://github.com/jquery/jquery/issues/1722
https://github.com/jquery/jquery/issues/2102

Deferreds 對(duì)象增加 .catch() 方法

Promise 對(duì)象增加 .catch()方法, 作為 .then(null, fn) 的別名,專門處理失敗。

問題匯報(bào)處

移除 jQuery.ajax 的 Deferred 同名方法的特殊用法

jqXHR 是 Promise 對(duì)象,同時(shí)也有一些專有方法,比如 .abort(),用于取消請(qǐng)求。

現(xiàn)在,越來越多的開發(fā)者已經(jīng)在異步中(如AJAX)使用 Promise 模式,如此一來,jQuery.ajax 返回的對(duì)象再包含特殊用法就不合時(shí)宜了。

success, error, complete(這些將被移除)
done, fail, always(這些應(yīng)該會(huì)保留)

需要注意的是,那些繼續(xù)存在的回調(diào)函數(shù)不會(huì)有任何變化,只有 Promise 的方法會(huì)受影響。

問題匯報(bào)處

錯(cuò)誤不再被悄無聲息地消失

有時(shí)候我們難免會(huì)想:“window 的偏移值(window.offset)是多少?”等你回過味兒來你會(huì)發(fā)現(xiàn)這個(gè)問題其實(shí)挺蠢的,window 怎么會(huì)有偏移呢?

過去,jQuery 面對(duì)這種情況,從來不會(huì)拋出錯(cuò)誤,而是盡量返回有意義的值,比如剛才那個(gè)問題,就返回 { top: 0, left: 0 }。3.0之后,他們嘗試不再什么亂七八糟的代碼都兼容,而是直接拋出錯(cuò)誤,讓用戶不要忽略這些問題。大家可以試用 beta 版,看看你的代碼有沒有“參數(shù)無效”之類的錯(cuò)誤。

問題匯報(bào)處

.width(),.height(),.css("width"),.css("height")都將返回小數(shù)

之前,jQuery 取寬高的時(shí)候會(huì)返回四舍五入之后的整數(shù)值。有些瀏覽器可以返回次像素,比如 IE 和 Firefox,有些用戶需要這些精細(xì)的數(shù)據(jù)來調(diào)整布局。jQuery 官方團(tuán)隊(duì)認(rèn)為這項(xiàng)變化對(duì)大多數(shù)人沒有影響,不過如果你受此困擾,也請(qǐng)告知他們。

問題匯報(bào)處

移除廢棄的事件別名

jQuery 1.8之后棄用的 .load,.unload,.error 方法被正式移除。以后都請(qǐng)使用 .on() 注冊(cè)事件偵聽器。

問題匯報(bào)處

使用 requestAnimationFrame 改善動(dòng)畫效果

新版 jQuery 在支持 requestAnimationFrame 的平臺(tái)上會(huì)自動(dòng)使用它來改善性能。除去 IE9 和 低于4.4的Android,都可以藉此讓動(dòng)畫效果更平滑,占用更少的CPU時(shí)間,降低移動(dòng)設(shè)備的電力損耗。

其實(shí) jQuery 團(tuán)隊(duì)幾年前就曾嘗試使用這項(xiàng)技術(shù),但是當(dāng)時(shí)遇到很嚴(yán)重的兼容性問題,以致于不得不放棄。如今他們采用新策略,當(dāng)瀏覽器 tab 不顯示時(shí)掛起動(dòng)畫,這樣就可以規(guī)避大部分問題。不過這樣一來,那些必須依賴動(dòng)畫全局實(shí)時(shí)播放的功能就無法實(shí)現(xiàn)了。

.unwrap( selector )

3.0之前,.unwrap() 方法不接受任何參數(shù)。如今,用戶可以通過傳入選擇器來移除指定的外部容器。

問題匯報(bào)處

jQuery.fn.domManip 不能再使用了

1.12 和 2.2 版本把 jQuery.dir,jQuery.sibling,jQuery.buildFragmentjQuery.access,和 jQuery.swap 都修改為私有函數(shù)。現(xiàn)在,jQuery.fn.domManip 也一樣。它們未來都只允許內(nèi)部使用,不會(huì)被載入使用文檔。官方團(tuán)隊(duì)認(rèn)為這樣做可以避免用戶困惑。

https://github.com/jquery/jquery/pull/2182
https://github.com/jquery/jquery/issues/2224
https://github.com/jquery/jquery/issues/2225

jQuery 自定義選擇器提速

拜 Paul Irish 在 Google 的工作所賜,新版 jQuery 可以躲過一些坑,比如前文提到的 :visible,通過減少冗余代碼,獲得了17倍的速度提升!

但用戶仍需小心,即便經(jīng)過優(yōu)化,:visible:hidden 選擇器仍然會(huì)消耗大量的系統(tǒng)資源,因?yàn)樗鼈冃枰獮g覽器檢查元素是否顯示在頁面上。在最壞的情況下,有可能需要重新計(jì)算全部 CSS 樣式和頁面布局!當(dāng)然也不是說不要用(不然還寫它做甚),只是記得測試一下,看有沒有因此導(dǎo)致性能問題。

這項(xiàng)工作他們 1.12/2.2 時(shí)就完成了,只不過拿到這里來說。

問題匯報(bào)處

原文:jQuery 3.0 Beta Released

我的博客:jQuery 3.0 beta 發(fā)布

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91592.html

相關(guān)文章

  • TiDB 3.0 Beta Release Notes

    摘要:年月日,發(fā)布版,對(duì)應(yīng)的。相比版本,該版本對(duì)系統(tǒng)穩(wěn)定性優(yōu)化器統(tǒng)計(jì)信息以及執(zhí)行引擎做了很多改進(jìn)。新特性支持支持支持支持優(yōu)化器重新支持聚合消除的優(yōu)化規(guī)則優(yōu)化子查詢,將其轉(zhuǎn)化為添加變量以支持新的優(yōu)化器。 2019 年 1 月 19 日,TiDB 發(fā)布 3.0 Beta 版,對(duì)應(yīng) master branch 的 TiDB-Ansible。相比 2.1 版本,該版本對(duì)系統(tǒng)穩(wěn)定性、優(yōu)化器、統(tǒng)計(jì)信息以...

    goji 評(píng)論0 收藏0
  • 王下邀月熊_Chevalier的前端每周清單系列文章索引

    摘要:感謝王下邀月熊分享的前端每周清單,為方便大家閱讀,特整理一份索引。王下邀月熊大大也于年月日整理了自己的前端每周清單系列,并以年月為單位進(jìn)行分類,具體內(nèi)容看這里前端每周清單年度總結(jié)與盤點(diǎn)。 感謝 王下邀月熊_Chevalier 分享的前端每周清單,為方便大家閱讀,特整理一份索引。 王下邀月熊大大也于 2018 年 3 月 31 日整理了自己的前端每周清單系列,并以年/月為單位進(jìn)行分類,具...

    2501207950 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<