首頁 web前端 js教程 10個建議幫助你創建更好的jQuery插件_jquery

10個建議幫助你創建更好的jQuery插件_jquery

May 16, 2016 pm 03:58 PM
jquery插件 創建

本文總結了幫助你創建更好jQuery插件的10個建議。分享給大家供大家參考。具體說明如下:

在開發過很多 jQuery 插件以後,我慢慢的摸索出了一套開發jQuery插件比較標準的結構和模式。這樣我就可以 copy & paste 大部分的程式碼結構,只要專注最主要的邏輯程式碼就行了。使用相同的設計模式和架構也讓修復bug或二次開發更容易。一套經過驗證的架構可以保證我的插件不出大的問題,不論插件簡單還是複雜。我在這裡分享10個我總結的經驗。

1. 把你的程式碼全部放在閉包裡面

這是我用的最多的一條。但是有時候在閉包外面的方法會不能呼叫。

不過你的插件的程式碼只為你自己的插件服務,所以不存在這個問題,你可以把所有的程式碼都放在閉包裡面。

而方法可能應該放在Prototype方法內部,。

(function($) {  
  //code here 
})(jQuery);

登入後複製

2. 提供外掛程式的預設選項

你的外掛應該會有一些選項是可以讓開發者設定的,所以提供恢復預設選項是以有必要的。 你可以透過jQuery的extend功能來設定這些選項:

var defaultSettings = {   mode      : 'Pencil',   
               lineWidthMin  : '0',   
               lineWidthMax  : '10',   
               lineWidth    : '2' }; 
settings = $.extend({}, defaultSettings, settings || {});

登入後複製

3. 使用回傳一個元素

JavaScript/jQuery有一個很好的特點就是可以進行方法級聯,所以我們不應該破壞這個特性,總是會在方法中傳回一個元素。我在我的每一個jQuery插件中都遵守這一條。

$.fn.wPaint = function(settings) {  
 return this.each(function() { 
    var elem = $(this);    
  //run some code here   
 } 
}

登入後複製

4. 一次性程式碼放在主循環以外

這一條很重要,但是常常被忽略。簡單的講,如果你有一段程式碼是一堆預設值,只需要被實例化一次,而不是每次呼叫你插件功能的時候都實例化,你應該把這段程式碼放在插件方法的外面。這樣可以讓你的插件運行的更高效,節省記憶體。

var defaultSettings = {  
               mode      : 'Pencil',   
               lineWidthMin  : '0',   
               lineWidthMax  : '10',   
               lineWidth    : '2' }; 
settings = $.extend({}, defaultSettings, settings || {});
$.fn.wPaint = function(settings) {  
 return this.each(function() { 
    var elem = $(this);    
  //run some code here   
 } 
}

登入後複製

你可以注意到,上面程式碼中的「defaultSettings」是完全在插件方法外面的,由於這些程式碼是在閉包裡面,我們不用擔心這些變數被重寫。

5. 為什麼要設定 Class Prototyping

作為你程式碼的血與肉,方法和函數應該放在prototype函數內。有兩個原因:

◆ 它可以節省很多內存,因為可以不用重複建立這些方法。

◆ 引用現成的方法比重新建立一個好快很多。

簡單的說,prototype就是擴展了一個對象,為它提供方法,而不用在每一個對像中實例化這些方法。這也讓你的程式碼更有條理和有效率。一旦你習慣這種開發方式,你會發現它在你將來的專案中為你節省了很多時間。

6. 如何設定 Class Prototyping

設定一個 prototype 方法有兩個部分。首先我們需要創建我們最初的類別定義,在多數情況下這意味著創建一個物件。這個定義包含了每一個物件實例都不同的部分。在我的Paint jQuery Plugin 插件中,我是這麼寫的:

function Canvas(settings) {  
 this.settings = settings;   
 this.draw = false;   
 this.canvas = null;    
   this.ctx = null;  
  return this;
}

登入後複製

下面來加入全域的方法:

Canvas.prototype = {   
 generate: function() { 
    //generate code  
 } 
}
登入後複製

這裡的關鍵是要讓prototype的方法是通用的,但是資料是每個實例自己的,可以用「this」引用。

7. 使用 “this” 物件

透過使用“$this”,我們可以向別的閉包傳遞正確的引用。我們也可能需要向別的方法傳入 $this 引用。要注意的是, $this 這個名字是可以改的,任意的變數名稱都可以。

Canvas.prototype = {  
 generate: function()  { 
    //some code    
  var $this = this;    
  var buton = //...some code  
    button.click(function(){ 
    //using this will not be found since it has it's own this    
    //use $this instead.     
   $this.someFunc($this);    
  });  
 }, 
 someFunc: function($this)   {  
    //won't know what "this" is.  
   //use $this instead passed from the click event  
  } 
}

登入後複製

8. 在每個物件中儲存設定

我一直在每個物件中保存自己的設置,然後操作它自己的設置。這樣你就不用在不同的方法中傳遞很多參數。把這些變數放在物件中,也方便你在其他地方呼叫這些變數。

function Canvas(settings) {  
 this.settings = settings;  
  return this; 
}

登入後複製

9. 分離你的Prototype方法邏輯

這可能是個基本的原則。當你在猶豫是否需要提供一個方法的時候,你可以問你自己「如果其他人要重寫這個方法的話,你的程式碼是否能滿足他的需求?」或「別人來寫這個方法有多困難? 」。當然這是一個彈性拿捏的問題。這裡列出了我的Color Picker jQuery Plugin 的方法,你可以參考一下:

generate() 
appendColors() 
colorSelect() 
colorHoverOn() 
colorHoverOff() 
appendToElement() 
showPalette() 
hidePalette()

登入後複製

10. 提供 Setter/Getter 選項

這條不是必須的,但是我發現我所有的插件都包用到了這條。因為它只需要一點點代碼,就能提供別人一個他可能需要的功能。

基本上,我們只要讓開發者能夠設定或取得元素已經存在的值:

var lineWidth = $("#container").wPaint("lineWidth"); 
$("#container").wPaint("lineWidth", "5");

登入後複製

總結:以上十條基本上涵蓋了jQuery插件開發的核心,並且可以作為開發的模板。有一套基本的程式碼可以極大的縮短你的開發時間,並且能夠讓你設計插件架構的時候更有自信。

希望本文所述對大家的jquery程式設計有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 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)

如何在Python中建立累積曲線圖? 如何在Python中建立累積曲線圖? Aug 23, 2023 pm 08:33 PM

ogive圖形以圖形化方式表示一組資料的累積分佈函數(CDF),有時也稱為累積頻率曲線。它用於檢查數據分佈並發現模式和趨勢。 Matplotlib、Pandas和Numpy是Python提供的一些函式庫和工具,用於建立ogive圖形。在本教學中,我們將看看如何使用Matplotlib在Python中產生ogive圖形。要建立一個累積曲線圖,我們需要匯入所需的庫。在這個例子中,我們將使用Matplotlib,Pandas和Numpy。 Matplotlib是一個流行的資料視覺化函式庫,用於在Python中創建

如何在Python中創建一個常數? 如何在Python中創建一個常數? Aug 29, 2023 pm 05:17 PM

常量和變數用於在程式設計中儲存資料值。變數通常指的是可以隨時間變化的值。而常數是一種變數類型,其值在程式執行期間​​不能被改變。在Python中只有六個內建常數可用,它們是False、True、None、NotImplemented、Ellipsis(...)和__debug__。除了這些常數之外,Python沒有任何內建資料類型來儲存常數值。範例下面示範了常數的範例-False=100輸出SyntaxError:cannotassigntoFalseFalse是Python中的內建常數,用於儲存布林值

如何在最新的 iOS 17 上個性化你的 iPhone 電話 如何在最新的 iOS 17 上個性化你的 iPhone 電話 Sep 21, 2023 am 08:17 AM

如何在iPhone上個人化電話Apple的iOS17引入了一項名為「聯絡人海報」的新功能,可讓您在iPhone上個性化呼叫螢幕的外觀。此功能可讓您使用所選的照片、顏色、字體和擬我表情作為聯絡人卡片設計海報。因此,當您進行通話時,您的自訂影像將完全按照您的設想顯示在收件人的iPhone上。您可以選擇與所有保存的聯絡人分享您唯一的聯絡人海報,也可以選擇可以看到它的人。同樣,在通話交流期間,您還將看到其他人的聯絡人海報。此外,Apple允許您為單一聯絡人設定特定的聯絡人照片,使來自這些聯絡人的呼叫與

如何在真我手機上建立資料夾? 如何在真我手機上建立資料夾? Mar 23, 2024 pm 02:30 PM

標題:真我手機新手指南:如何在真我手機上建立資料夾?在現今社會,手機已成為人們生活中不可或缺的工具。而真我手機作為一款備受歡迎的智慧型手機品牌,其簡潔、實用的作業系統備受用戶喜愛。在使用真實我手機的過程中,很多人可能會遇到需要整理手機中的檔案和應用程式的情況,而建立資料夾就是一種有效的方式。本文將介紹如何在真我手機上建立資料夾,幫助使用者更好地管理自己的手機內容。第

如何在GIMP中創造像素藝術 如何在GIMP中創造像素藝術 Feb 19, 2024 pm 03:24 PM

本文將引起您的興趣,如果您有意在Windows上使用GIMP進行像素藝術創作。 GIMP是一款著名的圖形編輯軟體,不僅免費開源,還能幫助使用者輕鬆創造美麗的圖像和設計。除了適用於初學者和專業設計師外,GIMP也可以用於製作像素藝術,這種數位藝術形式是利用像素作為唯一構建塊來進行繪製和創作的。如何在GIMP中建立像素藝術以下是在WindowsPC上使用GIMP建立像素圖片的主要步驟:下載並安裝GIMP,然後啟動應用程式。創造一個新的形象。調整寬度和高度的大小。選擇鉛筆工具。將筆刷類型設定為像素。設定

格力+如何創造家庭 格力+如何創造家庭 Mar 01, 2024 pm 12:40 PM

很多朋友表示想知道在格力+軟體裡該怎麼去創建家庭,下面為大家帶來了操作方法,想要了解的朋友和我一起來看看吧。首先,開啟手機上的格力+軟體,並登入。接著,在頁面底部的選項列中,點選最右邊的「我的」選項,即可進入個人帳戶頁面。 2.來到我的頁面後,在“家庭”下方的選項裡有一個“創建家庭”,找到後在它的上面點擊進入。 3.接下來跳到建立家庭的頁面裡,根據提示在輸入框裡輸入要設定的家庭名稱,輸入好後在右上角點選「儲存」按鈕。 4.最後在頁面下方會彈出一個「儲存成功」的提示,代表家庭已經成功創建好了。

如何透過Python創建使用者介面? 如何透過Python創建使用者介面? Aug 26, 2023 am 09:17 AM

在本文中,我們將學習如何使用python建立使用者介面。什麼是圖形使用者介面?術語「圖形使用者介面」(或「GUI」)是指一組可以在電腦軟體中互動以顯示資訊和互動的視覺元素項目。為了回應人類輸入,物件可能會改變顏色、大小和可見度等外觀特徵。圖示、遊標和按鈕等圖形元件可以透過音訊或視覺效果(如透明度)進行增強,以建立圖形使用者介面(GUI)。如果您希望更多人使用您的平台,您需要確保它具有良好的使用者介面。這是因為這些因素的結合會極大地影響您的應用程式或網站提供的服務品質。 Python被開發人員廣泛使用,因為它提

如何使用Highcharts建立甘特圖表 如何使用Highcharts建立甘特圖表 Dec 17, 2023 pm 07:23 PM

如何使用Highcharts建立甘特圖表,需要具體程式碼範例引言:甘特圖是一種常用於展示專案進度和時間管理的圖表形式,能夠直觀地展示任務的開始時間、結束時間和進度。 Highcharts是一款功能強大的JavaScript圖表庫,提供了豐富的圖表類型和靈活的配置選項。本文將介紹如何使用Highcharts建立甘特圖表,並給出具體的程式碼範例。一、Highchart

See all articles