2009-08-27 5 views
6

He estado leyendo el libro de O'Reilly "Dojo - The Definitive Guid", pero algunas cosas aún no son definitivas para mí.Dojo vs Dijit - archivos para incluir o referenciar?

Se habla de "arranque" y conseguir el dojo.css del AOL CDN".

Cuando estoy probando en mi máquina, debería utilizar la CDN? O debería esperar y usar que sólo cuando despliego

en segundo lugar, el libro habla de CDN para ir de discotecas, pero no para dijit

estoy desarrollando en Google App Engine (GAE) -. por lo que tener los archivos dojo 2000 +/dijit en mi Javascript directorio es un poco molesto, porque ralentiza mi carga a GAE cada vez.

Firebug me está dando este error: GET http://localhost:8080/dijit/nls/dijit-all_en-us.js 404 no es exactamente GET http://localhost:8080/dijit/_editor/plugins/FontChoice.js 404 no es exactamente

he descargado la muestra desde aquí: http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html?theme=soria y me gustaría "simplemente" conseguir que se ejecute en mi máquina bajo el motor local de la aplicación google (que es el localhost: 8080 que se ve en las URLs arriba).

Veo esta afirmación que probablemente está causando el segundo 404 anterior: dojo.require ("dijit._editor.plugins.FontChoice");

Otro error: No se puede acceder optimizado cierre precarga ("en-us") dijit-all.js (línea 479) anónima ("dijit.nls.dijit todo", [ "ROOT", " ar "," ca ", 40 más ... 0 = ROOT 1 = ar 2 = ca 3 = cs 4 = da 5 = de 6 = de-de 7 = el 8 = en 9 = en-gb]) dijit- all.js (línea 489) dijit-all.js() dojo.i18n._searchLocalePath (configuración regional, la verdadera, la función (loc) {\ n

continuar por ahora, voy a tratar de copiar toda la biblioteca dijit, pero ¿hay una solución corta para eso?

Mi secuencia de comandos actual incluye este aspecto:

<script type="text/javascript" src="/javascript/dijit.js"></script> 

<script type="text/javascript" src="/javascript/dijit-all.js" charset="utf-8"></script> 

que tenga el archivo dijit.js copiando y el cambio de nombre a dijit.js.uncompressed.js dijit.js.

Respuesta

8

Usted tiene algunas opciones: en realidad

  1. podría utilizar el CDN para todo (aunque el uso de la fuente completo de manera local no le dará mejores mensajes de error). Google has them as well. Dijit está aquí: http://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dijit/dijit.js FYI. Esto tiene muchas ventajas en mi opinión. El almacenamiento en caché del usuario de JS es el principal.

  2. Cree un archivo en capas. Creo que el libro O'Reilly tiene una sección al respecto, pero el PragProg book es mejor en este sentido IMO. También está este doc on dojocampus.org sobre la construcción. Esto recortará los archivos que necesita cargar en GAE y acelerará la carga de la aplicación. Esto es realmente lo que hago para reducir las solicitudes HTTP.

  3. Sigue haciendo lo que estás haciendo. :)

En cuanto a los errores que está viendo sobre 404 para en-us, los archivos son esencialmente inofensivos. Here's a better description.

También podría estar recargando archivos dijit usando dijit.uncompressed.js y dijit-all.js y causando problemas en el proceso ... pero no estoy seguro de este.

0

Para resolver su primera pregunta, utilice la versión de origen completa localmente para el desarrollo, para que pueda obtener información de depuración más clara que apunta a una línea legible en el origen, en lugar de la línea única a la que se reduce. Use el CDN para producción.

2

Solo quiero aclarar que al usar CDN, todo lo que necesita incluir es la secuencia de comandos principal de Dojo. El resto se activará automáticamente cuando dojo.require().

Si por algún motivo (técnico) no desea utilizar el cargador de dominio X (los CDN utilizan este tipo de cargador), puede hacer una compilación personalizada (bien descrita en muchos lugares). Después de la construcción, copie solo los archivos relevantes en su servidor. No es necesario copiar todas las más de 2000 pruebas, demostraciones, proyectos DojoX no utilizados, Dijits, etc.

Durante la compilación creará un único archivo modificado (o algunas capas), que incluirá todos los códigos JavaScript de Dojo que utilice. Si utiliza widgets de Dojo, sus plantillas ya estarán en línea, por lo que no incurrirá en hits para ellos. Como parte de la compilación, los archivos CSS se combinan y se minimizan también. Así que, literalmente, en la mayoría de los casos tendrá solo dos archivos: una capa de Dojo, que incluye todo + su código personalizado y un archivo CSS. En casos más complejos, puede tener más archivos, pero generalmente estamos hablando de un puñado.

¿Cómo asegurarse de que todo esté en la compilación? Encienda su analizador de red favorito (Live HTTP Headers, Firebug, Fiddler2 o Charles Proxy le iría bien) y vea si accede a algún archivo fuera de su compilación. Si lo hace — inclúyalos en la compilación, o intente averiguar por qué se solicitan, y elimine estas solicitudes (algunas llamadas relacionadas con la localización están bien).

Personalmente, comenzaría con la opción CDN — que funciona bien, sin complicaciones, alojado por alguien más con tubos gordos.

Cuestiones relacionadas