2009-06-12 14 views
8

Sto iniziando a utilizzare Dojo; questa è (essenzialmente) la mia introduzione ad AJAX. Abbiamo un back-end Java (coppia/turbina/velocità) e stiamo utilizzando la libreria J2-RPC jabsorb per collegare Java e Javascript.Dojo essenziale

Cosa devo sapere? Qual è l'immagine più grande di Dojo e JSON, e quali sono i piccoli dettagli sgradevoli che mi sorprenderanno? Che cosa hai passato un paio di giorni a rintracciare, quando hai iniziato con Dojo, che ora dai per scontato? Grazie per qualsiasi consiglio.

+2

Se si sta appena avviando AJAX e non si ha il requisito per DOJO, è possibile passare a jQuery. Ha un'API molto semplice e una curva di apprendimento molto piccola. – jconlin

+0

Grazie, JClin, ma non ho la possibilità. –

+2

Ho trovato molti gruppi che usano Java sul backend come Dojo sul frontend. Non so perché. Dojo ha una curva più ripida, ma ha aggiunto un sacco di sintassi simile a jQuery. Adoro le cose da pubub. – Nosredna

risposta

9

La prima cosa da fare è prendere confidenza con il modello a oggetti Dojo. JavaScript non ha un sistema di classe quindi il toolkit Dojo ha creato una sorta di modello di oggetto "per convenzione" che funziona piuttosto bene ma è molto diverso da come funziona ad esempio in Java.

Il motivo per cui suggerisco di familiarizzarlo è che è possibile accedere al codice base ogni volta che si verificano problemi. La documentazione disponibile è migliorata significativamente nell'ultimo anno, ma di tanto in tanto mi trovo a dover risolvere un bug nel mio codice imparando esattamente come funziona il codice Dojo.

Un altro suggerimento è quello di utilizzare la funzione di creazione personalizzata che migliorerà in modo significativo le prestazioni una volta che l'applicazione sarà pronta.

Come consiglio generale sulla programmazione DHTML, utilizzare firebug (un plug-in per Firefox). Permette il debugging di JavaScript, l'ispezione DOM, l'editing HTML in tempo reale e molto altro ancora. Sono diventato totalmente dipendente da esso ora quando lavoro in DHTML!

Buona fortuna!

+0

Donal: esiste un "Dojo Object Model" specifico per Dojo, o è il DOM - Document Object Model - o mi manca qualcosa? Grazie. – philant

+0

È specifico per Dojo e, nelle sue stesse parole, "funzioni per simulare" un sistema di classe. Puoi leggere di più qui http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/object-orientation –

+2

Non esiste una cosa come la maiuscola " Dojo Object Model ". Dojo adotta un approccio pseudo-classico orientato agli oggetti, cioè puoi scrivere classi. Non lo mistificare. –

5

Anche io mi sono tuffato prima in Dojo, hanno una buona documentazione API allo http://api.dojotoolkit.org/. Anche Dojo Campus ha alcuni buoni esempi di plug-in.

Se mi chiedi O'Reilly's Dojo: The Definitive Guide è il miglior libro Dojo sul mercato.

Vorrei anche qualche consiglio o suggerimento dai maestri Dojo.

Acclamazioni

5

Assicurarsi che la documentazione che si legge sia la più recente possibile, poiché molto è cambiato molto rapidamente nell'architettura Dojo.

Inoltre, un ottimo modo per vedere come viene utilizzato un widget Dojo o Dijit consiste nell'osservare il codice sorgente per i test; ad esempio, lo DataGrid ha una documentazione scarsa, ma i test mostrano molti casi d'uso e configurazioni.

Sitepen è una buona risorsa per Dojo articles.

Inoltre, leggere su Deferred (e DeferredList), nonché hitch() - due caratteristiche estremamente flessibili e potenti di Dojo. SitePen ha un grande articolo sulla demistificazione di Deferred s.

Check out plugd, una raccolta di estensioni Dojo che rendono alcune cose più convenienti o aggiungono alcune funzionalità intelligenti alla lingua. È realizzato da uno degli autori core del Dojo, quindi è piuttosto affidabile. Porta anche alcune sottigliezze jQuery nel quadro.

Altre cose: guarda negli archivi dati, sono molto utili e un modo molto più semplice per gestire Ajax.DojoX ne ha anche molti belli, basti ricordare che DojoX spazia in quanto ben documentati o quanto sperimentali sono i componenti. Scopri le differenze tra dojo.byId e dijit.byId, nonché gli attributi HTML id versus jsId (di nuovo, Sitepen ha un articolo).

+0

Grazie; questo è tutto molto utile. –

+0

Una nota, i differimenti sono buoni per fare processi asincroni come le chiamate Ajax comportarsi in modo sincrono, come se dovessi aspettare alcune chiamate ajax per tornare prima di passare al passaggio successivo. – aehlke

4

Un paio di cose che mi ha catturato, quando ho cominciato a scrivere i widget dove:

[Capire che cosa dojoAttachPoint, dojoAttachEvent, containerNode e widgitsInTemplate fanno] [1]

avere una solida conoscenza di chiusure,

ottenere la testa intorno deferreds

capire ItemFileReadStore, ItemFileWriteStore e negozi in generale

È possibile guardare i negozi come un ResultSet (una specie di) e anche i dati li possono associare ai widget.

Con questi concetti principali è possibile iniziare a mettere insieme alcune applicazioni interessanti.

Generalmente quello che faccio è creare una facciata JavaScript attorno alle mie chiamate di servizio e quindi scriverò la risposta in un negozio collegando il primo callback nella facciata, che richiama i risultati in un negozio e poi lo restituisce . Ciò mi consente di non legare duramente i miei servizi ai costrutti Dojo (quindi posso supportare i dispositivi mobili, ecc.) E al contempo di risintonizzare i dati dalla facciata in un formato che i widget attenti ai dati si aspettano.

Inoltre, se si sta sviluppando un servizio Java, si desidera esaminare JAX-RS. Ho iniziato usando JSON-RPC che divenne JABS-ORB ma dopo aver lavorato con JAX-RS lo preferisco, poiché si integra bene con JPA-EJB e JAXB.

0

Leggere innanzitutto come configurare Dojo nell'applicazione. Cerca di capire la struttura di base di Dojo come se scrivessimo dijit.form.Button o dijit/form/Button significa che Button.js risiede nella cartella dijit/form. Cerca di capire richiedere, definire, dichiarare moduli di Dojo. Questo è sufficiente per avviare Dojo Toolkit.

Molto importante, concediti il ​​tuo progetto di esempio utilizzando Dojo.