iT邦幫忙

DAY 20
2

jQuery 套件開發之我可不可以跳著說系列 第 16

jQuery套件開發之(十九),對於套件參數的思考

今天我們要再度從比較宏觀的角度來看套件

今天想focus在參數這件事情

一般來說,我們會用$.extend來融合各種參數。

但實際上,參數有幾個層面。

不是最後用一個$.extend就跟救世主一樣解決一切問題。

參數我覺得有三種

名稱只是我自己依照語意適當與否取的

1.預設值。 //系統內建,可被覆蓋。
2.設定值。 //外部傳入的設定。
3.內定值。 //系統內建,不可被覆蓋。

當使用extend的時候,考慮到extend的特性

理應如此安排:

var 運算值 = $.extend(預設值,設定值,內定值) ;

得出"運算值",也就是執行程式時,實際上使用的。

關於內定值,有兩種設計方式。

一種是完全不參與$.extend的融合大會,單純的在使用的時候

直接拿另外一個物件來使用。

另一種是參與$.extend的融合大會,這樣之後

在撰寫套件時,就可以直接用運算值這個物件得出所有的資源。

基本上第二種比較好。

此外,在處理參數的時候

也常常遇到,外部的一個設定值,會一次影響三四個預設值。

這種狀況是有一個參數可以調"模式"的時候會發生。

可能一次改變了顏色、字體大小等等

所以,結論就是extend不是萬能的

依舊要有一段程序,專門負責"運算值"的生成!

有了這樣的觀念

我連帶把我平常寫套件的寫作習慣帶進來。

如果有一個套件是$(selector).pg() ;

對我來說,也滿有可能有$.pg() 這樣的執行方法。

我給自己設下了一個小小的限制,減少思維與開發的複雜程度。

就是$.pg() ;只有兩種用法。

$.pg(‘方法’, {參數}) ;
$.pg({參數}) ;

第一種的強度等同於設定值,但也只是修飾方法的參數。

第二種,是把方法名稱省略了

所以實際上是$.pg(‘init’, {參數}) ;

這時候,參數就應該寫入預設值。

但之後如果有設定值,依舊可以蓋過。

有一個小小的問題

既然$.pg跟 $.fn.pg的功用不同。

那他們還是共用同一個"運算值"嗎?

我目前是分開存的。

一個是$[pg].settings

一個是this.settings

但是的確在製作this.settings的時候,會去參考$[pg].settings,而內定值則是共用的。


上一篇
jQuery套件開發之(十八),寫套件時,綁定事件要小心
下一篇
jQuery套件開發之(二十),tooltip
系列文
jQuery 套件開發之我可不可以跳著說26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言