10 razones por las que tus proyectos deberían usar el kit de herramientas Dojo

La utilidad de JavaScript más poderosa y subutilizada es la misma: el kit de herramientas Dojo. Si bien casi todos los marcos de JavaScript o el kit de herramientas se comprometen a hacer todo lo que necesita, el kit de herramientas de Dojo hace que el argumento más convincente sea cierto. Esta publicación cubrirá muchas de las características más poderosas de Dojo Toolkit, y al hacerlo, explicará por qué debería usar Dojo Toolkit para su próximo proyecto..


1. Modularidad y carga de AMD

No comience su próximo proyecto sin revisar todas las características que Dojo tiene para ofrecer.!

A medida que nuestro código de JavaScript del lado del cliente crece en tamaño, y lo hará, La modularidad será clave para mantener nuestras aplicaciones rápidas, fáciles de mantener y de alto rendimiento. Los días de usar un solo archivo de biblioteca sin carga asíncrona han terminado. Durante años, el código de Dojo Toolkit ha sido el brillante ejemplo de modularidad, utilizando dojo.require (antes de las compilaciones) para extraer dinámicamente solo los recursos requeridos por la página. El método predeterminado para cargar recursos de JavaScript era sincrónico, aunque había una opción de dominio cruzado que era asíncrona.

Desde entonces, Dojo se ha movido a un cargador asíncrono, escrito por Rawld Gill, que carga magistralmente todos los recursos de forma asíncrona, lo que mejora enormemente la velocidad. Para cargar algunos recursos de JavaScript, puede codificar algo como lo siguiente:

// La función require indica al cargador que intente cargar recursos en la primera matriz // Si los recursos ya se han cargado, sus objetos en caché se usarán requieren (// Una matriz de módulos para cargar ["dojo / on", "dojo / touch", "dijit / form / Button", "dojo / domReady!"], // Una función de devolución de llamada con objetos de módulo cargados como argumentos // Debe agregarse en el mismo orden en que se cargaron la función (activado, toque, botón) // ¡Ahora haga algo con los componentes que hemos cargado!);

Para declarar un módulo, simplemente codifique el siguiente patrón:

// Usar 'define' en lugar de 'require' porque estamos definiendo un módulo define (// De nuevo, una matriz de dependencias de módulos para el módulo que nos gustaría construir ["dojo / aspect", "dojo / _base / declare "," dijit / layout / BorderContainer "] // De nuevo, una función de devolución de llamada que debe devolver una función de objeto (aspecto, declarar, BorderContainer) // Devolver un módulo (objeto, función o clase declarada Dojo) devolver declarar ( "mynamespace.layout.CustomBorderContainer", [BorderContainer], // Atributos y métodos personalizados aquí);)

Esta simple definir El método, utilizado por casi todos los cargadores AMD, es increíblemente simple y estructurado. muy parecido a un bloque requerido, por lo que es muy fácil de usar. Los elementos enumerados en la matriz de dependencias se cargan antes de que se ejecute la devolución de llamada. La devolución de llamada (normalmente) devuelve una función u objeto que representa el módulo. Un patrón fácil que se carga rápidamente, mantiene la modularidad y permite a los desarrolladores cargar solo lo que necesitan!

El cargador rico en características de Dojo también proporciona complementos, como domReady, para escuchar la preparación de DOM, y tiene detección de características con hasJS. El cargador también es lo suficientemente inteligente como para cargar módulos de forma condicional según el entorno o la configuración:

// Este código se incluye en el dojo / Módulo diferido define (["./has", "./_base/lang", "./errors/CancelError", "./promise/Promise", "./has! config-deferredInstrumentation? ./ promise / instrumentation "], function (has, lang, CancelError, Promise, instrumentation) //…);

Dojo no solo es modular como puede ser, sino que también proporciona un cargador integrado.!

Módulo Dojo y Recursos AMD

  • El cargador de dojo
  • Los módulos asíncronos llegan a Dojo 1.6
  • Definiendo modulos

2. Clases y extensibilidad con dojo / declarar

Mientras que JavaScript no proporciona un verdadero sistema de clases, el Dojo Toolkit proporciona un patrón de herencia similar a una clase usando dojo / declarar. Declare se utiliza en todo el marco para que los desarrolladores puedan:

  • reducir o incluso eliminar el código repetido
  • use "mixins" para compartir funcionalidad entre muchas otras clases
  • Extiende fácilmente las clases existentes para una mayor personalización
  • Compartir módulos de código entre diferentes proyectos.
  • cree de forma segura clases "fijas" cuando hay un error en una clase Dojo existente

El sistema de clases de Dojo utiliza la herencia prototípica, lo que permite que se hereden los prototipos y, por lo tanto, las clases de niños pueden ser tan poderosas como los padres debido al prototipo compartido. Utilizando dojo / declarar es increíblemente fácil:

// Por supuesto, necesitamos usar define para crear el módulo define ([// Cargar dojo / declarar dependencia "dojo / declarar", // También cargar dependencias de la clase que intentamos crear "dijit / form / Button", " dojo / on "," mynamespace / _MyButtonMixin "// Mixins comience con" _ "], función (declarar, Botón, encendido, _MyButtonMixin) // Devolver un producto declare (), es decir, un retorno de clase declarar (// Primer argumento es el nombre del widget, si está creando uno // Debe estar en formato de sintaxis de objeto "mynamespace.CustomButton", // El segundo argumento es un objeto único cuyo prototipo se usará como base para la nueva clase // Una matriz también se puede usar, para herencia múltiple [Button, _MyButtonMixin], // Por último, un objeto que contiene nuevas propiedades y métodos, o // valores diferentes para propiedades y métodos heredados myCustomProperty: true, value: "Hello!", myCustomMethod : function () // Do stuff here!, methodThatOverridesParent: function (val) this.myCustomMethod (val); // Llamando a "this.inherited (argumentos)" ejecuta el método del padre // del mismo, pasando los mismos parámetros devuelve this.inherited (argumentos); ); );

Si bien la clase anterior no se propone realizar una tarea real (es simplemente un ejemplo), ilustra la reutilización del código, a través de la cadena de herencia y los mixins; también muestra cómo una clase secundaria puede llamar al mismo método de una clase primaria para reducir el código repetido.

Otra ventaja de usar el sistema de clases de Dojo es que todos las propiedades y los métodos son personalizables, no hay un objeto "opciones" que limite la cantidad de propiedades personalizables en las clases Dojo. Todo se puede cambiar y extender fácilmente durante el proceso de creación de la clase..

  • Definitivo dojo / _base / declare
  • JavaScript con clase con dojo / _base / declare
  • Escribir tu propio widget

3. Aspectos y "eventos de función a función"

Los aspectos son una de las piezas más poderosas y esenciales del desarrollo avanzado de aplicaciones web ... y el kit de herramientas Dojo las ha proporcionado durante años. En lugar de activar la funcionalidad después de un evento de usuario tradicional, como hacer clic, ratón sobre, o tecla Arriba, Los aspectos le permiten activar la función B antes o después de que se ejecute la función A. Esencialmente, puedes conectar funciones a funciones - brillante!

La activación de una función después de otra se ve así:

// after (target, methodName, advisingFunction, receiveArguments); aspect.after (myObject, "someMethod", function (arg1, arg2) // Ejecutar funcionalidad después de que la función myObject.doSomething se active, true);

Asegurando que la función B se dispare. antes de la función A es igual de fácil!

aspect.before (myObject, "someMethod", function (arg1, arg2) // Esta función se dispara * antes * de que el myObject.someMethod original hace);

Los aspectos son extremadamente útiles al crear interfaces de usuario avanzadas con Dijit. La escucha de eventos en un widget o clase puede desencadenar un cambio en otros widgets, permitiendo a los desarrolladores crear un widget grande y de control desde muchos pequeños:

var self = esto; aspect.after (this.submitButton, "onClick", function () // Se hizo clic en el botón de envío, activa más la funcionalidad self.showAjaxSpinner (););

El recurso de aspecto fue encontrado previamente con dojo.connect.

Recursos de Aspecto

  • dojo / aspecto Documentación y ejemplos.
  • Utilizando dojo / aspecto

4. Aplazados y Transportes Unificados AJAX.

No puedo aprobar este marco de interfaz de usuario lo suficiente. Cuando digo que no tiene paralelo, no puedo enfatizar lo mucho que lo digo. No hay nada cerca.

Diferidos son representaciones basadas en objetos de operaciones asíncronas, lo que permite que los estados de operación asíncrona se pasen fácilmente de un lugar a otro. Una de las adiciones más recientes e importantes de jQuery fue Deferreds. Casualmente, el mantra del equipo de Dojo es "Dojo lo hizo". El kit de herramientas Dojo ha presentado diferidos durante varios años, usándolos para operaciones AJAX simples y avanzadas, animaciones y más.

Además de estar a la vanguardia de los objetos diferidos, Dojo también fue pionero en varios métodos de manejo de IO fuera del estándar XMLHTTPRequest, incluido un nombre de la ventana envoltura, dojo / io / iframe para subir archivos AJAX, y más. Entonces, ¿cuándo se usan los objetos diferidos dentro de Dojo? ¡Cada vez que tiene lugar una acción asíncrona / AJAX! Los diferidos se devuelven de las solicitudes XHR, dojo / io Peticiones, animaciones y más.!

// Dispara una solicitud AJAX, obteniendo el Aplazado a cambio var def = xhr.get (url: "/ getSomePage"); // Realice muchos o 'callbacks def.then (function (result) result.prop =' Something more '; devuelva el resultado;). Then (function (resultObjWithProp) //…). Then (function ()  //…);

Y luego que hace dojo / io / iframeLa API parece?

require (["dojo / io / iframe"], function (ioIframe) // Envía la solicitud ioIframe.send (form: "myform", url: "handler.php", handleAs: "json" // Handle resultado exitoso). luego (función (datos) // Hacer algo // Manejar el caso de error, función (error) // Manejar error). luego (función () // ¡Más devoluciones de llamada!) );

La belleza de Dojo utilizando los aplazados para cada operación AJAX es que, sin importar el método, siempre sabe que recibirá un aplazado a cambio, lo que acelerará el desarrollo y unificará la API. Dojo 1.8 verá la introducción de dojo / solicitud, Una nueva consolidación de los métodos AJAX. Aquí hay algunos ejemplos de cómo dojo / solicitud API será utilizada en el futuro:

// Las solicitudes AJAX más básicas requieren (["dojo / request"], function (request) request ("request.html"). Luego (function (response) // haga algo con los resultados, function (err ) // manejar una condición de error, función (evt) // manejar un evento de progreso););

Una API unificada hace que el desarrollo sea más rápido y el código más compacto; el nuevo dojo / solicitud El módulo de Bryan Forbes promete hacer que Dojo sea aún más amigable para los desarrolladores!

Recursos diferidos y AJAX

  • dojo / solicitud
  • Ajax con dojo
  • Obteniendo Jiggy con JSONP
  • Dojo diferidos y promesas

5. Dijit UI Framework

Sin lugar a dudas, la mayor ventaja de Dojo Toolkit sobre otros marcos de JavaScript es su marco de interfaz de usuario Dijit. Este conjunto incomparable de diseño, forma y otras herramientas cuenta con:

  • Localización completa, "fuera de la caja"
  • soporte completo de accesibilidad
  • widgets de diseño avanzados para aliviar los problemas del 100% de los elementos de altura, el esfuerzo en la creación de divisores personalizados y la modificación del diseño, etc..
  • Formar widgets con mayor usabilidad y validación incorporada.
  • Muchos temas, el más nuevo de los cuales se llama "claro".
  • LESS archivos para temas personalizados
  • Código muy modular, que permite la personalización máxima y la extensión de los widgets existentes.

Dijit también permite la creación de widgets declarativos y programáticos; La creación declarativa de widgets se ve así:

... por lo que la creación de un widget de JavaScript tradicional se ve así:

require (["dijit / form / Button"], function (Button) // Crear el botón mediante programación var button = new Button (label: 'Click Me!', "myNodeId"););

Hay varias docenas de widgets Dijit provistos dentro del espacio de nombres de dijit, y algunas docenas más están disponibles dentro del espacio de nombres dojox. El marco de la interfaz de usuario de Dijit no son solo algunos widgets útiles de IU, como algo así como jQueryUI; Dijit es un marco de IU preparado para la empresa y probado por la empresa..

Dijit UI Resources

  • El famoso cementerio de Dijit
  • Creación de widgets basados ​​en plantillas
  • Disposición con Dijit
  • Dijit temas, botones y cuadros de texto
  • Tutoriales Dijit

En mis dos años en SitePen, trabajé casi exclusivamente con Dijit y las complejidades de crear widgets flexibles, localizables y eficientes. No puedo aprobar este marco de interfaz de usuario lo suficiente. Cuando digo que no tiene paralelo, no puedo enfatizar lo mucho que lo digo. No hay nada cerca.


6. Dojo Mobile

Al igual que con casi todos los problemas en la web, Dojo tiene una solución; en este caso, la respuesta de Dojo a los dispositivos móviles está dentro del espacio de nombres dojox / mobile. La excelente solución móvil de Dojo proporciona:

  • una utilidad de detección de dispositivos
  • Temas para iOS, Android, Blackberry y tema "común"
  • widgets de forma móvil
  • paneles y widgets de diseño
  • Soporte para escritorio, permitiendo una depuración más fácil.

Los widgets móviles se pueden crear de forma declarativa o programática, al igual que los widgets Dijit. Las vistas móviles se pueden representar de forma perezosa y el intercambio entre vistas es ininterrumpido. La anatomía HTML de una página dojox / móvil es bastante simple:

      Nombre de su aplicación       

Mediante el uso dojox / mobile / deviceTheme, Podemos detectar el dispositivo del usuario y aplicar el tema apropiado:

// Aplicará la base del tema del dispositivo a la detección de UA requerida (["dojox / mobile / deviceTheme"]);

Con el tema del dispositivo en su lugar, el siguiente paso es requerir los widgets utilizados por nuestra aplicación móvil específica, así como cualquier otra clase personalizada que deseamos:

// Arrastre algunos widgets (("dojox / mobile / ScrollableView", "dojox / mobile / Heading", "dojox / mobile / RoundRectList", "dojox / mobile / TabBar", "dojox / parser"));

Una vez que se requieren los recursos de JavaScript, es hora de agregar de forma declarativa una serie de vistas y widgets que conforman la aplicación:

   

Tweets

  • Tweet artículo aquí

Menciones

  • Menciona el elemento de tweet aquí.

Ajustes

Show

  • Elemento de ajuste aquí

Una ventaja increíble de usar dojox / mobile es que la API para la creación de widgets es la misma que todas las demás clases de Dijit, por lo que la velocidad en el desarrollo se incrementa para aquellos que han usado Dijit anteriormente; para aquellos que son nuevos en Dojo, la API móvil es increíblemente fácil.

Recursos dojox / mobile

  • Primeros pasos con dojox / mobile
  • dojox / pruebas móviles

7. GFX y gráficos

Sin lugar a dudas, la mayor ventaja de Dojo Toolkit sobre otros marcos de JavaScript es su marco de interfaz de usuario Dijit.

Las animaciones CSS son una gran herramienta de visualización, al igual que las imágenes animadas, pero ninguna es tan flexible y poderosa como la creación y manipulación de gráficos vectoriales. La herramienta de generación de gráficos vectoriales del lado del cliente más popular siempre ha sido Raphael JS, pero la biblioteca GFX de Dojo es, sin duda, más potente. GFX se puede configurar para representar gráficos vectoriales en SVG, VML, Silverlight, Canvas y WebGL. GFX proporciona un envoltorio útil para crear cada forma de gráfico vectorial (elipse, línea, ruta, etc.) para acelerar el desarrollo, y permite a los desarrolladores:

  • Sesgar, rotar y redimensionar gráficos
  • Animar relleno, stroker y otras propiedades gráficas
  • Añadir degradados lineales y circulares a una forma
  • Escuchar y responder a los eventos del ratón.
  • Agrupa formas para facilitar la gestión y animación.

Crear un conjunto simple de formas sobre un lienzo podría ser:

require (["dojox / gfx", "dojo / domReady"], function (gfx) gfx.renderer = "canvas"; // Cree una superficie GFX // Argumentos: nodo, ancho, altura surface = gfx.createSurface ( "surfaceElement", 400, 400); // Cree un círculo con un color "azul" surface surface.createCircle (cx: 50, cy: 50, rx: 50, r: 25). setFill ("blue") ; // Crate un círculo con un hexágono determinado surface.createCircle (cx: 300, cy: 300, rx: 50, r: 25). SetFill ("# f00"); // Cree un círculo con una línea gradient surface.createRect (x: 180, y: 40, ancho: 200, altura: 100). setFill (type: "linear", x1: 0, y1: 0, // x: 0 => 0, gradiente consistente horizontalmente x2: 0, // y: 0 => 420, cambiando gradiente verticalmente y2: 420, colores: [offset: 0, color: "# 003b80", offset: 0.5, color: "# 0072e5" , offset: 1, color: "# 4ea1fc"]); // Cree un círculo con una superficie de degradado radial.createEllipse (cx: 120, cy: 260, rx: 100, ry: 100). setFill (type: "radial", cx: 150, cy: 200, colors: [offset: 0, color: "# 4ea1fc", offset: 0.5, color: "# 0072e5", offset: 1, color: "# 003b80"]); );

Una API que se ha escrito sobre GFX es la potente biblioteca de gráficos / gráficos dojox de Dojo. La visualización de datos a través de gráficos es popular y por una buena razón; la simple lectura de números no proporciona, bueno, la imagen completa. La biblioteca dojox / charting permite:

  • parcelas multiples
  • elementos gráficos animados
  • complementos, incluidos MoveSlice (anima sectores de gráficos circulares), Información sobre herramientas, Ampliar y Resaltar
  • Cuadros de auto actualización, impulsados ​​por almacenes de datos Dojo.

Se puede crear un gráfico circular básico utilizando el siguiente código de JavaScript de Dojo:

  

Mientras que el código anterior crea un gráfico circular simple, la biblioteca dojox / charting de Dojo es capaz de mucho, mucho más.

Recursos dojox / gfx y dojox / charting

  • Gráficos vectoriales con Dojo's GFX
  • Logotipo interactivo de AJAX en Londres
  • Dojo Charting
  • Gráficos avanzados con Dojo
  • Demostraciones Dojo GFX

8. dgrid de SitePen

SitePen, una consultora de JavaScript fundada por el fundador de Dojo, Dylan Schiemann, buscó reemplazar los widgets gruesos e hinchados de DojoX por un widget de cuadrícula muy rápido, extensible y editable; Han logrado esa tarea con dgrid. características dgrid:

  • Numerosos temas y es fácilmente temática.
  • compatibilidad móvil completa
  • filas clasificables
  • Utilidades de cuadrícula onDemand, que permiten la carga lenta de datos de grilla
  • capacidades de cuadrícula de árbol
  • Contenidos de grillas editables utilizando widgets Dijit.
  • extensiones que incluyen cambio de tamaño de columna, arrastrar y soltar, paginación y más

SitePen ha realizado un excelente trabajo al documentar cada componente de dgrid, por lo que comenzar a crear sus propias grillas repletas de características será increíblemente fácil!

Recursos de Dgrid

  • Página de inicio de dgrid
  • dgrid iTunes Demo
  • Blog de SitePen
  • dgrid GitHub repo
  • Documentación dgrid

9. Marco de prueba DOH

Dojo no solo es modular como puede ser, sino que también proporciona un cargador integrado.!

Las pruebas son tan importantes, si no más importantes, en el lado del cliente que en el lado del servidor. Con la variedad de navegadores disponibles y el número variable de funciones que se ofrecen en cada versión del navegador, las pruebas de interactividad del lado del cliente son una necesidad. El propio marco de prueba de Dojo Toolkit, apodado DOH (Dojo Objective Harness), se proporciona con cada descarga de la versión de Dojo. La escritura de prueba es increíblemente fácil, y las pruebas se pueden proporcionar en varios formatos diferentes:

// Declara el nombre del módulo de prueba para hacer feliz al cargador de módulos de dojo. dojo.provide ("my.test.module"); // Registre un conjunto de pruebas doh.register ("MyTests", [// Las pruebas pueden ser simplemente una función simple ... function assertTrueTest () doh.assertTrue (true); doh.assertTrue (1); doh.assertTrue (! False );, // ... o un objeto con las propiedades name, setUp, tearDown y runTest name: "thingerTest", setUp: function () this.thingerToTest = new Thinger (); this.thingerToTest.doStuffToInit (); , runTest: function () doh.assertEqual ("blah", this.thingerToTest.blahProp); doh.assertFalse (this.thingerToTest.falseProp); // ..., tearDown: function () , // …]);

La prueba anterior es un ejemplo muy básico de una prueba Dojo, pero ¿qué pasa con una situación más difícil, es decir, acciones asíncronas? La acción asíncrona más obvia es una solicitud AJAX, pero las animaciones y otras acciones con poder Diferido crearán tal situación. DOH proporciona un método increíblemente fácil para probar acciones asíncronas usando doh. Objetos diferidos:

nombre: "Prueba de interacción diferida", tiempo de espera: 5000, runTest: function () var aplazado = nuevo doh.Deferred (); myWidget.doAjaxAction (). then (deferred.getTestCallback (function () doh.assertTrue (true);); return diferido;

En la prueba de muestra anterior, getTestCallback la función no se activa hasta doAjaxAction Está completo, y devuelve el éxito o fracaso de la prueba..

Las pruebas subsiguientes no avanzan hasta que el doh.Deferred resuelve o se agota el tiempo, por lo tanto, no hay problemas de tiempo de prueba o de superposición. DOH proporciona un conjunto de pruebas increíblemente confiable que otros marcos del lado del cliente simplemente no proporcionan. DOH también proporciona un robot DOH de Java que simula acciones reales del mouse y el teclado para realizar pruebas más precisas y realistas. Si escuchas que Homer Simpson grita "¡Woohoo!", Todas tus pruebas pasan; Si escuchas el temido "¡DOH!", tus pruebas fallaron y necesitas refactorizar tu código.

Recursos DOH

  • Tutorial DOH
  • Pruebas nocturnas

10. Proceso de construcción de Dojo

Cuando una aplicación web está lista para el lanzamiento, es increíblemente importante, en aras de la carga optimizada y la capacidad de almacenamiento en caché, para crear un archivo o archivos de JavaScript minificados y en capas. Esto reduce las solicitudes y mantiene la carga del sitio lo más ligera posible. Mejor aún es que el sistema de compilación de Dojo analiza. definir Llama y los usa para detectar automáticamente las dependencias para las compilaciones. Para usar el proceso de compilación de Dojo, crea lo que se conoce como un perfil de compilación. Los perfiles de compilación pueden contener numerosas capas y pueden ser bastante complejos, pero el siguiente perfil es un ejemplo simple:

var profile = releaseDir: "/ path / to / releaseDir", basePath: "…", action: "release", cssOptimize: "comments", mini: true, optimice: "closing", layerOptimize: "closing", stripConsole : "all", selectorEngine: "acme", layers: "dojo / dojo": include: ["dojo / dojo", "app / main"], customBase: true, boot: true, resourceTags:  amd: function (filename, mid) return /\.js$/.test(filename); ;

El proceso de construcción de Dojo es extremadamente personalizable, lo que permite al desarrollador personalizar:

  • el minificador (Dojo's ShrinkSafe o Google Closure)
  • el nivel de minificación que se aplicará a los archivos CSS involucrados, si se crean widgets
  • donde se genera la construcción para
  • El motor selector que se utilizará dentro de la construcción.
  • … y mucho más!

Los perfiles de compilación se ejecutan a través de la línea de comando (recientemente reescrita para NodeJS), y la línea de comando ofrece una variedad de opciones para anular o complementar la configuración dentro del perfil de construcción. Algunos ejemplos de ejecución del perfil de compilación incluyen:

 ./build.sh --profile /path/to/app/app.profile.js --require /path/to/app/boot.js

El proceso de compilación Dojo proporciona una increíble cantidad de control sobre los archivos de compilación generados y completa el proceso de optimización de la aplicación web. Con el CSS y JS minimizados y en capas a los niveles apropiados, su aplicación potenciada por Dojo está lista para el showtime!

  • Creación de construcciones
  • El sistema de construcción Dojo
  • Documentación de construcción heredada

11. ¡BONIFICACIÓN! "El cofre del tesoro de Dojo": Más DojoX

Dos bibliotecas DojoX muy prominentes ya se han mencionado anteriormente, DojoX Mobile y GFX, pero esas son solo dos de las docenas de tesoros ocultos que proporciona Dojo. Esos tesoros incluyen:

  • Diseño extra y widgets de formulario para Dijit
  • Rutinas avanzadas y localizadas de validación de formularios.
  • WebSocket y envoltorios de sondeo largo
  • widgets de imagen, incluidos lightbox, presentación de diapositivas y utilidades de galería
  • ayudantes avanzados de IO
  • bibliotecas avanzadas de arrastrar y soltar
  • Extensiones Nodelist

Estas son solo algunas de las docenas de gemas dentro de DojoX. Navega por la salida de Dojo para descubrir más de las increíbles herramientas de flecos disponibles!

El Dojo Toolkit es un conjunto de herramientas de JavaScript que abarca todo lo que proporciona:

  • Lenguaje JavaScript básico y utilidades auxiliares
  • Lenguaje Javascript avanzado y utilidades AJAX
  • Carga asíncrona bajo demanda
  • Un completo marco de interfaz de usuario
  • Un conjunto de pruebas completo
  • Construir herramientas
  • … y más!

¡No comience su próximo proyecto sin revisar todas las características que Dojo tiene para ofrecer! Incluso si no necesita algunas de las funciones avanzadas enumeradas anteriormente todavía, El uso de las funciones más básicas de Dojo Toolkit (consulta de elementos, animaciones, solicitudes de XHR) le ayudará a crear una aplicación web rápida y rica en funciones sin límite.!