亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

提升jQuery的性能需要做好七件事

2019-11-20 10:49:24
字體:
來源:轉載
供稿:網友

做好七件事幫你提升jQuery的性能,想知道哪幾件事情嗎?

1. Append Outside of Loops

凡是觸及到DOM都是有代價的。如果你向DOM當中附加大量的元素,你會想一次性將它們全部附加進來,而不是分多次進行。當在循環當中附加元素就會產生一個常見的問題。

$.each( myArray, function( i, item ) {  var newListItem = "<li>" + item + "</li>";  $( "#ballers" ).append( newListItem ); });

一個常用的技巧是利用文檔片段(document fragment)。在循環的每一次迭代當中,將元素附加到片段而不是DOM元素當中。當循環結束后,將片段附加到DOM元素當中即可。

var frag = document.createDocumentFragment();$.each( myArray, function( i, item ) {  var newListItem = document.createElement( "li" );  var itemText = document.createTextNode( item );  newListItem.appendChild( itemText );  frag.appendChild( newListItem );});$( "#ballers" )[ 0 ].appendChild( frag );

另一個簡單的技巧是在循環的每次迭代當中,持續構建一個字符串。當循環結束后,將DOM元素的HTML設置成該字符串。

var myHtml = "";$.each( myArray, function( i, item ) {  myHtml += "<li>" + item + "</li>";});$( "#ballers" ).html( myHtml );

當然還有其它一些技巧可以供你嘗試。一個名為 jsperf 的站點為測試這些性能提供了一條好的出路。該網站允許你使用基準測試每一個技巧,并將其跨平臺的性能測試結果可視化的展現出來。

2. Cache Length During Loops

在for循環當中,不要每次都訪問數組的 length 屬性;應當事先將其緩存起來。

var myLength = myArray.length;for ( var i = 0; i < myLength; i++ ) {  // do stuff}

3. Detach Elements to Work with Them

操作DOM是緩慢的,因此你想盡可能減少對齊進行操作。jQuery在1.4版本當中引入了名為 detach() 的方法來幫助解決這一問題,它允許你在對元素進行操作時,將它們從DOM當中分離出來。

var $table = $( "#myTable" );var $parent = $table.parent();$table.detach();// ... add lots and lots of rows to table$parent.append( $table );

4. Don't Act on Absent Elements

如果你正打算在一個空的選擇器上運行大量的代碼,jQuery并不會給予任何的提示 -- 它將會繼續的執行,就像是沒有發生任何的錯誤。必須由你來驗證選擇器包含了多少元素。

// Bad: This runs three functions before it// realizes there's nothing in the selection$( "#nosuchthing" ).slideUp();// Better:var $mySelection = $( "#nosuchthing" );if ( $mySelection.length ) {  $mySelection.slideUp();}// Best: Add a doOnce plugin.jQuery.fn.doOnce = function( func ) {  this.length && func.apply( this );  return this;}$( "li.cartitems" ).doOnce(function() {
  // make it ajax! /o/
});

本指南特別適用于那些當選擇器不包含元素時還需要大量的開銷的 jQuery UI 部件。

5. Optimize Selectors

選擇器的優化和過去比起來并不是那么的重要,因為很多瀏覽器都實現了 document.querySelectorAll() 方法并且jQuery將選擇器的負擔轉移到了瀏覽器上面。但是仍然有一些技巧需要銘記在心。

基于ID的選擇器

以一個ID作為選擇器的開始總是最好的。

// Fast: $( "#container div.robotarm" );  // Super-fast: $( "#container" ).find( "div.robotarm" );

采用 .find() 方法的方式將更加的快速,因為第一個選擇器已經過處理,而無需通過嘈雜的選擇器引擎 -- ID-Only的選擇器已使用 document.getElementById() 方法進行處理,之所以快速,是因為它是瀏覽器的原生方法。

特異性

盡量詳細的描述選擇器的右側,對于左側則應反其道而行之。

// Unoptimized:$( "div.data .gonzalez" ); // Optimized: $( ".data td.gonzalez" );

盡量在選擇器的最右側使用 tag.class 的形式來描述選擇器,而在左側則盡量只使用 tag 或者 .class 。

避免過度使用特異性

 $( ".data table.attendees td.gonzalez" );  // Better: Drop the middle if possible. $( ".data td.gonzalez" );

去討好“DOM”總是有利于提升選擇器的性能,因為選擇器引擎在搜尋元素時無需進行太多的遍歷。

避免使用通用選擇器

如果一個選擇器明確或暗示它能在不確定的范圍內進行匹配將會大大影響性能。

$( ".buttons > *" ); // Extremely expensive.$( ".buttons" ).children(); // Much better.  $( ".category :radio" ); // Implied universal selection.$( ".category *:radio" ); // Same thing, explicit now.$( ".category input:radio" ); // Much better.復制代碼6. Use Stylesheets for Changing CSS on Many Elements

假如你使用 .css() 方法來改變超過20個元素的CSS,應當考慮為頁面添加一個樣式標簽作為替代,這樣做可以提升將近60%的速度。

// Fine for up to 20 elements, slow after that:$( "a.swedberg" ).css( "color", "#0769ad" );// Much faster:$( "<style type=/"text/css/">a.swedberg { color: #0769ad }</style>")  .appendTo( "head" );

7. Don't Treat jQuery as a Black Box

以上就是提升jQuery的性能需要做好的七件事,清楚了吧!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品va在线观看黑人| 亚洲大胆人体av| 欧美精品第一页在线播放| 日本国产一区二区三区| 日本精品va在线观看| 久久91精品国产91久久久| 国产伦精品免费视频| 4438全国亚洲精品在线观看视频| 亚洲成人精品在线| 韩国美女主播一区| 中文字幕视频一区二区在线有码| 精品亚洲国产视频| 欧美成人在线免费视频| 亚洲欧洲成视频免费观看| 国产丝袜一区二区三区| 亚洲japanese制服美女| 国产视频福利一区| 欧美日韩亚洲精品内裤| 欧美国产乱视频| 欧美一区二区三区四区在线| 国产亚洲激情视频在线| 91成人在线观看国产| 亚洲国产精品yw在线观看| 日韩在线免费视频| 狠狠躁夜夜躁人人爽天天天天97| 97**国产露脸精品国产| 国产激情999| 欧美日韩国产成人| 国产精品96久久久久久| 91中文在线观看| 色噜噜国产精品视频一区二区| 中文字幕在线观看日韩| 色悠久久久久综合先锋影音下载| 国产网站欧美日韩免费精品在线观看| 欧美视频免费在线| 国产一区视频在线| www.日韩免费| 57pao国产精品一区| 午夜剧场成人观在线视频免费观看| 欧美日本高清视频| 91精品国产自产在线| 久久国内精品一国内精品| 久久天天躁狠狠躁夜夜av| 国产精品白丝av嫩草影院| 久久精品国产综合| 久久综合国产精品台湾中文娱乐网| 亚洲欧美国产高清va在线播| 国产激情久久久久| 伊人av综合网| 欧美噜噜久久久xxx| 日韩欧亚中文在线| 欧美激情精品久久久久久免费印度| 亚洲无av在线中文字幕| 亚洲精品自拍偷拍| 亚洲一级黄色片| 日韩av在线免费看| 国产精品视频久久久| 亚洲人午夜精品| 国产精品91久久久| 亚洲女人天堂av| 亚洲欧美日韩天堂一区二区| 8x海外华人永久免费日韩内陆视频| 美女国内精品自产拍在线播放| 成人国产精品免费视频| 日韩小视频在线观看| 欧美激情精品久久久久久变态| 亚洲午夜女主播在线直播| 欧美黑人xxxx| 国产97人人超碰caoprom| 久久九九国产精品怡红院| 日韩av资源在线播放| 久久国产精品影视| 欧美理论电影在线播放| 欧美午夜性色大片在线观看| 热re99久久精品国产66热| 国产精品视频自拍| 国产精品视频色| xvideos亚洲人网站| 国产大片精品免费永久看nba| 一区二区三区国产视频| 九九九久久国产免费| 精品国产乱码久久久久久虫虫漫画| 国产精品久久久久免费a∨大胸| 亚洲va码欧洲m码| 久久99久国产精品黄毛片入口| 久久福利视频网| 日韩在线中文字| 欧美日韩国产影院| 久久精品视频播放| 国产脚交av在线一区二区| 日韩精品久久久久久久玫瑰园| 精品亚洲永久免费精品| 久久精品视频网站| 国产精品入口尤物| 成年人精品视频| 国产精品爽爽爽爽爽爽在线观看| 97国产在线观看| 日韩在线播放av| 亚洲欧美自拍一区| 日韩中文字幕在线| 国产精品夫妻激情| 一本色道久久综合狠狠躁篇怎么玩| 亚洲乱亚洲乱妇无码| 久久久999国产精品| 欧美性视频精品| 亚洲精品大尺度| 永久免费精品影视网站| 亚洲欧美中文日韩在线| 97视频在线免费观看| 91av网站在线播放| 亚洲电影免费观看| 91在线视频免费| 久久偷看各类女兵18女厕嘘嘘| 欧美一级在线亚洲天堂| 欧美在线不卡区| 亚洲国产另类 国产精品国产免费| 欧美黑人视频一区| 久久久人成影片一区二区三区观看| 亚洲国产高清高潮精品美女| 日本午夜精品理论片a级appf发布| 国产亚洲aⅴaaaaaa毛片| 亚洲国产免费av| 精品福利樱桃av导航| 一区二区三区国产在线观看| 欧美在线一区二区视频| 欧美成人合集magnet| 人妖精品videosex性欧美| 亚洲视频在线观看视频| 日韩高清免费观看| 精品欧美aⅴ在线网站| 日韩中文理论片| 日本aⅴ大伊香蕉精品视频| 国产欧美 在线欧美| 日韩精品www| 久久国产精品99国产精| 欧美疯狂做受xxxx高潮| 8050国产精品久久久久久| 精品magnet| 国产成人精品日本亚洲专区61| 国产成人精品av在线| 国产成人精品网站| 久久全国免费视频| 97成人在线视频| 91免费人成网站在线观看18| 国产成人一区二区| 亚洲一区二区久久久| 久久精品国亚洲| 亚洲第一av网站| 欧美日本高清一区| 亚洲精品在线视频| 九九热这里只有在线精品视| 亚洲自拍偷拍在线| 日韩成人中文字幕| 亚洲精品资源美女情侣酒店| 亚洲成人精品视频在线观看| 精品调教chinesegay| 91社影院在线观看| 激情亚洲一区二区三区四区| 萌白酱国产一区二区| 亚洲片国产一区一级在线观看| 国产剧情久久久久久| 欧美限制级电影在线观看| 精品在线欧美视频| 久久亚洲精品中文字幕冲田杏梨|