W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫jQuery插件與向jQuery.prototype
(通常顯示為$.fn
)添加方法一樣簡單,且需要遵循一些簡單的規(guī)則,比如返回this
。所以為什么會(huì)存在部件庫(Widget Factory)?
在本章節(jié)中,我們將講解部件庫(Widget Factory)的好處,并了解何時(shí)使用它,以及為什么要使用它。
大多數(shù)jQuery插件是無狀態(tài)的,它們執(zhí)行一些動(dòng)作即完成了它們的任務(wù)。例如,如果您使用.text( "hello" )
設(shè)置元素的文本,沒有安裝階段,結(jié)果都是一樣的。對(duì)于這種類型的插件,它只是擴(kuò)展了jQuery的原型。
然而,一些插件是有狀態(tài)的,它們有全生命周期、維持狀態(tài)以及對(duì)變化的反應(yīng)。這些插件需要大量專門的代碼來初始化和狀態(tài)管理(有時(shí)是銷毀)。這就導(dǎo)致出現(xiàn)了用于創(chuàng)建有狀態(tài)插件的模板。更糟糕的是,每個(gè)插件的作者按照不同的方式進(jìn)行管理插件的生命周期和狀態(tài),這就導(dǎo)致了不同的插件有不同的API樣式。部件庫(Widget Factory)旨在解決這些問題,它移除了模板,并為插件創(chuàng)建了一個(gè)一致的API。
部件庫(Widget Factory)定義了如何創(chuàng)建和銷毀小部件,獲取和設(shè)置選項(xiàng),調(diào)用方法,以及監(jiān)聽小部件觸發(fā)的事件。通過使用部件庫(Widget Factory)來創(chuàng)建有狀態(tài)的插件,會(huì)自動(dòng)符合定義的標(biāo)準(zhǔn),讓新用戶更容易使用您的插件。另外,部件庫(Widget Factory)還能實(shí)現(xiàn)定義接口的功能。如果您對(duì)部件庫(Widget Factory)提供的API還不熟悉,請(qǐng)查看如何使用部件庫(Widget Factory)。
當(dāng)您創(chuàng)建一個(gè)接受選項(xiàng)的插件時(shí),您應(yīng)該為盡可能多的選項(xiàng)定義defaults。然后在初始化時(shí),把用戶提供的選項(xiàng)與defaults進(jìn)行合并。您也可以暴露defaults,這樣用戶就可以更改默認(rèn)值。在jQuery插件中,一個(gè)常用的模式如下所示:
$.fn.plugin = function( options ) {
options = $.extend( {}, $.fn.plugin.defaults, options );
// Plugin logic goes here.
};
$.fn.plugin.defaults = {
param1: "foo",
param2: "bar",
param3: "baz"
};
部件庫(Widget Factory)也提供了這個(gè)功能,并在這上面做了改進(jìn)。使用部件庫(Widget Factory)之后,它將如下所示。
$.widget( "ns.plugin", {
// Default options.
options: {
param1: "foo",
param2: "bar",
param3: "baz"
},
_create: function() {
// Options are already merged and stored in this.options
// Plugin logic goes here.
}
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: