Dojo (estilizado como Dojo Toolkit o dōjō toolkit antes de la versión 2.0) es una biblioteca JavaScript modular de código abierto (o, más específicamente, un conjunto de herramientas o un marco de interfaz de usuario) diseñada para facilitar el desarrollo rápido de aplicaciones y sitios web multiplataforma basados en JavaScript / Ajax . Fue creada por Alex Russell, Dylan Schiemann, David Schontzler y otros en 2004 [ 4 ] y tiene doble licencia : la licencia BSD modificada o la Licencia Académica Gratuita (≥ 2.1) [ 6 ] .
La Fundación Dojo fue una organización sin fines de lucro creada con el objetivo de promover la adopción del conjunto de herramientas. En 2016, la fundación se fusionó con la Fundación jQuery para convertirse en la Fundación JS [ 7 ] [ 8 ] [ 9 ] que en 2019 posteriormente se fusionó con la Fundación Node.js para formar la Fundación OpenJS [ 10 ]
Descripción general
Dojo es un framework de JavaScript diseñado para satisfacer las diversas necesidades del desarrollo web del lado del cliente a gran escala. Por ejemplo, Dojo abstrae las diferencias entre los distintos navegadores para proporcionar API que funcionan en todos ellos (incluso puede ejecutarse en el servidor con Node.js ); establece un marco para definir módulos de código y gestionar sus interdependencias; proporciona herramientas de compilación para optimizar JavaScript y CSS , generar documentación y realizar pruebas unitarias; admite la internacionalización, la localización y la accesibilidad ; y proporciona un amplio conjunto de clases de utilidad y widgets de interfaz de usuario de uso común.
Dojo es completamente de código abierto . El conjunto de herramientas incluye alrededor de tres mil módulos JavaScript, además de imágenes y otros recursos.
El Dojo Toolkit está organizado en varias partes:
- Dojo contiene los módulos principales y la mayoría de los módulos no visuales.
- dijit es una biblioteca de módulos de interfaz de usuario para widgets y diseño.
- dojox contiene varios módulos que aún no se consideran lo suficientemente estables como para incluirlos en dojo o dijit .
- util incluye herramientas de compilación como optimización, documentación, comprobación de estilo y pruebas.
Características
Widgets
Los widgets de Dojo son componentes —que comprenden código JavaScript , marcado HTML y declaraciones de estilo CSS— que proporcionan funciones interactivas para múltiples navegadores (que no deben confundirse con compatibilidad entre navegadores ):
- Menús , pestañas y sugerencias emergentes
- Tablas ordenables
- Gráficos dinámicos
- Dibujos vectoriales 2D
- Efectos animados : fundidos, transiciones y deslizamientos ; herramientas para efectos de animación personalizados.
comunicación asíncrona
Una característica importante de las aplicaciones Ajax es la comunicación asíncrona del navegador con el servidor: se intercambia información y se actualiza la presentación de la página sin necesidad de recargarla por completo. Tradicionalmente, esto se realiza con el objeto JavaScript XMLHttpRequest . Dojo proporciona una capa de abstracción ( dojo.xhr) sobre las implementaciones de XMLHttpRequest de varios navegadores web, y dojo.iotambién admite otros protocolos de transporte (como IFrames ocultos) y diversos formatos de datos. Mediante este enfoque, es fácil enviar al servidor los datos que un usuario introduce en un formulario de forma automática; el servidor puede entonces responder con código JavaScript que actualiza la presentación de la página. [ 11 ]
Sistema de embalaje
Dojo proporciona un sistema de empaquetado para facilitar el desarrollo modular de funcionalidades en paquetes y subpaquetes individuales. El script base de arranque de Dojo inicializa un conjunto de espacios de nombres de paquetes jerárquicos —«io», «event», etc.— bajo un espacio de nombres raíz «dojo» . Tras la inicialización del espacio de nombres raíz, cualquier paquete de Dojo puede cargarse (mediante XMLHttpRequest u otro transporte similar) utilizando las funciones de utilidad proporcionadas en el script de arranque. También es posible inicializar espacios de nombres adicionales dentro o en paralelo al espacio de nombres «dojo», lo que permite extender Dojo o desarrollar espacios de nombres privados gestionados por Dojo para bibliotecas y aplicaciones de terceros.
Los paquetes de Dojo pueden constar de varios archivos y especificar cuáles los componen. Cualquier paquete o archivo también puede especificar una dependencia de otros paquetes o archivos; al cargar el paquete, también se cargarán todas las dependencias que especifique.
Se proporcionan soluciones alternativas para la carga entre dominios de la mayoría de los paquetes de Dojo (aunque esto requiere una compilación especializada de Dojo).
Dojo también proporciona un mecanismo para crear "perfiles"; el sistema de compilación toma como entrada una lista de paquetes y utiliza Rhino para crear un único archivo JavaScript comprimido que contiene dichos paquetes y todas sus dependencias. Esto permite cargar e inicializar todo el código necesario de una sola vez y facilita el almacenamiento en caché del código (la mayoría de los navegadores web no almacenan en caché los archivos cargados mediante XMLHttpRequest ). Se pueden descargar perfiles predefinidos para algunos casos de uso comunes desde la misma ubicación que el kit de herramientas completo.
Almacenamiento de datos del lado del cliente
Dojo cuenta con funciones de soporte para leer y escribir cookies . Anteriormente, también admitía una abstracción de almacenamiento local del lado del cliente llamada Dojo Storage.
Dojo Storage permite que las aplicaciones web almacenen datos en el lado del cliente, de forma persistente y segura, y con el permiso del usuario. Al incluirse en una página web, Dojo Storage determina el mejor método para almacenar información de forma persistente. Funciona en los navegadores web existentes, incluidos Internet Explorer , Firefox y Safari . Firefox 2 utiliza la persistencia nativa del navegador; en otros navegadores, utiliza un applet Flash oculto . Dado que Flash 6+ se ha instalado previamente en aproximadamente el 95 % de los ordenadores conectados a la web, [ 12 ] esto hizo que el mecanismo de almacenamiento fuera accesible para gran parte de la base instalada de la web. Para una aplicación web cargada desde el sistema de archivos, es decir, desde una file://URL, Dojo Storage utilizará de forma transparente XPCOM en Firefox y ActiveX en Internet Explorer para persistir la información. El programador que utiliza Dojo Storage no conoce el mecanismo de almacenamiento utilizado y dispone de una abstracción simple de tabla hash , con métodos como put() y get(). Dojo Storage no es compatible con versiones posteriores a la 1.3.
Almacenamiento de datos del lado del servidor
A partir de enero de 2007 ,Dojo incluye las siguientes implementaciones de ejemplo de almacenamiento de datos del lado del servidor en el espacio de nombres dojo.data : [ 13 ]
- CsvStore : un almacén de solo lectura que lee datos tabulares de archivos de valores separados por comas.
- OpmlStore : un almacén de solo lectura que lee datos jerárquicos de archivos en formato OPML.
- YahooStore : una tienda de solo lectura que obtiene los resultados de búsqueda del servicio web Yahoo! Search.
- DeliciousStore : una tienda de solo lectura que obtiene marcadores del servicio web del.icio.us.
- RdfStore : un almacén de lectura y escritura que utiliza SPARQL para comunicarse con servidores de datos RDF , incluyendo, por ejemplo, el servidor de aplicaciones Rhizome RDF.
Compatibilidad con Adobe Integrated Runtime (AIR)
Dojo se puede utilizar en aplicaciones Adobe AIR basadas en JavaScript . Ha sido modificado para cumplir con los requisitos de seguridad de AIR.
SitePen, una empresa de consultoría de Dojo, ha creado una aplicación de Adobe AIR llamada "Dojo Toolbox" utilizando Dojo. Incluye un visor de API y una interfaz gráfica de usuario (GUI) para el sistema de compilación de Dojo. Normalmente, el sistema de compilación se ejecuta desde Rhino, pero en esta aplicación de AIR se puede ejecutar desde AIR, sin necesidad de Java . [ 14 ]
Críticas
Cargando
Las versiones anteriores de Dojo tenían fama de ser voluminosas y lentas de cargar. [ 15 ] También requerían trabajo adicional para cargar Dojo entre dominios, por ejemplo, desde una CDN . Abordar estos problemas fue el objetivo principal de Dojo 1.7, que introdujo la definición de módulos asíncronos (AMD) y un cargador "nano". [ 16 ]
Documentación
Dojo ha sido criticado durante mucho tiempo por su documentación incompleta, dispersa y desactualizada. Conscientes de ello, los desarrolladores realizaron importantes mejoras en la documentación para la versión 1.8, incluyendo nuevos tutoriales, un explorador de API, completando las partes faltantes y actualizando la mayoría de los ejemplos al estilo AMD . [ 17 ] [ 18 ]
Se han escrito varios libros sobre Dojo, pero todos se basan en Dojo 1.3 o versiones anteriores, que ya tienen varios años de antigüedad. Dado que estas versiones son anteriores al soporte de AMD y su reorganización, los ejemplos que contienen casi invariablemente se basan en prácticas obsoletas y que ya no son recomendables. La mayoría de los autores están esperando a Dojo 2.0 antes de publicar algo nuevo. [ 19 ]
Curva de aprendizaje
Muchos han comentado que Dojo parece difícil de aprender y empezar a usar, especialmente en comparación con el más popular jQuery . [ 20 ] [ 21 ]
Dylan Schiemann, cocreador de Dojo, reconoce esto como consecuencia de sus diferentes alcances: "Sin duda, es más fácil aprender algo más pequeño que algo más complejo, pero nuestros usuarios más entusiastas no tardan en señalar que un poco más de aprendizaje inicial les ahorra incontables horas en tareas que Dojo simplifica". [ 15 ]
Estabilidad de la API
Los primeros usuarios se enfrentaron a una difícil transición a la versión 2.0 después de que el kit de herramientas se reescribiera por completo. [ 18 ] El cambio a AMD en versiones recientes ha sido igualmente problemático. [ 21 ] Dojo se ha esforzado mucho por mantener la retrocompatibilidad a pesar de su rápida evolución, con una gran parte de la API actual obsoleta pero aún mantenida, pero los usuarios a menudo han descubierto que las actualizaciones no se realizaron tan fluidamente como esperaban.
La versión 2.0 de Dojo eliminó gran parte de la API obsoleta y cambió de JavaScript a TypeScript.
Véase también
Referencias
- ↑ Forbes, Bryan (21 de abril de 2015). "Estructura de paquete básica creada y módulo lang añadido" . dojo/framework@762aac4 – vía GitHub .
- ↑ Lautzenheiser, Daniel (4 de marzo de 2022). "Versión v8.0.0" . dojo/framework . Recuperado el 29 de marzo de 2026 a través de GitHub .
- ↑ Gubler, Anthony (27 de julio de 2021). "Versión v8.0.0-rc.1" . dojo/framework . Recuperado el 29 de marzo de 2026 a través de GitHub .
- 1 2 "Una breve historia de Dojo: el kit de herramientas de Dojo - Guía de referencia" . dojotoolkit.org . Consultado el 16 de enero de 2024 .
- ↑ Schiemann, Dylan (13 de agosto de 2022). "Versión 1.17.3" . dojo/framework . Recuperado el 29 de marzo de 2026 a través de GitHub .
- 1 2 "Licencia de Dojo Toolkit" . Dojo Toolkit . Archivado del original el 31 de marzo de 2017. Recuperado el 17 de abril de 2017 .
- ↑ "La Fundación jQuery y la Fundación Dojo se fusionarán" . Blog oficial de jQuery . 1 de septiembre de 2015. Consultado el 2 de julio de 2018 .
- ↑ "La Fundación jQuery y la Fundación Dojo se fusionarán" . PRWeb . 1 de julio de 2015. Consultado el 2 de julio de 2018 .
- ↑ "¡Anunciamos la Fundación JS!" . SitePen . 17 de octubre de 2016 . Consultado el 2 de julio de 2018 .
- ↑ Singh, Manish (12 de marzo de 2019). "Node.js y las fundaciones de JS se fusionan para formar OpenJS" . VentureBeat . Archivado del original el 11 de febrero de 2021. Consultado el 21 de marzo de 2019 .
- ↑ Awati, Rahul (25 de enero de 2022). "¿Qué es JavaScript y XML asíncronos (AJAX)?" . Definición. TheServerSide.com . Informa TechTarget . Consultado el 30 de marzo de 2026 .
- ↑ "Penetración de la versión de Adobe Flash Player" . Sitio web de Adobe . Archivado del original el 2 de febrero de 2007.
- ↑ skinner (11 de enero de 2007). "Datos del Dojo" . Wiki. Manual del Dojo . Archivado del original el 13 de febrero de 2007.
- ↑ Dangoor, Kevin (9 de septiembre de 2008). "Dentro de la caja de herramientas del Dojo" . Blog. SitePen . Archivado del original el 11 de septiembre de 2008.
- 1 2 Schiemann, Dylan (16 de agosto de 2012). "Entrevista con Dylan Schiemann, creador de Dojo Toolkit" . Artículos\Entrevistas. Nettuts+ (Entrevista). Entrevistado por David Walsh. Envato. Archivado del original el 27 de noviembre de 2012.
- ↑ Schiemann, Dylan (1 de diciembre de 2011). "¡Dojo 1.7 lanzado!" . Blog. Dojo Toolkit . Recuperado el 29 de marzo de 2026 .
- ↑ Snover, Colin (9 de febrero de 2012). "Novedades de Dojo 1.8" . Blog. Dojo Toolkit . Consultado el 29 de marzo de 2026 .
- 1 2 Schiemann, Dylan (11 de octubre de 2012). "¿Cuál es la razón de ser de Dojo 2.0?" . dojo-contributors (Lista de correo). Archivado del original el 6 de diciembre de 2021.
- ↑ Schiemann, Dylan (30 de abril de 2012). "jQuery y la viabilidad a largo plazo de Dojo" . Dojo-interest (Lista de correo). Archivado del original el 5 de julio de 2022.
- ↑ Kelly, Kitson P. (17 de agosto de 2012). "¿Crítica a Dojo?" . Seven Foot Tall Cactus . Archivado del original el 26 de octubre de 2012.
- ^ " Dojo o JQuery" . NoADojoGuru . 6 de abril de 2012 . Consultado el 29 de marzo de 2026 .
Lecturas adicionales
- Orchard, Leslie M. (24 de noviembre de 2008). Guía concisa del dojo (1.ª ed.). Wrox Press . pág. 264. ISBN 978-0-470-45202-8.
- Russell, Matthew A. (24 de junio de 2008). Dojo: La guía definitiva (1.ª ed.). O'Reilly Media . pág. 500. ISBN 978-0-596-51648-2.
- Riecke, Craig; Gill, Rawld; Russell, Alex (18 de junio de 2008). Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences (1.ª ed.). Pragmatic Bookshelf . pág. 568. ISBN 978-1-934356-11-1.
- Holzner, Steven (14 de diciembre de 2008). The Dojo Toolkit: Visual QuickStart Guide (1.ª ed.). Peachpit Press . pág. 208. ISBN 978-0-321-60512-2.
- Zammetti, Frank (19 de septiembre de 2008). Proyectos prácticos de Dojo (1ª ed.). Presione . pag. 500.ISBN 978-1-4302-1066-5.
- Hayes, Kyle (17 de noviembre de 2009). Introducción al kit de herramientas JavaScript Dojo (1.ª ed.). Friends of Ed . pág. 350. ISBN 978-1-4302-2521-8Archivado del original el 22 de abril de 2010. Consultado el 15 de agosto de 2009 .
- Svensson, Peter (24 de noviembre de 2008). Dojo de aprendizaje (1ª ed.). Publicación de paquetes . pag. 264.ISBN 978-1-84719-268-4.
- Harmon, James E. (21 de junio de 2008). Dojo: Uso de la biblioteca JavaScript Dojo para crear aplicaciones Ajax (1.ª ed.). Addison-Wesley Professional . pág. 336. ISBN 978-0-13-235804-0.
- Orchard, Leslie M.; Pehlivanian, Ara; Koon, Scott; Jones, Harley (31 de agosto de 2009). Marcos de trabajo profesionales de JavaScript: Prototype, YUI, ExtJS, Dojo y MooTools (1.ª ed.). Wrox Press . pág. 888. ISBN 978-0-470-38459-6Archivado del original el 6 de julio de 2011. Consultado el 15 de agosto de 2009 .
Enlaces externos
- Bibliotecas de JavaScript
- Ajax (programación)
- Editores HTML basados en JavaScript
- Software que utiliza la Licencia Académica Gratuita
- Software que utiliza la licencia BSD.
- Frameworks web de JavaScript
- Marcos de trabajo para aplicaciones web enriquecidas
- Proyectos de la Fundación Linux