當前位置:
首頁 > 知識 > 不定義JQuery插件,不要說會JQuery

不定義JQuery插件,不要說會JQuery

不定義JQuery插件,不要說會JQuery



來自:Sam Xiao - 博客園

已獲轉載授權


一:導言


有些WEB開發者,會引用一個JQuery類庫,然後在網頁上寫一寫("#"),("."),寫了幾年就對別人說非常熟悉JQuery。我曾經也是這樣的人,直到有一次公司里的技術交流,我才改變了自己對自己的看法。


二:普及JQuery知識

知識1:用JQuery寫插件時,最核心的方法有如下兩個:


$.extend(object) 可以理解為JQuery 添加一個靜態方法。


$.fn.extend(object) 可以理解為JQuery實例添加一個方法。


基本的定義與調用:


知識2:jQuery(function () { }); 與 (function ($) { })(jQuery);的區別:

jQuery(function () { });是某個DOM元素載入完畢後執行方法里的代碼。


(function ($) { })(jQuery); 定義了一個匿名函數,其中jQuery代表這個匿名函數的實參。通常用在JQuery插件開發中,起到了定義插件的私有域的作用。


三:開發JQuery插件標準結構


1,定義作用域:定義一個JQuery插件,首先要把這個插件的代碼放在一個不受外界干擾的地方。如果用專業些的話來說就是要為這個插件定義私有作用域。外部的代碼不能直接訪問插件內部的代碼。插件內部的代碼不污染全局變數。在一定的作用上解耦了插件與運行環境的依賴。說了這麼多,那要怎樣定義一個插件的私有作用域?


別小看了這個作用域,就像c#定義一個類的class關鍵字一樣重要。

2,為JQuery擴展一個插件:當定義好了JQuery的作用域後,最核心也是最迫切的一步就是為這個JQuery的實例添加一個擴展方法。首先我們為這個Jqury插件命名一個方法,叫easySlider,當在調用這個插件的時候,我們可以通過options來給這個插件傳遞一些參數。具體的定義方法看如下代碼:


到現在為止,其實一個最簡單的JQuery插件就已經完成了。調用的時候可以("#domName").easySlider({}),或者(".domName").easySlider({})或者更多的方式來調用這個插件。


3,設置默認值:定義一個JQuery插件,就像定義一個.net控制項。一個完美的插件,應該是有比較靈活的屬性。我們來看這段代碼:。 TextBox控制項有Width和Height屬性,用戶在用TextBox時,可以自由的設置控制項


的Height和Width,也可以不設置值,因為控制項自身有默認值。那準備開發一個JQuery插件時,在用戶未指定屬性時,應該有默認值,在JQuery可以分兩步實現這樣的定義,看如下代碼step03-a,step03-b。

做程序的人都喜歡創新,改改變數名呀,換一個行呀這些。當看到用var defaults = {}來表示一個默認屬性時,在自己寫JQuery插件時就想著與眾不同,所以用var default01 ={} ,var default02 ={}來表示默認屬性了。然後默認屬性名五花八門,越來越糟。所以建議在寫JQuery插件時,定義默認屬性時,都用defaults變數來代表默認屬性,這樣的代碼更具有可讀性。


有人看到這行代碼:var options = $.extend(defaults, options),皺起眉頭,表示不解。那我們先來看如下代碼:


把代碼拷貝到開發環境中,分別看一下a,b,c,d的值,就明白了var options = $.extend(defaults, options)的含義了。表示 options 去覆蓋了defaults的值,並把值賦給了options。


在插件環境中,就表示用戶設置的值,覆蓋了插件的默認值;如果用戶沒有設置默認值的屬性,還是保留插件的默認值。


4,支持JQuery選擇器:JQuery選擇器,是JQuery的一個優秀特性,如果我們的插件寫來不支持JQuery選擇器,確實是一個不小的遺憾。如了使自己的JQuery插件能支持多個選擇器,我們的代碼應該這樣定義:


5、支持JQuery的鏈接調用:上邊的代碼看似完美了,其實也不那麼完美。到目前為止還不支持鏈接調用。為了能達到鏈接調用的效果必須要把循環的每個元素return


這樣的定義才能支持鏈接調用。比如支持這樣的調用:$(".div").easySlider().css({ "border-width": "1", "border-color": "red", "border-bottom-style": "dotted" });


6,插件里的方法:往往實現一個插件的功能需要大量的代碼,有可能上百行,上千行,甚至上萬行。我們把這代碼結構化,還得藉助function。在第一點已經說了,在插件里定義的方法,外界不能直接調用,我在插件里定義的方法也沒有污染外界環境。現在就嘗試著怎麼樣在插件里定義一些方法:


步驟step06-a:在插件里定義了一個方法叫showLink(); 這個方法在插件外是不能直接調用的,有點像C#類里的一個私有方法,只能滿足插件內部的使用。步驟step06-b演示了怎樣調用插件內部的方法。


四:總結


開發只要形成了標準,然後再去閱讀別人的代碼就沒有那麼吃力了。感覺 贊 的就幫忙頂上去,讓更多了了解開發JQuery插件開發的標準。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序猿 的精彩文章:

王垠:自動編程是不可能的,我為什麼不在乎人工智慧
2017年前端開發工具趨勢
致剛入行的前端工程師
2016年最流行的六大深度學習開源工具
它們養活了一票國產軟體!這些開源軟體你知道嗎

TAG:程序猿 |

您可能感興趣

GitHub已完全棄用jQuery,問題是為什麼?
jQuery Mobile 事件
jQuery UI 定製
GitHub:為什麼我們最終選擇放棄了 jQuery
jQuery Mobile 實例
jQuery Mobile 按鈕
jQuery UI 為什麼使用部件庫(Widget Factory)
jQuery Mobile 表單
jQuery Mobile 彈窗
jQuery Mobile 頁面
jQuery Mobile 過渡
jQuery Mobile 表格
jQuery UI 使用
JQuery.form.js插件的簡單使用
jQuery Mobile 過濾
jQuery UI編程的 ThemeRoller
jQuery Mobile 主題
jQuery UI 實例
jQuery Mobile編程
jQuery Mobile 圖標