自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

熱點推薦:七個相關jQuery的最佳實踐

開發(fā) 前端
在這篇文章中,我會給大家介紹在編寫、調試和審查JavaScript代碼的時候一些好的實踐(至少我是這么認為的)。事實上,我選擇了其中7個最常見的場景。

前言

隨著富網絡應用(rich web applications)數(shù)量的增長,以及用戶對快速交互響應的高期望,開發(fā)者開始使用JavaScript庫來快速高效的完成一些重復性的工作。這其 中***的JavaScript庫就是jQuery。但是jQuery的大量應用卻帶來了另外一個問題:在使用JavaScript庫的時候,有哪些*** 實踐,又有哪些不好的實踐呢?

[[161878]]

背景

在這篇文章中,我會給大家介紹在編寫、調試和審查JavaScript代碼的時候一些好的實踐(至少我是這么認為的)。事實上,我選擇了其中7個最常見的場景。

1、使用CDN及其回退地址(fallback)

CDN代表內容傳遞網絡(Content Delivery Network),是一個緩存了JavaScript文件的服務器。使用CDN之后,每當一個新用戶發(fā)起請求的時候,你的應用程序可以使用CDN緩存,而 不用從你的服務器上重新加載庫文件。Google、Microsoft和JQuery都提供CDN服務。

鑒于網絡并不總是100%可靠,服務器也可能因為一些原因宕機,你必須要確保即使這些事情發(fā)生,你的應用程序依然能正常運行。這時候我們就要用到回退地址:當應用程序無法找到緩存庫的時候,它就會回退回來,使用服務器文件。

Google CDN 是這樣的:

  1. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> 

Microsoft CDN是這樣的:

  1. <script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js"> </script> 

需要注意的是,我們沒有指定URL協(xié)議為http而是使用的//。這是因為CDN服務器支持http和https,如果你的網站擁有SSL認證,你無須修改就可以正常加載文件。

另外,就像我之前提到的那樣,我們還需要一個回退地址,以防CDN服務器出現(xiàn)問題。

  1. <script>Window.JQuery || document.write(&lsquo;<script src=&rdquo;script/localsourceforjquery&rdquo;></script>&rsquo;) 

當然,你也可以用Require來配置需要的jQuery,不過我覺得就這樣也不錯。

2、限制DOM交互

用JavaScript操作DOM樹是存在性能消耗的。jQuery也一樣。所以,盡量減少與DOM的交互吧。當我?guī)椭乙粋€同事提高數(shù)據顯示速度的時候,我看見他在一個循環(huán)里面使用了選擇器。這簡直是性能殺手!他是這樣寫的:

  1. containerDiv = $("#contentDiv"); 
  2. for(var d =0; d < TotalActions; d++) 
  3.   containerDiv.append("<div><span class='brilliantRunner'>" +   d + "</span></div>"); 

有什么問題呢?咋一看沒啥問題。而且我的同事也說這段代碼跑得很歡樂呢!我真是嗶了狗了!當TotalActions小于50時,察覺不到任何問題;但是其達到25000的時候,速度便降低了很多,原因(我也是google到的)就是DOM交互放到了循環(huán)當中。

對于這個功能,(多次嘗試失敗之后)我將循環(huán)中的直接DOM交互替換成了一個數(shù)組的push操作,然后用一個空字符串作為分隔符將數(shù)組連接(join)起來。***,程序當然變得更加流暢和高效了。

  1. var myContent=[]; 
  2. for(var d = 0; d < TotalActions; d++) 
  3.   myContent.push("<div><span class='brilliantRunner'>" + d + "</span></div>"); 
  4. containerDiv.html(myContent.join("")); 

3、緩存

jQuery最重要也是最有特色的地方,就是它的選擇器以及在DOM樹中查找HTML元素的方式。但是,我多次看到,一些開發(fā)者在同一個函數(shù)中,多次調用相同的選擇器,比如 $(“#divid”)。盡管jQuery選擇元素非???,但也不要每次都去查找相同的元素吧。所以,你可以像這樣緩存的你元素:

  1. var $divId = $("#divId"

然后在接下來的代碼中,就可以用$divId了。

對于下面的代碼:

 

  1. var thefunction = function() 
  2.     $("#mydiv").ToggleClass("zclass"); 
  3.     $("#mydiv").fadeOut(800); 
  4.  
  5. var thefunction2 = function() 
  6.     $("#mydiv").addAttr("name"); 
  7.     $("#mydiv").fadeIn(400); 

我們可以對它做這樣的修改,并且使用鏈式語法,使其看起來更加漂亮:

 

  1. var mydiv =$("#mydiv"); 
  2. var thefunction = function() 
  3.   mydiv.ToggleClass("zclass").fadeOut(800); 
  4.  
  5. var thefunction2 = function() 
  6.   mydiv.addAttr("name").fadeIn(400); 

但是話又說回來,你也不用每次把所有東西都緩存起來??聪旅娴睦樱?/p>

  1. $("#link").click(function() 
  2.      $(this).addClass("gored"); 

在這里,我既沒有用 $(“#link”),或者將其緩存起來,而是使用的$(this)。因為在這個例子中,我操作的對象就是這個鏈接本身。

4、find 和 filter

最近,在使用find()來獲取jQuery對象結合的時候,我產生了一些困惑。然后我發(fā)現(xiàn),這個操作可以替換為用filter()方法來實現(xiàn)。理解這兩者的區(qū)別非常重要:

find: 將會從選定的元素開始,一直向下查找DOM樹

filter: 是在jQuery集合當中查找

5、end()

當在jQuery集合中進行鏈式操作的時候,我有時候需要回到父對象去進行一些操作。比如你正在一個表格的第二行應用CSS,然后希望回到表格對象,對其添加一些樣式。在你對行應用完樣式之后,只要使用end()方法,你就會自動回到表格對象,然后隨意的對其添加樣式吧!

(譯者注:find()、filter()和end()原文是大寫,其實應該是小寫)

6、對象字面量

當你通過鏈式語法來操作元素的CSS屬性的時候,你可以使用對象字面量方式來提升性能。比如這段代碼:

$("#myimg").attr("src", "thepath").attr("alt", "the alt text");

變成下面這樣之后,不僅避免了操作DOM元素,而且還不用多次調用相關的設置方法:

$("#myimg").attr({"src": "thepath", "alt": "the alt text"});

7、善用CSS類

盡可能使用CSS類而不要寫內聯(lián)CSS代碼。我想這一點就不需要舉例說明了吧。

***

我希望這篇文章能夠幫助你編寫更好的jQuery應用程序。

譯文鏈接:http://www.codeceo.com/article/7-jquery-best-practices.html
英文原文:7 JQuery Best Practices

 

 

責任編輯:王雪燕 來源: 碼農網
相關推薦

2017-09-13 15:29:22

2011-04-14 15:47:44

MDMSAP

2018-10-23 14:54:29

網絡安全初創(chuàng)公司攻擊

2022-05-23 11:13:02

Python工具

2024-01-30 18:05:04

IDE編輯器代碼

2022-06-28 05:54:10

機器身份網絡攻擊網絡安全

2023-11-14 14:25:09

數(shù)據湖大數(shù)據

2011-01-04 11:57:49

思科認證

2023-05-06 15:45:04

物聯(lián)網IOT

2022-12-25 16:44:40

開源工具Github

2021-10-18 13:26:15

大數(shù)據數(shù)據分析技術

2011-08-18 11:05:21

jQuery

2017-03-13 14:09:19

RESTful API實踐

2011-06-28 09:31:52

Linux同步Dropbox

2010-05-24 09:26:33

云計算

2023-09-20 09:00:00

2022-12-19 14:25:33

2023-11-03 15:24:39

2024-12-06 10:46:03

2021-12-07 22:07:26

數(shù)據治理元管理
點贊
收藏

51CTO技術棧公眾號