RT!
Schreiben Sie beispielsweise ein Plug-In mit Tab-Funktion, Karussellfunktion, Popup-Fensterfunktion usw.
Natürlich müssen diese Funktionen nicht leistungsstark sein, sondern nur, um diese Funktionen für eine einfache Verwendung zusammenzuführen. Nennen Sie es einfach
Meine Idee ist:
Verpacken Sie es mit var method = {...}, und ... im Inneren repr?sentiert N kleine Funktionen.
Zum Beispiel:
var methods = {
nTab: function(options) {
return this.each(function() {
var defaults = { ... }; // 每增加一個功能就要多寫一遍這個
settings = $.extend({}, defaults, options);
// 執(zhí)行代碼
}
},
slide: function(options) {
return this.each(function() {
var defaults = { ... }; // 每增加一個功能就要多寫一遍這個
settings = $.extend({}, defaults, options);
// 執(zhí)行代碼
}
}
// N個小功能代碼 ...
}
$.fn.pluginName = function() {
var method = arguments[0];
if(methods[method]) {
method = methods[method];
arguments = Array.prototype.slice.call(arguments, 1);
} else if( typeof(method) == 'object' || !method ) {
method = methods.init;
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.pluginName' );
return this;
}
return method.apply(this, arguments);
}
Derzeit habe ich ein Plug-In nach dieser Methode geschrieben, das einige von mir h?ufig verwendete js-Spezialeffekte enth?lt, aber ich habe immer das Gefühl, dass es nicht gut ist, so zu schreiben, aber ich wei? nicht, welche Verbesserungen erforderlich sind Bitte geben Sie mir einige Ratschl?ge von ?lteren Menschen, die vorbeigekommen sind.
Ich frage mich, ob jemand die gleichen Bedürfnisse hat wie ich.
你這就是要自己寫個庫的節(jié)奏啊!你現(xiàn)在的想法類似 jQuery EasyUI,它的每個組件都對應(yīng)一個 $.fn.<component>()
方法,這個方法第的一個參數(shù)是組件方法名,之后是這個方法的參數(shù),比如
$("#id1").panel("show")
這就是調(diào)用的 panel 組件的 show 方法。
這種寫法用慣也挺好,但是有個問題,就是很難在編輯器中實現(xiàn)語法提示。
另外一種方式是 MiniUI 的方式,它是通過一個特定的方法(mini.get()
)來根據(jù) DOM 獲取一個組件控制對象,然后跟使用普通對象一樣來使用這個對象進行相關(guān)的組件操作。比如
var panel = mini.get("id1");
panel.show();
兩種方式應(yīng)該都能實現(xiàn)你的想法,區(qū)別就在于封裝一個函數(shù)(方法)接口和封裝一個對象接口的區(qū)別