目錄
快取變數
避免全域變數
使用匈牙利命名法
使用 Var 鏈(單 Var 模式)
請使用’On’
精簡javascript
鍊式運算
維持程式碼的可讀性
選擇短路求值
選擇捷徑
繁重的操作中分離元素
熟記技巧
使用子查詢快取的父元素
避免通用選擇符
避免隱性通用選擇符
最佳化選擇符
避免多個ID選擇符
堅持最新版本
摒棄棄用方法
利用CDN
必要時組合jQuery和javascript原生程式碼
首頁 web前端 js教程 提高jQuery程式碼效率的編寫技巧總結

提高jQuery程式碼效率的編寫技巧總結

Jul 18, 2017 pm 06:47 PM
jquery 技巧 編寫

快取變數

DOM遍歷是昂貴的,所以盡量將會重複使用的元素快取。

// 糟糕h = $('#element').height();
$('#element').css('height',h-20);// 建议$element = $('#element');
h = $element.height();
$element.css('height',h-20);
登入後複製

避免全域變數

jQuery與javascript一樣,一般來說,最好確保你的變數在函數作用域內。

// 糟糕$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() 這樣的函數。在之前的版本中 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

一般來說,最好盡可能合併函數。

// 糟糕$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'});
});
登入後複製

鍊式運算

jQuery實作方法的鍊式運算是非常容易的。下面利用這一點。

// 糟糕$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);
登入後複製

維持程式碼的可讀性

伴隨著精簡程式碼和使用鍊式的同時,可能帶來程式碼的難以閱讀。加入縮緊和換行能起到很好的效果。

$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);
登入後複製

選擇短路求值

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

// 糟糕function initVar($myVar) {if(!$myVar) {
        $myVar = $('#selector');
    }
}// 建议function initVar($myVar) {
    $myVar = $myVar || $('#selector');
}
登入後複製

選擇捷徑

#精簡程式碼的其中一種方式是利用程式設計捷徑。

// 糟糕if(collection.length > 0){..}// 建议if(collection.length){..}
登入後複製

繁重的操作中分離元素

如果你打算對DOM元素做大量操作(連續設定多個屬性或css樣式),建議先分開元素然後在添加。

// 糟糕var$container = $("#container"),
    $containerLi = $("#container li"),
    $element = null;

$element = $containerLi.first();//... 许多复杂的操作// bettervar$container = $("#container"),
    $containerLi = $container.find("li"),
    $element = null;

$element = $containerLi.first().detach();//... 许多复杂的操作$container.append($element);
登入後複製

熟記技巧

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

// 糟糕$('#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();
登入後複製

避免隱性通用選擇符

通用選擇符有時是隱式的,不容易發現。

// 糟糕$('.someclass :radio');// 建议$('.someclass input:radio');
登入後複製

最佳化選擇符

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

// 糟糕$('div#myid');
$('div#footer a.myLink');// 建议$('#myid');
$('#footer .myLink');
登入後複製

避免多個ID選擇符

在此強調,ID 選擇符應該是唯一的,不需要添加額外的選擇符,更不需要多個後代ID選擇符。

// 糟糕$('#outer #inner');// 建议$('#inner');
登入後複製

堅持最新版本

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

摒棄棄用方法

關注每個新版本的廢棄方法是非常重要的並儘量避免使用這些方法。

// 糟糕 - live 已经废弃$('#stuff').live('click', function() {
  console.log('hooray');
});// 建议$('#stuff').on('click', function() {
  console.log('hooray');
});// 注:此处可能不当,应为live能实现实时绑定,delegate或许更合适
登入後複製

利用CDN

Google的CND能保證選擇離用戶最近的快取並迅速回應。 (使用GoogleCND請自行搜尋地址,此處地址不能使用,推薦jquery官網提供的CDN)。

必要時組合jQuery和javascript原生程式碼

如上所述,jQuery就是javascript,這意味著用jQuery能做的事情,同樣可以用原生程式碼來做。原生程式碼(或vanilla)的可讀性和可維護性可能不如jQuery,而且程式碼更長。但也意味著更有效率(通常更接近底層程式碼可讀性越差,效能越高,例如:彙編,當然需要更強大的人才可以)。牢記沒有任何框架能比原生程式碼更小,更輕,更有效率(註:測試連結已失效,可上網搜尋測試程式碼)。

鑑於vanilla 和 jQuery之間的效能差異,我強烈建議吸收兩人的精華,使用(可能的話)和jQuery等價的原生程式碼。

jQuery的編寫原則:

一、不要過度使用jQuery

1. jQuery速度再快,也無法與原生的javascript方法相比,而且建立的jQuery物件包含的資訊量很龐大。所以有原生方法可以使用的場合,盡量避免使用jQuery。

2. 許多jQuery方法都有兩個版本,一個是供jQuery物件使用的版本,另一個是供jQuery函數使用的版本。由於後者不透過jQuery物件操作,所以相對開銷較小,速度比較快。


以上是提高jQuery程式碼效率的編寫技巧總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Win11小技巧分享:一招跳過微軟帳號登入 Win11小技巧分享:一招跳過微軟帳號登入 Mar 27, 2024 pm 02:57 PM

Win11小技巧分享:一招跳過微軟帳號登入Windows11是微軟最新推出的作業系統,具有全新的設計風格和許多實用的功能。然而,對於某些用戶來說,在每次啟動系統時都要登入微軟帳戶可能會感到有些煩擾。如果你是其中一員,不妨試試以下的技巧,讓你能夠跳過微軟帳號登錄,直接進入桌面介面。首先,我們需要在系統中建立一個本機帳戶,來取代微軟帳戶登入。這樣做的好處是

老手必備:C語言中*與&的技巧與注意事項 老手必備:C語言中*與&的技巧與注意事項 Apr 04, 2024 am 08:21 AM

C語言中,表示指針,儲存其他變數的位址;&表示位址運算符,傳回變數的記憶體位址。指針的使用技巧包括定義指針、解引用指針,需確保指針指向有效地址;地址運算符&的使用技巧包括取得變數地址,取得數組元素地址時返回數組第一元素地址。實戰案例說明了使用指標和位址運算子反轉字串。

新手製作表格有哪些技巧 新手製作表格有哪些技巧 Mar 21, 2024 am 09:11 AM

我們經常在excel中製作和編輯表格,但是作為一個剛剛接觸軟體的新手來講,如何使用excel製作表格,並沒有我們使用起來那麼輕鬆。下邊,我們針對新手,也就是初學者需要掌握的表格製作的一些步驟進行一些演練,希望對需要的人有些幫助。新手錶格範例樣板如下圖:我們看看如何完成! 1,新建excel文檔,有兩種方法。可以在【桌面】空白位置,點選滑鼠右鍵-【新建】-【xls】檔。也可以【開始】-【所有程式】-【MicrosoftOffice】-【MicrosoftExcel20**】2,雙擊我們新建的ex

VSCode入門指南:初學者必讀,快速掌握使用技巧! VSCode入門指南:初學者必讀,快速掌握使用技巧! Mar 26, 2024 am 08:21 AM

VSCode(VisualStudioCode)是一款由微軟開發的開源程式碼編輯器,具有強大的功能和豐富的插件支持,成為開發者的首選工具之一。本文將為初學者提供一個入門指南,幫助他們快速掌握VSCode的使用技巧。在本文中,將介紹如何安裝VSCode、基本的編輯操作、快捷鍵、插件安裝等內容,並為讀者提供具體的程式碼範例。 1.安裝VSCode首先,我們需

PHP程式設計技巧:如何實現3秒內跳轉網頁 PHP程式設計技巧:如何實現3秒內跳轉網頁 Mar 24, 2024 am 09:18 AM

標題:PHP程式設計技巧:如何實現3秒內跳轉網頁在Web開發中,經常會遇到需要在一定時間內自動跳到另一個頁面的情況。本文將介紹如何使用PHP實作在3秒內實現頁面跳轉的程式設計技巧,並提供具體的程式碼範例。首先,實現頁面跳轉的基本原理是透過HTTP的回應頭中的Location欄位來實現。透過設定該欄位可以讓瀏覽器自動跳到指定的頁面。下面是一個簡單的例子,示範如何在P

深入理解Go語言中的函數重構技巧 深入理解Go語言中的函數重構技巧 Mar 28, 2024 pm 03:05 PM

在Go語言程式開發中,函數重構技巧是十分重要的一環。透過優化和重構函數,不僅可以提高程式碼品質和可維護性,還可以提升程式的效能和可讀性。本文將深入探討Go語言中的函數重構技巧,結合具體的程式碼範例,幫助讀者更能理解和應用這些技巧。 1.程式碼範例1:提取重複程式碼片段在實際開發中,經常會遇到重複使用的程式碼片段,這時就可以考慮將重複程式碼提取出來作為一個獨立的函數,以

Win11技巧大揭密:如何繞過微軟帳號登入 Win11技巧大揭密:如何繞過微軟帳號登入 Mar 27, 2024 pm 07:57 PM

Win11技巧大揭密:如何繞過微軟帳號登入近期,微軟公司推出了全新的作業系統Windows11,引起了廣泛關注。相較於之前的版本,Windows11在介面設計、功能改進等方面做出了許多新的調整,但也引發了一些爭議,其中最引人注目的一點就是強制要求用戶使用微軟帳戶登入系統。對於某些用戶來說,他們可能更習慣於使用本地帳戶登錄,而不願意將個人資訊與微軟帳戶綁定。

Laravel表單類別使用技巧:提高效率的方法 Laravel表單類別使用技巧:提高效率的方法 Mar 11, 2024 pm 12:51 PM

在編寫網站或應用程式時,表單是不可或缺的一部分。 Laravel作為一個流行的PHP框架,提供了豐富而強大的表單類,使得表單處理變得更加簡單和高效。本文將介紹一些Laravel表單類別的使用技巧,幫助你提升開發效率。下面透過具體的程式碼範例來詳細講解。建立表單要在Laravel中建立表單,首先需要在檢視中編寫對應的HTML表單。在處理表單時,可以使用Laravel

See all articles