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

首頁 > 編程 > JavaScript > 正文

7個jQuery最佳實踐

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

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

背景

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

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

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

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

Google CDN 是這樣的:

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

Microsoft CDN是這樣的:

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

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

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

<script>Window.JQuery || document.write(‘<script src=”script/localsourceforjquery”></script>’)

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

2、限制DOM交互

用JavaScript操作DOM樹是存在性能消耗的。jQuery也一樣。所以,盡量減少與DOM的交互吧。當我幫助我一個同事提高數據顯示速度的時候,我看見他在一個循環里面使用了選擇器。這簡直是性能殺手!他是這樣寫的:

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

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

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

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

3、緩存

jQuery最重要也是最有特色的地方,就是它的選擇器以及在DOM樹中查找HTML元素的方式。但是,我多次看到,一些開發者在同一個函數中,多次調用相同的選擇器,比如 $(“#divid”)。盡管jQuery選擇元素非??欤膊灰看味既ゲ檎蚁嗤脑匕?。所以,你可以像這樣緩存的你元素:

var $divId = $("#divId")

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

對于下面的代碼:

var thefunction = function(){ $("#mydiv").ToggleClass("zclass"); $("#mydiv").fadeOut(800);}var thefunction2 = function(){ $("#mydiv").addAttr("name"); $("#mydiv").fadeIn(400);}

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

var mydiv =$("#mydiv");var thefunction = function(){ mydiv.ToggleClass("zclass").fadeOut(800);}var thefunction2 = function(){ mydiv.addAttr("name").fadeIn(400);}

但是話又說回來,你也不用每次把所有東西都緩存起來。看下面的例子:

$("#link").click(function(){  $(this).addClass("gored");}

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

4、find 和 filter

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

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類而不要寫內聯CSS代碼。我想這一點就不需要舉例說明了吧。

希望這篇文章能夠幫助你編寫更好的jQuery應用程序,真正的幫助到大家。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品高清美女精品国产区| 国产亚洲精品va在线观看| 久久久久九九九九| 国产精品旅馆在线| 久久综合久久美利坚合众国| 欧美视频专区一二在线观看| 日韩毛片在线观看| 色在人av网站天堂精品| 国产丝袜高跟一区| 欧美重口另类videos人妖| 亚洲国模精品一区| 最近中文字幕2019免费| 国产成人福利视频| 懂色av一区二区三区| 日韩中文在线不卡| 最近2019好看的中文字幕免费| 91丝袜美腿美女视频网站| 狠狠久久亚洲欧美专区| 视频在线观看一区二区| 国产精品96久久久久久| 欧美成人全部免费| 精品亚洲一区二区三区在线观看| 国产亚洲综合久久| 欧美日韩另类在线| 插插插亚洲综合网| 国产精品久久久久久搜索| 69国产精品成人在线播放| 亚洲精品乱码久久久久久金桔影视| 精品久久久久国产| 日韩免费观看视频| 亚洲图片欧美午夜| 亚洲免费影视第一页| 国产噜噜噜噜久久久久久久久| 亚洲精品av在线| 91精品国产综合久久香蕉最新版| 黄色一区二区在线观看| 在线电影av不卡网址| 亚洲色在线视频| 欧美日韩亚洲精品内裤| 亚洲性生活视频| 中文字幕成人精品久久不卡| 久久精品电影网| 日韩精品久久久久久久玫瑰园| 亚洲午夜性刺激影院| 欧美日韩不卡合集视频| 欧美成人亚洲成人日韩成人| 亚洲欧美一区二区精品久久久| 欧美国产精品人人做人人爱| 亚洲xxx视频| 亚洲欧美成人在线| 久久九九免费视频| 欧美亚洲午夜视频在线观看| 中文字幕欧美日韩| 国产一区在线播放| 国产欧美日韩免费| 国产美女精品视频| 亚洲国产精品久久久久秋霞蜜臀| 97在线视频精品| 日韩国产欧美精品一区二区三区| 亚洲专区中文字幕| 久久视频免费观看| 57pao成人永久免费视频| 欧美大片免费观看在线观看网站推荐| 欧美老妇交乱视频| 精品亚洲一区二区三区四区五区| 亚洲999一在线观看www| 26uuu另类亚洲欧美日本一| 欧美电影免费观看高清| 亚洲一区久久久| 精品亚洲国产成av人片传媒| 国产精品揄拍一区二区| 国产精品普通话| 国产91免费观看| 欧美肥老妇视频| 久久久精品2019中文字幕神马| 2019中文字幕免费视频| 国产精品久久久久久久9999| 欧美专区国产专区| 日产精品久久久一区二区福利| 97色在线观看免费视频| 亚洲а∨天堂久久精品喷水| 久久久成人精品| 日本免费久久高清视频| 国产精品精品一区二区三区午夜版| 九九视频直播综合网| 国产日产久久高清欧美一区| 精品人伦一区二区三区蜜桃网站| 日韩av最新在线观看| 国产日韩换脸av一区在线观看| 91日韩在线播放| 中文字幕亚洲色图| 亚洲欧美综合精品久久成人| 国产精品无码专区在线观看| 亚洲欧美日韩天堂| 91免费的视频在线播放| 精品国内产的精品视频在线观看| 成人黄色免费看| 久久久久久美女| 日本不卡免费高清视频| 成人性生交大片免费看视频直播| 欧美一级电影久久| 国产成人91久久精品| 国产精品久久久久久久久久久不卡| 91久久久亚洲精品| 91在线观看免费高清| 国产婷婷97碰碰久久人人蜜臀| 欧美第一黄色网| 欧美国产亚洲精品久久久8v| 国产精品青青在线观看爽香蕉| 在线视频免费一区二区| 欧美激情在线观看视频| 亚洲电影中文字幕| 日韩在线观看精品| 欧美一级淫片aaaaaaa视频| 久热精品视频在线观看| 一本色道久久综合狠狠躁篇怎么玩| 欧美亚洲免费电影| 午夜精品在线视频| 国产精品444| 国产成人一区二区三区电影| 欧美性猛交xxxx免费看漫画| 久久免费观看视频| 日韩专区在线观看| 一区二区亚洲精品国产| 欧美在线视频免费观看| 国产日本欧美一区二区三区在线| 欧美精品性视频| 日韩精品中文字幕在线播放| 亚洲人成网站在线播| 欧美在线激情网| 久久夜色精品国产欧美乱| 日韩精品免费一线在线观看| 亚洲男子天堂网| 成人亚洲欧美一区二区三区| 91精品久久久久久久久| 欧美国产日韩在线| 中文字幕亚洲二区| 久久久久国产精品免费网站| 久久99久久99精品免观看粉嫩| 91国产美女在线观看| 91av在线影院| 日本一区二区三区四区视频| 亚洲精品日韩丝袜精品| 亚洲人成电影网站色xx| 伊人青青综合网站| 韩国精品久久久999| 国产91免费看片| 日韩激情视频在线| 91精品国产一区| 色综合久久精品亚洲国产| 国产日韩在线免费| 欧美激情一区二区三区在线视频观看| 精品视频在线观看日韩| 亚洲最大中文字幕| 国产精品久久久久久中文字| 久久精品欧美视频| 欧美日韩国产专区| 欧美电影免费在线观看| 日韩久久午夜影院| 欧美超级免费视 在线| 亚洲一区二区三区乱码aⅴ| 在线不卡国产精品| 亚洲精品一区二区三区婷婷月| 亚洲国产天堂久久国产91|