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

首頁 > 編程 > JavaScript > 正文

如何書寫高質量jQuery代碼(使用jquery性能問題)

2019-11-20 14:23:26
字體:
來源:轉載
供稿:網友

1.正確引用jQuery

1.盡量在body結束前才引入jQuery,而不是在head中。
2.借助第三方提供的CDN來引入jQuery,同時注意當使用第三方CDN出現問題時,要引入本地的jQuery文件。(對于已經使用了cdn的網站可以忽略,現在用戶帶寬都升級了,這個可以忽略了,放別人機器不一定穩定)
3.如果在</body>前引入script文件的話,就不用寫document.ready了,因為這時執行js代碼時DOM已經加載完畢了。

<body> <script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="jquery1.8.min.js">/x3C/script>')</script></body>

2.優化jQuery選擇器

高效正確的使用jQuery選擇器是熟練使用jQuery的基礎,而掌握jQuery選擇器需要一定的時間積累,我們開始學習jQuery時就應該注意選擇器的使用。

<div id="nav" class="nav"> <a class="home" href="http://www.49028c.com">武林網</a> <a class="articles" href="http://www.49028c.com/list/list_172_1.htm">jQuery教程</a></div>

如果我們選擇class為home的a元素時,可以使用下邊代碼:

$('.home'); //1$('#nav a.home'); //2$('#nav').find('a.home'); //3

1.方法1會使jQuery在整個DOM中查找class為home的a元素,性能可想而知。
2.方法2為要查找的元素添加了上下文,在這里變為查找id為nav的子元素,查找性能得到了很大提升。
3.方法3使用了find方法,它的速度更快,所以方法三最好。

關于jQuery選擇器的性能優先級,ID選擇器快于元素選擇器,元素選擇器快于class選擇器。因為ID選擇器和元素選擇器是原生的JavaScript操作,而類選擇器不是,大家順便可以看下find context 區別,find() children區別。

3.緩存jQuery對象

緩存jQuery對象可以減少不必要的DOM查找,關于這點大家可以參考下緩存jQuery對象來提高性能。

4.正確使用事件委托
事件委托可以使事件更好的執行,在動態添加的元素上綁定事件也需要委托來實現,在新版本的jQuery中推薦大家使用on來給元素綁定一個或多個事件的處理函數。

<table id="t"> <tr>  <td>我是單元格</td> </tr></table>

比如我們要在上邊的單元格上綁定一個單擊事件,不注意的朋友可能隨手寫成下邊的樣子:

$('#t').find('td').on('click', function () { $(this).css({ 'color': 'red', 'background': 'yellow' });});

這樣會為每個td綁上事件,在為100個單元格綁定click事件的測試中,兩者性能相差7倍之多,好的做法應該是下邊寫法:

$('#t').on('click', 'td', function () { $(this).css({ 'color': 'red', 'background': 'yellow' });});

5.精簡jQuery代碼
如在上述代碼中我們對jQuery代碼進行了適當的合并,類似的還有.attr()方法等,我們沒有寫成下邊的方式:

$('#t').on('click', 'td', function () { $(this).css('color', 'red').css('background', 'yellow');});

6.減少DOM操作
剛開始使用jQuery時可能會頻繁的操作DOM,這是相當耗費性能的。如我們要在body中動態輸出一個表格,一些朋友會這樣寫:

var $t = $('body');$t.append('<table>');$t.append('<tr><td>1</td></tr>');$t.append('</table>');

好的做法:

$('body').append('<table><tr><td>1</td></tr></table>');

這樣在拼接完table串后再添加到body中,對DOM的操作只需一次。群里以前有朋友就因為這個導致在IE下輸出時出現問題,而關于字符串的拼接可以參考下最快創建字符串的方法。

7.不使用jQuery

原生函數總是最快的,這點不難理解,在代碼書寫中我們不應該忘記原生JS。

就先總結這幾條吧,每條建議并不難理解,但總結全面的話還是要花費不少時間的。如在減少代碼段中,如果需要根據條件從數組中得到新數組時,可以使用$.grep() 方法,如果你在使用jQuery時有自己必得的話,歡迎在留言中和大家分享!

下面是其它網友的補充:

注意定義jQuery變量的時候添加var關鍵字
  這個不僅僅是jQuery,所有javascript開發過程中,都需要注意,請一定不要定義成如下:

$loading = $('#loading'); //這個是全局定義,不知道哪里位置倒霉引用了相同的變量名,就會郁悶至死的

請使用一個var來定義變量
  如果你使用多個變量的話,請如下方式定義:

復制代碼 代碼如下:

var page = 0,
  $loading = $('#loading'),
  $body = $('body');

不要給每一個變量都添加一個var關鍵字,除非你有嚴重的強迫癥
定義jQuery變量
  申明或者定義變量的時候,請記住如果你定義的是jQuery的變量,請添加一個$符號到變量前,如下:

var$loading = $('#loading');

這里定義成這樣的好處在于,你可以有效的提示自己或者其它閱讀你代碼的用戶,這是一個jQuery的變量。

DOM操作請務必記住緩存(cache)

在jQuery代碼開發中,我們常常需要操作DOM,DOM操作是非常消耗資源的一個過程,而往往很多人都喜歡這樣使用jQuery:

復制代碼 代碼如下:

$('#loading').html('完畢');
$('#loading').fadeOut();

代碼沒有任何問題,你也可以正常運行出結果,但是這里注意你每次定義并且調用$('#loading')的時候,都實際創建了一個新的變量,如果你需要重用的話,記住一定要定義到一個變量里,這樣可以有效的緩存變量內容,如下:

復制代碼 代碼如下:

var $loading = $('#loading');
$loading.html('完畢');$loading.fadeOut();

這樣性能會更好。

使用鏈式操作

  上面那個例子,我們可以寫的更簡潔一些:

復制代碼 代碼如下:

var $loading = $('#loading');
$loading.html('完畢').fadeOut();

精簡jQuery代碼

  盡量把一些代碼都整合到一起,請勿這樣編碼:

復制代碼 代碼如下:

// ??!反面人物$button.click(function(){
    $target.css('width','50%');
    $target.css('border','1px solid #202020');
    $target.css('color','#fff');
});

應該這樣書寫:

復制代碼 代碼如下:

$button.click(function(){
    $target.css({'width':'50%','border':'1px solid #202020','color':'#fff'});
});

避免使用全局類型的選擇器

  請勿如下方式書寫:$('.something > *');
  這樣書寫更好:$('.something').children();

不要疊加多個ID

  請勿如下書寫:$('#something #children');
  這樣就夠了:$('#children');

多用邏輯判斷||或者&&來提速

  請勿如下書寫:

復制代碼 代碼如下:

if(!$something) {
    $something = $('#something ');
}

  這樣書寫性能更好:

$something= $something|| $('#something');
 
 
盡量使用更少的代碼

  與其這樣書寫:if(string.length > 0){..}

  不如這樣書寫:if(string.length){..}

盡量使用 .on方法
  如果你使用比較新版本的jQuery類庫的話,請使用.on,其它任何方法都是最終使用.on來實現的。

  盡量使用最新版本的jQuery
  最新版本的jQuery擁有更好的性能,但是最新的版本可能不支持ie6/7/8,所以大家需要自己針對實際情況選擇。

  盡量使用原生的Javascript
  如果使用原生的Javascript也可以實現jQuery提供的功能的話,推薦使用原生的javascript來實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频在线播放完整版免费观看| 国产最新精品视频| 久久艹在线视频| 欧美亚洲成人xxx| 欧美日韩中文字幕在线视频| 久久久精品国产一区二区| 国产亚洲成精品久久| 欧美专区日韩视频| 欧美激情中文字幕乱码免费| 97视频免费看| 亚洲人成网7777777国产| 久久久女人电视剧免费播放下载| 国产日本欧美一区二区三区| 日韩经典一区二区三区| 亚洲美女自拍视频| 欧美裸身视频免费观看| 精品女厕一区二区三区| 日韩国产欧美精品在线| 日韩在线视频二区| 一本色道久久88亚洲综合88| 亚洲欧美www| 国产精品美女免费视频| 亚洲国产精品va在看黑人| 国产精品一区二区三区毛片淫片| 在线观看国产成人av片| 久久久中文字幕| 亚洲高清免费观看高清完整版| 成人性生交大片免费观看嘿嘿视频| 午夜精品蜜臀一区二区三区免费| 欧美另类精品xxxx孕妇| 91久久久久久久久| 日韩激情第一页| 国外视频精品毛片| 国产精品video| 91在线视频免费| 97精品国产91久久久久久| 国产精品va在线播放| 国产精品高清网站| 久久久久久高潮国产精品视| 亚洲人成在线免费观看| 91国在线精品国内播放| 国产日韩精品在线观看| 欧美高清在线观看| 91精品久久久久久久久中文字幕| 欧美日韩精品在线播放| 欧美亚洲日本黄色| 91色在线观看| 日韩欧美精品在线观看| 96pao国产成视频永久免费| 青青草国产精品一区二区| 久久久久久久久91| 欧美一区二粉嫩精品国产一线天| 欧美第一淫aaasss性| 国产亚洲精品va在线观看| 亚洲网在线观看| 久久综合伊人77777| 国产精品久久久久久搜索| 精品视频—区二区三区免费| 久久全球大尺度高清视频| 国产精品无码专区在线观看| 日本欧美黄网站| 国内精品久久久久久中文字幕| 色综合亚洲精品激情狠狠| 亚洲精品电影在线| 尤物yw午夜国产精品视频明星| www.久久久久| 欧美亚洲国产视频小说| 欧美日韩中文字幕在线| 国产三级精品网站| 久久不射热爱视频精品| 国产精品一区二区久久久久| 国产成人精品综合久久久| 国产午夜精品视频免费不卡69堂| 一区二区三欧美| 精品国产一区二区三区久久久狼| 高清一区二区三区四区五区| 九九久久综合网站| 97成人超碰免| 日韩精品中文字幕久久臀| 亚洲剧情一区二区| 成人激情视频小说免费下载| 久久精品99久久久久久久久| 日韩视频免费中文字幕| 亚洲欧美在线一区二区| 欧美一级淫片丝袜脚交| 欧美疯狂xxxx大交乱88av| 日本一区二区不卡| 欧美日韩中文在线观看| 亚洲欧美激情一区| 亚洲欧美资源在线| 国产精品无av码在线观看| 亚洲国产一区二区三区在线观看| 亚洲视频专区在线| 日韩av电影免费观看高清| 日本久久久久久| 久热精品视频在线免费观看| 日本久久久久久久久久久| 亚洲欧美日韩在线高清直播| 日韩av一区二区在线观看| 欧美劲爆第一页| 欧美老女人性视频| 国产精品国产福利国产秒拍| 精品久久久久久久久久久久| 欧美激情免费观看| 欧美一性一乱一交一视频| 国产偷国产偷亚洲清高网站| 国产精品日韩欧美综合| 亚洲999一在线观看www| 国产suv精品一区二区| 91av视频在线播放| 精品中文视频在线| 成人性教育视频在线观看| 亚洲欧美一区二区激情| 亚洲欧美国产va在线影院| 久久理论片午夜琪琪电影网| 欧美性猛交xxxxx免费看| 欧美成人免费网| 欧美多人乱p欧美4p久久| 欧美日本中文字幕| 欧美电影在线观看完整版| 欧美专区日韩视频| 亚洲iv一区二区三区| 久久久成人精品视频| 啪一啪鲁一鲁2019在线视频| 日韩久久免费视频| 亚洲天堂av高清| 日本亚洲欧洲色α| 亚洲xxxx妇黄裸体| 欧美日韩免费在线观看| 国产精品午夜国产小视频| 欧美成人激情视频| 亚洲精品久久久久久下一站| 92版电视剧仙鹤神针在线观看| 精品一区二区三区三区| 亚洲激情视频在线| 日本精品一区二区三区在线| 成人乱人伦精品视频在线观看| 日韩精品电影网| 亚洲天堂av综合网| 成人国产精品一区二区| 色播久久人人爽人人爽人人片视av| 亚洲国产91精品在线观看| 国产做受高潮69| 68精品国产免费久久久久久婷婷| 国产视频在线观看一区二区| 久久精品国产久精国产一老狼| 亚洲韩国日本中文字幕| 日本久久久久久久久| 亚洲精品98久久久久久中文字幕| 日韩美女在线看| 欧美孕妇与黑人孕交| 欧美—级高清免费播放| 国产精品狠色婷| 亚洲电影免费观看高清完整版在线| 国产欧美精品日韩精品| 国产精品自拍视频| 国产精品高潮呻吟久久av无限| 久久精品99久久香蕉国产色戒| 国产成人精品久久二区二区91| 欧美精品免费在线观看| 国产精品一区二区久久久| 成人久久久久久| 色噜噜久久综合伊人一本| 欧美色另类天堂2015|