2009-06-12 7 views
8

Estoy empezando a usar Dojo; esta es (esencialmente) mi introducción a AJAX. Tenemos un backend Java (torque/turbina/velocidad) y estamos usando la biblioteca JSON-RPC jabsorb para unir Java y Javascript.Essential Dojo

¿Qué necesito saber? ¿Cuál es el panorama general de Dojo y JSON, y cuáles son los pequeños detalles desagradables que me pondrán al día? ¿Qué pasó un par de días rastreando, cuando comenzó con Dojo, que ahora da por hecho? Gracias por todos los consejos.

+2

Si acaba de iniciar AJAX y no tiene el requisito de DOJO, es posible que desee cambiar a jQuery. Tiene una API muy simple y una curva de aprendizaje muy pequeña. – jconlin

+0

Gracias, jconlin, pero no tengo la opción. –

+2

He encontrado muchos grupos que usan Java en el back-end como Dojo en la interfaz. No estoy seguro por qué. Dojo tiene una curva más pronunciada, pero se agrega mucha sintaxis jQuery. Me encanta el pubsub. – Nosredna

Respuesta

9

Lo primero que debe hacer es familiarizarse con el modelo de objetos de Dojo. JavaScript no tiene un sistema de clases, por lo que Dojo Toolkit ha creado una especie de modelo de objetos "por convención" que funciona bastante bien, pero que es muy diferente de cómo funciona en Java, por ejemplo.

La razón por la que sugiero que te familiarices con ella es para que puedas profundizar en la base de códigos cada vez que comienzas a tener problemas. La documentación disponible ha mejorado significativamente durante el año pasado, pero de vez en cuando me encuentro teniendo que resolver un error en mi código al aprender exactamente cómo funciona el código de Dojo.

Otro consejo es hacer uso de la característica de compilación personalizada que mejorará significativamente el rendimiento una vez que su aplicación esté lista.

Como consejo general sobre la programación DHTML, use firebug (un complemento para Firefox). Permite la depuración de JavaScript, la inspección de DOM, la edición de HTML en tiempo real y mucho más. ¡Me he vuelto totalmente dependiente ahora cuando estoy trabajando en DHTML!

¡Buena suerte!

+0

Donal: hay un "Modelo de objeto Dojo" específico para Dojo, o es el DOM - Document Object Model - o me falta algo? Gracias. – philant

+0

Es específico de Dojo y, en sus propias palabras, "funciones para simular" un sistema de clases. Puedes leer más sobre esto aquí http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/object-orientation –

+2

No existe tal cosa como el en mayúscula " Modelo de Objetos Dojo ". Dojo adopta un enfoque pseudoclásico orientado a objetos, es decir, puede escribir clases. No lo mistifiques. –

5

Yo también me lancé de cabeza en Dojo, tienen una buena documentación de API en http://api.dojotoolkit.org/. Incluso Dojo Campus tiene algunos buenos ejemplos de los complementos.

Si me preguntas O'Reilly's Dojo: The Definitive Guide es el mejor libro de Dojo en el mercado.

También me gustaría obtener consejos y sugerencias de los maestros de Dojo.

Saludos

5

Asegúrese de que la documentación que lee pertenece al lanzamiento más reciente posible, ya que muchas cosas han cambiado muy rápidamente en la arquitectura Dojo.

También es una excelente manera de ver cómo se usa algún widget Dojo o Dijit para ver el código fuente de las pruebas; por ejemplo, el DataGrid tiene poca documentación, pero las pruebas muestran una gran cantidad de casos de uso y configuraciones.

Sitepen es un buen recurso para Dojo articles.

Además, lea en Deferred (y DeferredList), así como hitch() - dos características extremadamente flexibles y potentes de Dojo. SitePen tiene un excelente artículo sobre la desmitificación de Deferred s.

Echa un vistazo a plugd, una colección de extensiones de Dojo que hacen que algunas cosas sean más convenientes o agregan algunas funcionalidades inteligentes al lenguaje. Está hecho por uno de los autores principales de Dojo, por lo que es bastante confiable. Incluso trae algunas sutilezas jQuery en el marco.

Algunas cosas más: busque en las tiendas de datos, son muy útiles y una forma mucho más limpia de manejar Ajax.DojoX tiene muchos buenos también, solo recuerda que DojoX varía en qué tan bien documentado o experimental son los componentes. Conozca las diferencias entre dojo.byId y dijit.byId, así como los atributos HTML id frente a jsId (una vez más, Sitepen tiene un artículo).

+0

Gracias; Todo esto es muy útil. –

+0

Una nota: los aplazamientos son buenos para hacer que los procesos asíncronos, como las llamadas Ajax, se comporten de forma sincronizada, como si tuviera que esperar a que regresen algunas llamadas ajax antes de pasar al siguiente paso. – aehlke

4

Un par de cosas que me sorprendió cuando empecé a escribir los widgets donde:

[Entender lo dojoAttachPoint, dojoAttachEvent, containerNode y widgitsInTemplate hacen] [1]

tener una firme comprensión de los cierres,

conseguir su cabeza alrededor deferreds

entienden ItemFileReadStore, ItemFileWriteStore y tiendas en general

Puede ver las tiendas como un ResultSet (más o menos) también puede enlazarlos a widgets.

Con estos conceptos principales puede comenzar a armar algunas aplicaciones atractivas.

En general, lo que hago es construir una fachada JavaScript alrededor de mis llamadas de servicio y luego restriego la respuesta en una tienda adjuntando la primera devolución de llamada en la fachada, esa devolución devuelve los resultados a una tienda y luego los devuelve . Esto me permite no vincular estrictamente mis servicios a las construcciones de Dojo (para que pueda admitir dispositivos móviles, etc.) a la vez que reajuste los datos de la fachada en un formato que los widgets con conocimiento de datos esperan.

Además, si está realizando el desarrollo de servicios Java, quiero consultar JAX-RS. Comencé usando JSON-RPC que se convirtió en JABS-ORB, pero después de trabajar con JAX-RS lo prefiero, ya que se integra bien con JPA-EJB y JAXB.

0

Primero lea cómo configurar Dojo en su aplicación. Trate de entender la estructura básica de Dojo como si estuviéramos escribiendo dijit.form.Button o dijit/form/Button significa que Button.js reside en la carpeta dijit/form. Intenta comprender, requiere, define, declara los módulos de Dojo. Esto es suficiente para iniciar Dojo Toolkit.

Hecho muy importante, disfrute de su propio proyecto de muestra con Dojo.