Integração de Métodos Públicos e Retornos de Chamada
Adicione métodos públicos aos seus plugins para interação externa e incorpore funções de retorno de chamada para permitir que os usuários se conectem a eventos específicos dos plugins.
Integração de Métodos Públicos e Retornos de Chamada é uma aula grátis de jQuery Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de jQuery Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de jQuery Academy inclui 3 aulas no total.
Interaja com seus plug-ins
Os melhores plug-ins não funcionam apenas de forma independente. Eles permitem que os usuários interajam com eles após a inicialização! Nesta lição, você aprenderá a adicionar métodos públicos para controle externo e funções de retorno de chamada para reações personalizadas.
- Métodos públicos: funções que os usuários podem chamar em uma instância inicializada do plug-in.
- Retornos de chamada: funções executadas quando eventos específicos ocorrem dentro do plug-in.
Revisão dos conceitos básicos de plug-ins
Lembre-se de que os plug-ins jQuery geralmente são envolvidos em uma Expressão de Função Invocada Imediatamente (IIFE) para evitar a poluição do escopo global. Essa estrutura oferece um espaço seguro para a lógica e as variáveis internas do seu plug-in.
Vamos desenvolver esse padrão familiar.
(function($) {
$.fn.myPlugin = function(options) {
// Default settings
var settings = $.extend({}, $.fn.myPlugin.defaults, options);
return this.each(function() {
var $this = $(this); // The element the plugin is applied to
// Plugin logic goes here
console.log("Plugin initialized on: " + $this.attr('id'));
});
};
// Default options
$.fn.myPlugin.defaults = {
message: "Hello from plugin!"
};
})(jQuery);
// How to use (in HTML <div id="myElement"></div>):
// $('#myElement').myPlugin();O que são métodos públicos?
Um método público é uma função exposta pelo seu plug-in que pode ser chamada de fora do escopo interno, mesmo depois que o plug-in tenha sido inicializado em um elemento.
Pense nele como um controle remoto para o seu plug-in. Você pode instruí-lo a fazer coisas como "resetar", "atualizar" ou "obter um valor".
Implementando um método público
Para adicionar métodos públicos, normalmente armazenamos os dados da instância do plug-in (incluindo seus métodos) diretamente no elemento DOM usando o método .data() do jQuery.
Vamos criar um plug-in simples de "contador" e adicionar um método getValue.
(function($) {
$.fn.counterPlugin = function(options) {
var settings = $.extend({
initialValue: 0
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initialValue;
var methods = {
getValue: function() {
return value;
},
increment: function() {
value++;
$this.text(value); // Update display
},
init: function() {
$this.text(value); // Initial display
}
};
// Store methods on the element's data
$this.data('counterPlugin', methods);
methods.init(); // Initialize display
});
};
})(jQuery);
// HTML: <div id="myCounter"></div>
// Usage: $('#myCounter').counterPlugin();
// Later: $('#myCounter').data('counterPlugin').getValue();Chamando métodos públicos
Depois que o plug-in for inicializado e seus métodos forem armazenados por meio de .data(), você poderá acessá-los e chamá-los diretamente.
O ponto principal é recuperar primeiro a instância armazenada no elemento e, em seguida, chamar o método nessa instância.
// Assume counterPlugin from previous scene is loaded
// HTML: <div id="myCounter"></div>
$(document).ready(function() {
// Initialize the plugin
$('#myCounter').counterPlugin({ initialValue: 5 });
// Get the plugin instance
var counterInstance = $('#myCounter').data('counterPlugin');
// Call public methods
console.log("Current value: " + counterInstance.getValue());
counterInstance.increment();
console.log("After increment: " + counterInstance.getValue());
});O que são retornos de chamada?
Funções de retorno de chamada são funções que você passa ao plug-in, e que ele executa em momentos específicos durante seu ciclo de vida ou quando determinados eventos internos ocorrem.
Elas permitem que os usuários se conectem ao comportamento do seu plug-in e adicionem sua própria lógica personalizada sem modificar o código-fonte do plug-in.
- Pense nelas como ouvintes de eventos para ações internas do plug-in.
- Retornos de chamada comuns:
onInit,onChange,onComplete.
Implementando um retorno de chamada
Para implementar um retorno de chamada, primeiro defina-o nas opções padrão do seu plug-in. Em seguida, dentro do plug-in, basta chamar essa função quando o evento relevante ocorrer, passando os dados úteis.
Vamos estender nosso plug-in de contador com um retorno de chamada onChange.
(function($) {
$.fn.counterPlugin = function(options) {
var settings = $.extend({
initialValue: 0,
onChange: function(newValue) {} // Default empty callback
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initialValue;
var methods = {
getValue: function() {
return value;
},
increment: function() {
value++;
$this.text(value);
// Call the callback when value changes
settings.onChange.call($this[0], value);
},
init: function() {
$this.text(value);
}
};
$this.data('counterPlugin', methods);
methods.init();
});
};
})(jQuery);
// Usage: See next scene!Passando funções de retorno de chamada
Os usuários passam suas funções de retorno de chamada personalizadas diretamente no objeto de opções do plug-in durante a inicialização. Em seguida, o plug-in invocará essas funções no momento apropriado.
Observe como .call($this[0], value) é usado. Isso define this dentro do retorno de chamada como o elemento DOM e passa o novo valor como argumento.
// Assume counterPlugin with onChange callback is loaded
// HTML: <div id="myCounter"></div>
$(document).ready(function() {
$('#myCounter').counterPlugin({
initialValue: 10,
onChange: function(newValue) {
console.log("Counter changed to: " + newValue + " on element: " + this.id);
if (newValue % 2 === 0) {
$(this).css('color', 'blue');
} else {
$(this).css('color', 'red');
}
}
});
var counterInstance = $('#myCounter').data('counterPlugin');
counterInstance.increment(); // Triggers callback
counterInstance.increment(); // Triggers callback
});Vários métodos e retornos de chamada
Você pode definir vários métodos públicos e diversos retornos de chamada diferentes para lidar com vários eventos dentro do seu plug-in. Isso cria um componente flexível e poderoso.
- Os métodos públicos permitem que os usuários comandem o plug-in.
- Os retornos de chamada permitem que o plug-in informe ao código do usuário o que está acontecendo.
(function($) {
$.fn.advancedCounter = function(options) {
var settings = $.extend({
initial: 0,
onIncrement: null, // New callback
onDecrement: null, // New callback
onReset: null // New callback
}, options);
return this.each(function() {
var $this = $(this);
var value = settings.initial;
var methods = {
getValue: function() { return value; },
increment: function() {
value++;
$this.text(value);
if ($.isFunction(settings.onIncrement)) {
settings.onIncrement.call($this[0], value);
}
},
decrement: function() {
value--;
$this.text(value);
if ($.isFunction(settings.onDecrement)) {
settings.onDecrement.call($this[0], value);
}
},
reset: function() {
value = settings.initial;
$this.text(value);
if ($.isFunction(settings.onReset)) {
settings.onReset.call($this[0], value);
}
},
init: function() { $this.text(value); }
};
$this.data('advancedCounter', methods);
methods.init();
});
};
})(jQuery);
// HTML: <div id="myAdvancedCounter"></div>
$(document).ready(function() {
$('#myAdvancedCounter').advancedCounter({
initial: 100,
onIncrement: function(v) { console.log("Inc: " + v); },
onReset: function(v) { console.log("Reset to: " + v); }
});
var inst = $('#myAdvancedCounter').data('advancedCounter');
inst.increment();
inst.reset();
});Dicas sobre métodos públicos e retornos de chamada
Ao projetar a interface pública do seu plug-in, tenha estas dicas em mente:
- Nomenclatura consistente: use nomes claros e descritivos para métodos e retornos de chamada.
- Tratamento de erros: verifique se os retornos de chamada são realmente funções antes de chamá-los (por exemplo,
$.isFunction(settings.onComplete)). - Contexto: use
.call()ou.apply()para definir o contexto dethisdos retornos de chamada, geralmente como o elemento ao qual o plug-in foi aplicado. - Argumentos: passe dados relevantes aos retornos de chamada (por exemplo, o novo valor ou o objeto de evento).
Questionário sobre interação com plug-ins
Considere um plug-in jQuery inicializado em #myElement. O plug-in tem um método público chamado doSomething() e um retorno de chamada onComplete.
Qual trecho de código chama corretamente o método público E passa um retorno de chamada personalizado durante a inicialização?
Recapitulação e próximos passos
Você aprendeu a tornar seus plug-ins jQuery realmente interativos e flexíveis!
- Os métodos públicos permitem que o código externo controle e consulte seu plug-in depois que ele é inicializado.
- Os retornos de chamada oferecem pontos de extensão para que os usuários insiram lógica personalizada em resposta a eventos internos do plug-in.
Essas técnicas são fundamentais para criar plug-ins jQuery robustos, reutilizáveis e fáceis de usar.
Perguntas Frequentes
A aula “Integração de Métodos Públicos e Retornos de Chamada” é grátis?
Sim — o texto completo de “Integração de Métodos Públicos e Retornos de Chamada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de jQuery Academy, atualize para CoddyKit PRO. O curso de jQuery Academy inclui 3 aulas no total.
O que vou aprender em “Integração de Métodos Públicos e Retornos de Chamada”?
Adicione métodos públicos aos seus plugins para interação externa e incorpore funções de retorno de chamada para permitir que os usuários se conectem a eventos específicos dos plugins. Você pratica jQuery Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar jQuery Academy?
Nenhuma experiência prévia é necessária. jQuery Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Integração de Métodos Públicos e Retornos de Chamada”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de jQuery Academy?
Sim. Cada aula de jQuery Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Padrões de Design e Escopo de Plugins
- Criação de Plugins Configuráveis e Reutilizáveis
- Integração de Métodos Públicos e Retornos de Chamada