Zaczynam od pisania wtyczek jQuery. Napisałem trzy małe wtyczki, ale po prostu kopiowałem linię do wszystkich moich wtyczek, nie wiedząc, co to znaczy. Czy ktoś może mi powiedzieć coś więcej na ten temat? Być może kiedyś przyda się wyjaśnienie przy pisaniu frameworka :)
Co to robi? (Wiem, że jakoś rozszerza jQuery, ale czy jest coś jeszcze ciekawego do powiedzenia na ten temat)
(function($) {
})(jQuery);
Jaka jest różnica między następującymi dwoma sposobami pisania wtyczki:
Typ 1:
(function($) {
$.fn.jPluginName = {
},
$.fn.jPluginName.defaults = {
}
})(jQuery);
Typ 2:
(function($) {
$.jPluginName = {
}
})(jQuery);
Typ 3:
(function($){
//Attach this new method to jQuery
$.fn.extend({
var defaults = {
}
var options = $.extend(defaults, options);
//This is where you write your plugin's name
pluginname: function() {
//Iterate over the current set of matched elements
return this.each(function() {
//code to be inserted here
});
}
});
})(jQuery);
Mógłbym być tutaj daleko i być może wszystkie oznaczają to samo. Jestem zdezorientowany. W niektórych przypadkach, to nie wydaje się działać w wtyczce że pisałem używając Type 1. Do tej pory, typ 3 wydaje się najbardziej elegancki do mnie, ale chciałbym wiedzieć o innych.
(function($) { })(jQuery)tobie powiedziałeś: „Wiem, że rozszerza jQuery [...]”. Oczywiście nie wiesz, ponieważ twoje oświadczenie jest w 100% fałszywe. Nawiasem mówiąc, może być mylące dla przyszłych czytelników. Spójrz na to: stackoverflow.com/a/32550649/1636522 .
(function($) { })(jQuery);okłady kod tak, że$jestjQuerywewnątrz tego zamknięcia, nawet jeśli$oznacza coś innego poza nim, zazwyczaj w wyniku$.noConflict()na przykład. To gwarantuje, że Twoja wtyczka działa, niezależnie od tego, czy nie$ === jQuery:)