• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    編寫更好的jQuery代碼的建議

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:31:31
    文檔

    編寫更好的jQuery代碼的建議

    編寫更好的jQuery代碼的建議:首先,在腦子里牢牢記住jQuery就是javascript。這意味著我們應(yīng)該采取相同的編碼慣例,風(fēng)格指南和最佳實踐。首先,如果你是一個javascript新手,我建議您閱讀 《JavaScript初學(xué)者的最佳實踐》 ,這是一篇高質(zhì)量的javascript教程,接觸jQuery之前最
    推薦度:
    導(dǎo)讀編寫更好的jQuery代碼的建議:首先,在腦子里牢牢記住jQuery就是javascript。這意味著我們應(yīng)該采取相同的編碼慣例,風(fēng)格指南和最佳實踐。首先,如果你是一個javascript新手,我建議您閱讀 《JavaScript初學(xué)者的最佳實踐》 ,這是一篇高質(zhì)量的javascript教程,接觸jQuery之前最

    首先,在腦子里牢牢記住jQuery就是javascript。這意味著我們應(yīng)該采取相同的編碼慣例,風(fēng)格指南和最佳實踐。

    首先,如果你是一個javascript新手,我建議您閱讀 《JavaScript初學(xué)者的最佳實踐》 ,這是一篇高質(zhì)量的javascript教程,接觸jQuery之前最好先閱讀。

    當(dāng)你準(zhǔn)備使用jQuery,我強烈建議你遵循下面這些指南:

    緩存變量

    DOM遍歷是昂貴的,所以盡量將會重用的元素緩存。

    // 糟糕
    h = $('#element').height();
    $('#element').css('height',h-20);
    // 建議
    $element = $('#element');
    h = $element.height();
    $element.css('height',h-20);

    避免全局變量

    jQuery與javascript一樣,一般來說,最好確保你的變量在函數(shù)作用域內(nèi)。

    // 糟糕
    $element = $('#element');
    h = $element.height();
    $element.css('height',h-20);
    // 建議
    var $element = $('#element');
    var h = $element.height();
    $element.css('height',h-20);

    使用匈牙利命名法

    在變量前加$前綴,便于識別出jQuery對象。

    // 糟糕
    var first = $('#first');
    var second = $('#second');
    var value = $first.val();
    // 建議 - 在jQuery對象前加$前綴
    var $first = $('#first');
    var $second = $('#second'),
    var value = $first.val();

    使用 Var 鏈(單 Var 模式)

    將多條var語句合并為一條語句,我建議將未賦值的變量放到后面。

    var
     $first = $('#first'),
     $second = $('#second'),
     value = $first.val(),
     k = 3,
     cookiestring = 'SOMECOOKIESPLEASE',
     i,
     j,
     myArray = {};

    請使用'On'

    在新版jQuery中,更短的 on(“click”) 用來取代類似 click() 這樣的函數(shù)。在之前的版本中 on() 就是 bind()。自從jQuery 1.7版本后,on()?附加事件處理程序的首選方法。然而,出于一致性考慮,你可以簡單的全部使用 on()方法。

    /

    / 糟糕
    $first.click(function(){
     $first.css('border','1px solid red');
     $first.css('color','blue');
    });
    $first.hover(function(){
     $first.css('border','1px solid red');
    })
    // 建議
    $first.on('click',function(){
     $first.css('border','1px solid red');
     $first.css('color','blue');
    })
    $first.on('hover',function(){
     $first.css('border','1px solid red');
    })

    精簡javascript

    一般來說,最好盡可能合并函數(shù)。

    // 糟糕
     
    $first.click(function(){
     $first.css('border','1px solid red');
     $first.css('color','blue');
    });
     
    // 建議
     
    $first.on('click',function(){
     $first.css({
     'border':'1px solid red',
     'color':'blue'
     });
    });

    鏈?zhǔn)讲僮?/p>

    jQuery實現(xiàn)方法的鏈?zhǔn)讲僮魇欠浅H菀椎摹O旅胬眠@一點。

    // 糟糕
    $second.html(value);
    $second.on('click',function(){
     alert('hello everybody');
    });
    $second.fadeIn('slow');
    $second.animate({height:'120px'},500);
    // 建議
    $second.html(value);
    $second.on('click',function(){
     alert('hello everybody');
    }).fadeIn('slow').animate({height:'120px'},500);

    維持代碼的可讀性

    伴隨著精簡代碼和使用鏈?zhǔn)降耐瑫r,可能帶來代碼的難以閱讀。添加縮緊和換行能起到很好的效果。

    // 糟糕
    $second.html(value);
    $second.on('click',function(){
     alert('hello everybody');
    }).fadeIn('slow').animate({height:'120px'},500);
    // 建議
    $second.html(value);
    $second
     .on('click',function(){ alert('hello everybody');})
     .fadeIn('slow')
     .animate({height:'120px'},500);

    選擇短路求值

    短路求值是一個從左到右求值的表達(dá)式,用 &&(邏輯與)或 || (邏輯或)操作符。

    // 糟糕
    function initVar($myVar) {
     if(!$myVar) {
     $myVar = $('#selector');
     }
    }
    // 建議
    function initVar($myVar) {
     $myVar = $myVar || $('#selector');
    }

    選擇捷徑

    精簡代碼的其中一種方式是利用編碼捷徑。

    // 糟糕
    if(collection.length > 0){..}
    // 建議
    if(collection.length){..}

    繁重的操作中分離元素

    如果你打算對DOM元素做大量操作(連續(xù)設(shè)置多個屬性或css樣式),建議首先分離元素然后在添加。

    // 糟糕
    var
     $container = $("#container"),
     $containerLi = $("#container li"),
     $element = null;
    $element = $containerLi.first(); 
    //... 許多復(fù)雜的操作
    // better
    var
     $container = $("#container"),
     $containerLi = $container.find("li"),
     $element = null;
    $element = $containerLi.first().detach(); 
    //... 許多復(fù)雜的操作
    $container.append($element);

    熟記技巧

    你可能對使用jQuery中的方法缺少經(jīng)驗,一定要查看的文檔,可能會有一個更好或更快的方法來使用它。

    // 糟糕
    $('#id').data(key,value);
    // 建議 (高效)
    $.data('#id',key,value);

    使用子查詢緩存的父元素

    正如前面所提到的,DOM遍歷是一項昂貴的操作。典型做法是緩存父元素并在選擇子元素時重用這些緩存元素。

    // 糟糕
    var
     $container = $('#container'),
     $containerLi = $('#container li'),
     $containerLiSpan = $('#container li span');
    // 建議 (高效)
    var
     $container = $('#container '),
     $containerLi = $container.find('li'),
     $containerLiSpan= $containerLi.find('span');

    避免通用選擇符

    將通用選擇符放到后代選擇符中,性能非常糟糕。

    // 糟糕
    $('.container > *'); 
    // 建議
    $('.container').children();

    避免隱式通用選擇符

    通用選擇符有時是隱式的,不容易發(fā)現(xiàn)。

    // 糟糕
    $('.someclass :radio'); 
    // 建議
    $('.someclass input:radio');

    優(yōu)化選擇符

    例如,Id選擇符應(yīng)該是唯一的,所以沒有必要添加額外的選擇符。

    // 糟糕
    $('div#myid'); 
    $('div#footer a.myLink');
    // 建議
    $('#myid');
    $('#footer .myLink');

    避免多個ID選擇符

    在此強調(diào),ID 選擇符應(yīng)該是唯一的,不需要添加額外的選擇符,更不需要多個后代ID選擇符。

    // 糟糕
    $('#outer #inner'); 
    // 建議
    $('#inner');

    堅持最新版本

    新版本通常更好:更輕量級,更高效。顯然,你需要考慮你要支持的代碼的兼容性。例如,2.0版本不支持ie 6/7/8。

    摒棄棄用方法

    關(guān)注每個新版本的廢棄方法是非常重要的并盡量避免使用這些方法。

    // 糟糕 - live 已經(jīng)廢棄
    $('#stuff').live('click', function() {
     console.log('hooray');
    });
    // 建議
    $('#stuff').on('click', function() {
     console.log('hooray');
    });
    // 注:此處可能不當(dāng),應(yīng)為live能實現(xiàn)實時綁定,delegate或許更合適

    利用CDN

    谷歌的CND能保證選擇離用戶最近的緩存并迅速響應(yīng)。(使用谷歌CND請自行搜索地址,此處地址以不能使用,推薦jquery官網(wǎng)提供的CDN)。

    必要時組合jQuery和javascript原生代碼

    如上所述,jQuery就是javascript,這意味著用jQuery能做的事情,同樣可以用原生代碼來做。原生代碼(或?vanilla)的可讀性和可維護(hù)性可能不如jQuery,而且代碼更長。但也意味著更高效(通常更接近底層代碼可讀性越差,性能越高,例如:匯編,當(dāng)然需要更強大的人才可以)。牢記沒有任何框架能比原生代碼更小,更輕,更高效(注:測試鏈接已失效,可上網(wǎng)搜索測試代碼)。

    鑒于vanilla 和 jQuery之間的性能差異,我強烈建議吸收兩人的精華,使用(可能的話)和jQuery等價的原生代碼。

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    編寫更好的jQuery代碼的建議

    編寫更好的jQuery代碼的建議:首先,在腦子里牢牢記住jQuery就是javascript。這意味著我們應(yīng)該采取相同的編碼慣例,風(fēng)格指南和最佳實踐。首先,如果你是一個javascript新手,我建議您閱讀 《JavaScript初學(xué)者的最佳實踐》 ,這是一篇高質(zhì)量的javascript教程,接觸jQuery之前最
    推薦度:
    標(biāo)簽: 好的 代碼 更好的
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产在线不卡午夜精品2021| 国产精品免费网站| 精品国产第一国产综合精品| 国产精品久久久久久久久鸭| 精品无人区无码乱码大片国产| 2022精品天堂在线视频| 亚洲精品成人网久久久久久| 99热亚洲精品6码| 91精品在线看| 无码国产乱人伦偷精品视频| 国内精品国产成人国产三级| 久久精品草草草| 国产精品亚洲а∨无码播放| | 亚洲av无码国产精品色午夜字幕| 国产精品高清在线| 国产成人无码精品一区二区三区| 亚洲精品国产精品乱码在线观看| 久久精品三级视频| 国产欧美在线观看精品一区二区| 伊人久久大香线蕉精品不卡| 无码日韩精品一区二区免费| 久久国产免费观看精品3| 久久97精品久久久久久久不卡| 中文字幕日韩精品无码内射| 国产亚洲精品无码专区| 无码精品一区二区三区免费视频| 国产乱人伦偷精品视频AAA| 亚洲欧美日韩精品久久亚洲区| 国产精品日韩欧美在线第3页| 久久精品国产只有精品2020| 国产精品第12页| 国精品午夜福利视频不卡| 日韩精品无码AV成人观看| 亚洲国产精品福利片在线观看| 日韩精品一区二区三区不卡| 欧美亚洲成人精品| 久久这里有精品视频| 久久精品国产亚洲精品| 久久精品无码一区二区三区日韩| 精品无人区无码乱码大片国产|