本文總結了幫助你創建更好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程式設計有所幫助。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境