0Pricing
jQuery Academy · Lezione

Integrazione di metodi pubblici e callback

Aggiungere metodi pubblici ai plugin per consentire interazioni esterne e incorporare funzioni callback che permettano agli utenti di collegarsi a specifici eventi del plugin.

Integrazione di metodi pubblici e callback è una lezione jQuery Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento jQuery Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso jQuery Academy include 3 lezioni in totale.

Interagire con i propri plugin

I plugin eccellenti non sono semplicemente autonomi. Consentono agli utenti di interagire con loro anche dopo l'inizializzazione! In questa lezione imparerà ad aggiungere metodi pubblici per il controllo esterno e funzioni callback per reazioni personalizzate.

  • Metodi pubblici: Funzioni che gli utenti possono chiamare su un'istanza di plugin inizializzata.
  • Callback: Funzioni eseguite quando si verificano eventi specifici all'interno del plugin.

Ripasso delle basi dei plugin

Ricordi che i plugin jQuery sono spesso racchiusi in un Immediately Invoked Function Expression (IIFE) per evitare l'inquinamento dell'ambito globale. Questa struttura offre uno spazio sicuro per la logica e le variabili interne del plugin.

Costruiremo su questo schema già noto.

(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();

Cosa sono i metodi pubblici

Un metodo pubblico è una funzione esposta dal plugin che può essere chiamata dall'esterno del suo ambito interno, anche dopo che il plugin è stato inizializzato su un elemento.

Lo si può considerare come un telecomando per il plugin. È possibile indicargli di eseguire operazioni come "reset", "update" o "get a value".

Implementazione di un metodo pubblico

Per aggiungere metodi pubblici, in genere memorizziamo i dati dell'istanza del plugin (compresi i suoi metodi) direttamente sull'elemento DOM usando il metodo .data() di jQuery.

Creiamo un semplice plugin "counter" e aggiungiamo un metodo 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();

Chiamata dei metodi pubblici

Una volta inizializzato il plugin e memorizzati i suoi metodi tramite .data(), è possibile accedervi e chiamarli direttamente.

Il passaggio fondamentale consiste nel recuperare prima l'istanza memorizzata dall'elemento e chiamare poi il metodo su tale istanza.

// 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());
});

Cosa sono i callback

Le funzioni callback sono funzioni passate al plugin, che le esegue in momenti specifici del suo ciclo di vita o quando si verificano determinati eventi interni.

Consentono agli utenti di "agganciarsi" al comportamento del plugin e aggiungere una logica personalizzata senza modificare il codice sorgente del plugin.

  • Le si può considerare come listener di eventi per le azioni interne del plugin.
  • Callback comuni: onInit, onChange, onComplete.

Implementazione di un callback

Per implementare un callback, lo definisca innanzitutto nelle opzioni predefinite del plugin. Quindi, all'interno del plugin, richiami semplicemente questa funzione quando si verifica l'evento pertinente, passando i dati utili.

Estendiamo il nostro plugin "counter" con un callback 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!

Passaggio delle funzioni callback

Durante l'inizializzazione, gli utenti passano le proprie funzioni callback personalizzate direttamente nell'oggetto delle opzioni del plugin. Il plugin richiamerà quindi queste funzioni al momento opportuno.

Noti come viene utilizzato .call($this[0], value). In questo modo this all'interno del callback viene impostato sull'elemento DOM e il nuovo valore viene passato come argomento.

// 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
});

Più metodi e callback

È possibile definire più metodi pubblici e diversi callback per gestire vari eventi all'interno del plugin. In questo modo si crea un componente flessibile e potente.

  • I metodi pubblici consentono agli utenti di impartire comandi al plugin.
  • I callback permettono al plugin di informare il codice dell'utente su ciò che sta accadendo.
(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();
});

Suggerimenti su metodi pubblici e callback

Quando progetta l'interfaccia pubblica del plugin, tenga presenti questi suggerimenti:

  • Nomi coerenti: Utilizzi nomi chiari e descrittivi per metodi e callback.
  • Gestione degli errori: Verifichi che i callback siano effettivamente funzioni prima di chiamarli (ad esempio, $.isFunction(settings.onComplete)).
  • Contesto: Utilizzi .call() o .apply() per impostare il contesto this dei callback, spesso sull'elemento a cui viene applicato il plugin.
  • Argomenti: Passi ai callback i dati pertinenti (ad esempio, il nuovo valore o l'oggetto evento).

Quiz sull'interazione con i plugin

Consideri un plugin jQuery inizializzato su #myElement. Il plugin dispone di un metodo pubblico chiamato doSomething() e di un callback onComplete.

Quale frammento di codice chiama correttamente il metodo pubblico E passa un callback personalizzato durante l'inizializzazione?

Riepilogo e prossimi passi

Ha imparato a rendere i suoi plugin jQuery davvero interattivi e flessibili!

  • I metodi pubblici consentono al codice esterno di controllare e interrogare il plugin dopo la sua inizializzazione.
  • I callback forniscono agli utenti punti di aggancio per inserire una logica personalizzata in risposta agli eventi interni del plugin.

Queste tecniche sono fondamentali per creare plugin jQuery robusti, riutilizzabili e facili da usare.

Domande Frequenti

La lezione «Integrazione di metodi pubblici e callback» è gratuita?

Sì — il testo completo di «Integrazione di metodi pubblici e callback» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso jQuery Academy, passa a CoddyKit PRO. Il corso jQuery Academy include 3 lezioni in totale.

Cosa imparerò in «Integrazione di metodi pubblici e callback»?

Aggiungere metodi pubblici ai plugin per consentire interazioni esterne e incorporare funzioni callback che permettano agli utenti di collegarsi a specifici eventi del plugin. Eserciti jQuery Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare jQuery Academy?

Non è richiesta alcuna esperienza precedente. jQuery Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.

Quanto tempo richiede la lezione «Integrazione di metodi pubblici e callback»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione jQuery Academy?

Sì. Ogni lezione jQuery Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Pattern di progettazione e scope dei plugin
  2. Creazione di plugin configurabili e riutilizzabili
  3. Integrazione di metodi pubblici e callback
← Torna a jQuery Academy