Archivio per la categoria "Javascript"



Microsoft e jQuery (sembra uno scherzo, ma non lo è)

Risale a qualche minuto fa la notizia che Microsoft ha stretto una partnership con il team di jQuery non solo per supportare ufficialmente questa libreria all'interno dei suoi prodotti di sviluppo come Visual Studio 2008 e la versione free di Visual Web Developer ma anche per distribuirla in alcune sue librerie web-oriented come l'ormai prossima ASP.NET MVC o AJAX Control Toolkit. Il supporto negli ambienti di sviluppo sarà fornito inizialmente da un pacchetto scaricabile gratuitamente nelle prossime settimane mentre in futuro sarà integrato direttamente in Visual Studio. Vorrei citare solo due passaggi, il primo dal blog di Scott Guthrie che riporta l'annuncio:

We will distribute the jQuery JavaScript library as-is, and will not be forking or changing the source from the main jQuery branch.  The files will continue to use and ship under the existing jQuery MIT license.

Il secondo invece arriva dal post di Scott Hanselman (e che in effetti riassume uno dei principali motivi per cui questo annuncio mi ha stupito):

Folks have said Microsoft would never include Open Source in the platform, I'm hoping this move is representative of a bright future.

Ecco i rispettivi annunci ufficiali da parte di Scott Guthrie e John Resig (il quale estende la notizia riportando anche la collaborazione ufficiale di jQuery con Nokia).

Prime impressioni su Popfly

Oggi ho potuto dedicare un po' di tempo a una prova sul campo di Popfly, il nuovo tool online di Microsoft per la creazione di mashup e blocchi (le varie componenti che, quando combinate, formano i mashup) in maniera visuale e intuitiva sfruttando il runtime di Silverlight 1.0 beta... insomma, una sorta di Yahoo! Pipes su steroidi (molti steroidi). Devo ammettere che l'impressione maturata nei confronti di questo strumento per ora è buona soprattutto considerando che si tratta di una alpha, comunque ecco alcune considerazioni sparse:

  • la creazione dei mashup è effettivamente semplice e abbastanza intuitiva, ma probabilmente c'è spazio per ulteriori migliorie in questo senso. Sicuramente ci sono un po' di particolari da sistemare all'interno del designer visuale, sia in termini di usabilità che di presentazione.
  • se necessario è sempre possibile metter mano alla catena di blocchi a un livello più basso, editando quindi il codice JavaScript manualmente. L'editor JS integrato supporta una funzionalità simile all'IntelliSense di Visual Studio con tanto di completamento automatico del codice, inoltre in futuro verrà esteso per supportare altre funzionalità come la colorazione del codice.
  • è disponibile un SDK con un manuale in PDF e una solution di Visual Studio, che in realtà può essere caricata anche in Visual Web Developer (che al contrario di VS è gratis).
  • attualmente sono pienamente supportati solo Internet Explorer 7.0 e Firefox 2.0, il supporto per altri browser arriverà in seguito. Come nota di contorno, le seguenti righe estrapolate da A note about Firefox all'interno del PDF nell'SDK fanno quantomeno effetto visto che si sta parlando di un prodotto Microsoft:

    When we said we like Firefox we really meant it. We’ve put a lot of effort into getting rid of bad habits, but we’re not there yet. We don’t want to go back to that bad behavior. You should really think about making your block work in both Firefox 1.5+ and IE 6+, and at the very least your block should work in FF 2.0 and IE 7.0.

  • Popfly funziona seriamente anche con Firefox 2.0, per la mia prova ho usato questo browser non avendo ancora installato IE7 su questo computer (e con IE6 effettivamente non funziona tutto a dovere).
  • le proprie creazioni, siano esse pagine web, mashup o blocchi, possono essere memorizzate in uno spazio personale su server di 25 MB e, volendo, da lì possono essere condivise con gli altri utenti della community di Popfly. Per esempio, la condivisione di un blocco può permettere ad altri utenti di utilizzarlo nei propri mashup personali e non. In realtà allo stato attuale di Popfly qualsiasi creazione deve necessariamente essere condivisa per essere salvata, ma nell'help viene detto chiaramente che questa limitazione sarà rimossa appena possibile.
  • tramite la funzionalità embed è possibile ottenere il codice per integrare i propri mashup in pagine web esterne, quindi volendo anche sul proprio blog per fare un esempio pratico.
  • per chi utilizza Windows Vista, tutti i mashup possono essere esportati come gadget e inseriti all'interno della sidebar... indipendentemente da cosa si possa pensare della sidebar, questa possibilità mi sembra un'idea intelligente.
  • l'editor WYSIWYG online per la creazione di pagine web non sarebbe nemmeno troppo malvagio se non fosse troppo limitato ai temi e alle grafiche predefiniti, ma del resto questa funzionalità dovrebbe essere destinata a gente con un profilo tecnico pressoché nullo.
  • tra i blocchi ufficiali creati dal team di sviluppo si possono notare diversi, almeno 6, riguardanti applicazioni Yahoo!, eppure di blocchi con applicazioni Google non c'è nemmeno l'ombra. Si tratta di un caso, di una scelta tecnica o di una scelta politica?

Nonostante qualche baco sparso qua e là e pressoché nessuna possibilità di effettuare un minimo di debug senza l'utilizzo di strumenti esterni (comunque illustrati nell'SDK sia per Firefox che per Internet Explorer), in generale mi sembra che i risultati siano già piuttosto buoni considerando che la versione finale non dovrebbe essere propriamente dietro l'angolo. Sicuramente c'è spazio per moltissimi miglioramenti e forse qualche altra funzionalità, prossimamente vedrò di fare ancora un po' di esperimenti ed eventualmente vi informerò non appena avrò inviti a disposizione (per ora penso che possa dispensarli solamente il team di sviluppo).

jQuery 1.0

Quasi mi stavo dimenticando di segnalare una cosa importante: ieri è stata rilasciata la versione finale di jQuery 1.0! Nel messaggio linkato che annuncia il rilascio della nuova versione potrete trovare anche qualche collegamento utile. Intanto complimenti a John Resig per il raggiungimento di questa importante release.

Aprire link in nuove fineste con XHTML strict e JQuery

Chi è abituato a scrivere codice XHTML con l'opzione strict saprà benissimo che l'attributo target è considerato deprecato per gli elementi di tipo a, pertanto la sua presenza non farebbe altro che far urlare peste e corna allo strumento di validazione di turno. Come fare quindi a richiamare link esterni in nuove finestre del browser se non è possibile ricorrere al vecchio metodo target="_blank"? Un modo per aggirare questo problema consiste nell'utilizzo di javascript, senza però intasare il codice con degli invasivi nonchè ridondanti attributi onclick definiti nei tag dei link. Vi mostro come farlo con pochissime righe sfruttando JQuery:

$(document).ready(function() {
    $("a[@class='new_window_link']").each(function() {  this.target = "_blank";  });
});

Questo snippet non fa altro che selezionare all'interno del documento, una volta completato il suo caricamento, tutti gli elementi di tipo a che hanno definito l'attributo class con il valore new_window_link al fine di valorizzarne la proprietà target direttamente a livello di oggetto del DOM. Per effettuare la selezione in questo caso è stata utilizzata una query XPath ma JQuery fornisce anche il supporto per i selettori CSS nelle versioni da 1 a 3, per cui è possibile ottenere gli stessi elementi interrogando il dom con l'espressione a.new_window_link. Giunti a questo punto non resta altro da fare che aggiungere class="new_window_link" per tutti i link che si desidera aprano il contenuto a cui puntano in una nuova finestra del browser e il gioco è fatto. Così facendo non solo abbiamo mantenuto pulito e valido il codice xhtml del nostro documento pur conservando la funzionalità desiderata, ma usando JQuery abbiamo anche reso leggibile, concisa e al tempo stesso elegante la parte di javascript necessaria per raggiungere il nostro scopo. Come? Sembra che io stia cercando di consigliarvi caldamente JQuery? Ma nooo, figuriamoci...

Il nostro sistema solare in Javascript (e JQuery)

Se siete curiosi di sapere come è fatto il nostro sistema solare, allora date un'occhiata a questo sito (purtroppo con Internet Explorer c'è un errore e non va, o quantomeno non con il mio) e constatate ancora una volta che cosa è possibile realizzare oggi come oggi con un browser web utilizzando Javascript. Questo è uno degli esempi di applicazioni realizzate utilizzando JQuery, una libreria Javascript a mio parere fantastica che ho già avuto modo di utilizzare e apprezzare. A differenza della più "bloated" Prototype, JQuery è estremamente compatta (poco più di una decina di kilobyte!) e ha una architettura totalmente a plugin attraverso la quale è possibile creare e aggiungere nuovi moduli, come per esempio effetti grafici in stile script.aculo.us. Indubbiamente una delle principali caratteristiche che rendono JQuery particolare e che giustificano pienamente l'autoassegnatasi etichetta di new wave Javascript è l'approccio alla programmazione tramite metodi concatenabili (chainable methods) che rendono possibile la scrittura di codice in questo stile:

$("p").addClass("test").show().html("foo");

Ovvero agli elementi P aggiungi la classe CSS "test" e quindi mostrali inserendo al loro interno la parola "foo". Il feeling per certi versi è lo stesso di quando si legge a voce alta del codice in Ruby. Comunque date un'occhiata al relativo sito per credere ed eventualmente prendetela in considerazione come ha già fatto Technorati in occasione del suo restyling. Al ritorno dalle vacanze sicuramente avrò modo di parlarvene, perchè il motto di questa libreria è che scrivere codice Javascript deve essere divertente!