討論jQuery和javascript效能的文章並不罕見。然而,我計劃根據他人對jQuery總結的一些速度方面的技巧和一些建議,來教你提升你的JSLite和javascript程式碼。好的程式碼會帶來速度的提升。快速渲染和回應意味著更好的使用者體驗。
首先,在腦中牢牢記住JSLite就是javascript。這意味著我們應該採取相同的編碼慣例,風格指南和最佳實踐。
首先,如果你是一個javascript新手,沒有用過jQuery我建議您閱讀最好先閱讀官方文檔的語法介紹,這是一篇高質量的javascript教程,表示您已經會jQuery用過一段時間了。
當你準備使用JSLite,我強烈建議你遵循下面這些指南:
快取變數
DOM遍歷是昂貴的,所以盡量將會重複使用的元素快取。
// 糟糕
h = $('#element').height();
$('#element').css('height',h-20);
// 建議
$element = $('#element');
h = $element.height();
$element.css('height',h-20);
避免全域變數
JSLite與javascript一樣,一般來說,最好確保你的變數在函數作用域內。
// 糟糕
$element = $('#element');
h = $element.height();
$element.css('height',h-20);
// 建議
var $element = $('#element');
var h = $element.height();
$element.css('height',h-20);
使用匈牙利命名法
在變數前面加上$前綴,方便辨識出JSLite物件。
// 糟糕
var first = $('#first');
var second = $('#second');
var value = $first.val();
// 建議 - 在JSLite物件前面加上$前綴
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
在新版JSLite中,較短的 on("click") 用來取代類似 click() 這樣的函數。在先前的版本中 on() 就是 bind() 。 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'
});
});
鍊式操作
JSLite實作方法的鍊式操作是非常容易的。下面利用這一點。
// 糟糕
$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();
//... 許多複雜的操作
// better
var
$container = $("#container"),
$containerLi = $container.find("li"),
$element = null;
$element = $containerLi.first().detach();
//... 許多複雜的操作
$container.append($element);
熟記技巧
你可能對使用JSLite中的方法缺少經驗,一定要查看的文檔,可能會有一個更好或更快的方法來使用它。
// 糟糕
$('#id').data(key,value);
// 建議 (高效率)
$.data('#id',key,value);
サブクエリを使用してキャッシュされた親要素
前述したように、DOM トラバーサルはコストのかかる操作です。一般的なアプローチは、親要素をキャッシュし、子要素を選択するときにこれらのキャッシュされた要素を再利用することです。
// おっと
var
$container = $('#container'),
$containerLi = $('#container li'),
$containerLiSpan = $('#コンテナリスパン');
// 提案 (効率的)
var
$container = $('#container '),
$containerLi = $container.find('li'),
$containerLiSpan= $containerLi.find('span');
ユニバーサルセレクターを避ける
ユニバーサル セレクターを子孫セレクターに入れると、パフォーマンスが著しく低下します。
// おっと
$('.container > *'); // 提案
$('.container').children();
暗黙的なユニバーサルセレクターを避ける ユニバーサル セレクターは暗黙的である場合があり、見つけるのが困難です。
$('.someclass :radio'); // 提案
$('.someclass input:radio');
たとえば、ID セレクターは一意である必要があるため、セレクターを追加する必要はありません。
// 提案
$('#myid');
$('#footer .myLink');
複数の ID セレクターを避ける
ここで強調したいのは、ID セレクターは一意である必要があり、追加のセレクターを追加する必要はなく、複数の子孫 ID セレクターも必要ないということです。
最新バージョンを使用してください
新しいバージョンは通常、より優れており、より軽量で、より効率的で、より多くのメソッドを備え、jQuery メソッドをより包括的にカバーしています。明らかに、サポートしたいコードの互換性を考慮する必要があります。たとえば、プロジェクトは HTML5/CSS3 の適切なサポートに基づいて実行されますか? 必要に応じて JSLite と JavaScript ネイティブ コードを組み合わせる
上で述べたように、JSLite は JavaScript です。つまり、JSLite で実行できることはすべて、ネイティブ コードでも実行できます。ネイティブ コードは、JSLite ほど読みにくく保守しにくい可能性があり、コードが長くなる可能性があります。しかし、それはより効率的であることも意味します (通常、基礎となるコードに近づくほど可読性が低くなり、パフォーマンスが向上します。たとえば、アセンブリには当然より強力な人材が必要です)。ネイティブ コードよりも小さく、軽く、効率的なフレームワークは存在しないことに留意してください (注: テスト リンクはもう有効ではありません。テスト コードはオンラインで検索できます)。
最後のアドバイス最後に、JSLite のパフォーマンスの向上とその他の優れた提案を目的として、この記事を記録します。このトピックをさらに深く掘り下げたい場合は、非常に楽しいことがわかります。 JSLite は必須ではなく、単なるオプションであることに注意してください。なぜそれを使いたいのか考えてみましょう。 DOM操作?アヤックス?ステンシル? CSSアニメーション?それともセレクター? jQuery のヘビー開発者ですか?

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),