jQuery: funzionalità fondamentali che mancano a molti plugin

Molti plugin jQuery mancano di alcune funzionalità fondamentali.

Fornire un accesso pubblico alle impostazioni predefinite dei plugin

Un miglioramento che possiamo ottenere dai nostri plugin è quello di esporre le loro impostazioni predefinite. Questo è importante perché permette di sovrascrivere e personalizzare i plugin con molta semplicità.

In questo caso utilizziamo le caratteristiche dell'oggetto funzione.


$.fn.hilight = function( options ) {
	var opts = $.extend( {}, $.fn.hilight.defaults, options );
	//...
	$.fn.hilight.defaults = {
		foreground: "black",
		background: "yellow"
	};
};

Ora gli utenti possono includere la seguente riga di codice nei loro script:


$.fn.hilight.defaults.foreground = "red";

Ora possiamo utilizzare il plugin usando come valore predefinito il colore rosso per il testo:


$( "#test" ).hilight();

Gli utenti possono comunque specificare un altro colore usando le opzioni del plugin:


$( "#test" ).hilight({
	foreground: "#080",
	background: "#eee"
});

Fornire un accesso pubblico alle funzioni secondarie

Questa funzionalità segue la precedente ed è un modo interessante per estendere i vostri plugin. Per esempio il nostro plugin può definire una funzione chiamata format() che formatta il testo.


$.fn.hilight = function( options ) {
	return this.each(function() {
		var $this = $( this );
		//...
		var markup = $this.html();
		
		markup = $.fn.hilight.format( markup );
		
		$this.html( markup );
	});

};

$.fn.hilight.format = function( txt ) {
	return "<strong>" + txt + "</strong>";
};

Così facendo la funzione format() diventa a tutti gli effetti un metodo pubblico del nostro plugin e può essere utilizzata anche al di fuori del suo contesto.

Creare funzioni private

Un altro modo di estendere le funzionalità dei nostri plugin è quello di creare funzioni private. Al contrario dei metodi pubblici, le funzioni private sono ad uso esclusivamente interno e non possono essere usate al di fuori del contesto del plugin.


// Closure
(function( $ ) {
	$.fn.hilight = function( options ) {
		debug( this );
	};
	
	function debug( $obj ) {
		console.log( "Plugin hilight invocato su " + $obj[0].outerHTML );
	}

})( jQuery );

Il nostro metodo di debug è privato perché il suo accesso è limitato all'interno della closure che abbiamo appena creato.

Torna su