stringtranslate.com

Kit de herramientas Dojo

Dojo Toolkit (estilizado como dōjō toolkit ) es una biblioteca de código abierto modular de JavaScript (o más específicamente, un kit de herramientas de JavaScript ) diseñado para facilitar el desarrollo rápido de aplicaciones y sitios web multiplataforma basados ​​en JavaScript/ Ajax . Fue iniciado por Alex Russell, Dylan Schiemann, David Schontzler y otros en 2004 [1] y tiene licencia dual bajo la licencia BSD modificada o la Licencia Libre Académica (≥ 2.1). [5]

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 . [6] [7] [8]

Descripción general

Dojo es un framework de JavaScript que se enfoca en las múltiples necesidades del desarrollo web a gran escala del lado del cliente. Por ejemplo, Dojo abstrae las diferencias entre los distintos navegadores para proporcionar API que funcionarán en todos ellos (incluso puede ejecutarse en el servidor bajo Node.js ); establece un framework para definir módulos de código y administrar 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 conjunto completo de clases de utilidad y widgets de interfaz de usuario comúnmente necesarios. [ cita requerida ]

Dojo es completamente de código abierto . El conjunto de herramientas incluye alrededor de tres mil módulos de JavaScript, además de imágenes y otros recursos. [ cita requerida ]

El kit de herramientas Dojo está organizado en varias partes:

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 navegadores cruzados ):

Comunicación asincrónica

Una característica importante de las aplicaciones Ajax es la comunicación asincrónica del navegador con el servidor: se intercambia información y se actualiza la presentación de la página sin necesidad de recargar toda la página. Tradicionalmente, esto se hace con el objeto JavaScript XMLHttpRequest . Dojo proporciona un contenedor abstracto ( dojo.xhr) alrededor de las implementaciones de XMLHttpRequest de varios navegadores web, y dojo.iotambién admite otros transportes (como IFrames ocultos ) y una variedad de formatos de datos. Con este enfoque, es fácil enviar los datos que un usuario ingresa en un formulario al servidor "entre bastidores"; el servidor puede entonces responder con algún código JavaScript que actualice la presentación de la página. [9]

Sistema de embalaje

Dojo proporciona un sistema de empaquetado para facilitar el desarrollo modular de funcionalidades en paquetes individuales y subpaquetes; el script base " bootstrap " de Dojo inicializa un conjunto de espacios de nombres de paquetes jerárquicos —"io", "event", etc.— bajo un espacio de nombres raíz "dojo" . Después de la inicialización del espacio de nombres raíz, cualquier paquete Dojo puede cargarse (a través de XMLHttpRequest u otro transporte similar) utilizando funciones de utilidad suministradas en el bootstrap. También es posible inicializar espacios de nombres adicionales dentro o en paralelo al espacio de nombres "dojo", lo que permite extensiones de Dojo o el desarrollo de espacios de nombres privados administrados por Dojo para bibliotecas y aplicaciones de terceros. [ cita requerida ]

Los paquetes Dojo pueden constar de varios archivos y pueden especificar qué archivos constituyen el paquete completo. Cualquier paquete o archivo también puede especificar una dependencia de otros paquetes o archivos; cuando se carga el paquete, también se cargarán las dependencias que especifique. [ cita requerida ]

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 creación toma como entrada una lista de paquetes y utiliza Rhino para crear un único archivo comprimido de JavaScript que contiene esos paquetes y todas sus dependencias. Esto permite cargar e inicializar todo el código necesario a la vez, y permite el almacenamiento en caché del código (la mayoría de los navegadores web no almacenan en caché los archivos cargados mediante XMLHttpRequest [ cita requerida ] ). Los perfiles preconstruidos para algunos casos de uso comunes están disponibles para su descarga desde la misma ubicación que el kit de herramientas completo.

Almacenamiento de datos del lado del cliente

Además de proporcionar funciones de soporte para leer y escribir cookies , Dojo anteriormente admitía una abstracción de almacenamiento local del lado del cliente llamada Dojo Storage. Dojo Storage permite a las aplicaciones web almacenar datos en el lado del cliente, de forma persistente y segura y con el permiso del usuario. Funciona en todos los navegadores web existentes, incluidos Internet Explorer , Firefox y Safari . Cuando se incluye en una página web, Dojo Storage determina el mejor método para almacenar información de forma persistente. Firefox 2 utiliza la persistencia nativa del navegador; en otros navegadores, utiliza un subprograma Flash oculto . Con Flash 6+ instalado en aproximadamente el 95% de las computadoras conectadas a la web, [10] esto hace que el mecanismo de almacenamiento sea 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 URL file://, 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 se abstrae del mecanismo de almacenamiento utilizado y se le presenta una abstracción de tabla hash simple , con métodos como put() y get(). Dojo Storage no es compatible con versiones posteriores a la versión 1.3. [ cita requerida ]

Almacenamiento de datos del lado del servidor

A partir de enero de 2007, Dojo incluye las siguientes implementaciones de almacén de datos del lado del servidor de ejemplo en el espacio de nombres dojo.data : [11]

Compatibilidad con Adobe Integrated Runtime (AIR)

Dojo se puede utilizar en aplicaciones Adobe AIR basadas en JavaScript . Se ha modificado para cumplir con los requisitos de seguridad de AIR.

SitePen, una empresa de consultoría de Dojo, ha creado una aplicación Adobe AIR llamada "Dojo Toolbox" utilizando Dojo. Incluye un visor de API y una interfaz gráfica de usuario para el sistema de compilación de Dojo. Normalmente, el sistema de compilación se ejecuta desde Rhino, pero en esta aplicación AIR el sistema de compilación se puede ejecutar desde AIR, sin el uso de Java. [12]

Críticas

Cargando

Las versiones anteriores de Dojo tenían fama de ser voluminosas y lentas de cargar. [13] También requería trabajo adicional cargar Dojo en distintos dominios, por ejemplo, desde una CDN . Abordar estos problemas fue el principal objetivo de Dojo 1.7, que introdujo la definición de módulo asincrónico (AMD) y un cargador "nano". [14]

Documentación

Dojo ha sido criticado durante mucho tiempo por su documentación incompleta, dispersa y obsoleta. Reconociendo esto, los desarrolladores realizaron enormes mejoras en la documentación para la versión 1.8, incluidos nuevos tutoriales, un navegador de API, completando las piezas faltantes y actualizando la mayoría de los ejemplos al estilo AMD . [15] [16]

Se han escrito varios libros sobre Dojo, pero todos se basan en Dojo 1.3 o versiones anteriores, que ya están desactualizadas desde hace varios años. Dado que son anteriores al soporte de AMD y a la reorganización que lo acompañó, los ejemplos de estos libros casi invariablemente se basan en cosas que ahora están obsoletas y ya no son las mejores prácticas. La mayoría de los autores esperan a Dojo 2.0 antes de publicar algo nuevo. [17]

Curva de aprendizaje

Muchos han comentado que Dojo parece difícil de aprender y comenzar a utilizar, especialmente en comparación con el más popular jQuery . [18] [19]

El cocreador de Dojo, Dylan Schiemann, reconoce esto como una consecuencia de sus diferentes alcances: "Sin duda, es más fácil aprender algo que es más pequeño que algo que hace más, pero nuestros ávidos usuarios se apresuran a señalar que un poco más de aprendizaje por adelantado les ahorra incontables horas para cosas que Dojo hace fáciles". [13]

Estabilidad de la API

Los primeros usuarios se enfrentaron a una transición difícil a la versión 1.0 después de que el kit de herramientas se reescribiera por completo. [16] El cambio a AMD en versiones recientes ha sido igualmente problemático. [19] Dojo se ha esforzado mucho por mantener la compatibilidad con versiones anteriores 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 bien 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

  1. ^ ab "Una breve historia de Dojo - El kit de herramientas de Dojo - Guía de referencia". dojotoolkit.org . Consultado el 16 de enero de 2024 .
  2. ^ "Blog de Dojo". dojo.io . Consultado el 16 de enero de 2024 .
  3. ^ "Versión v8.0.0-beta.3 · dojo/framework · GitHub". github.com . 2 de marzo de 2021 . Consultado el 10 de marzo de 2021 .
  4. ^ "Muestras · TypeScript". Archivado desde el original el 27 de marzo de 2016.
  5. ^ ab "Licencia de Dojo Toolkit". Dojo Toolkit . Consultado el 17 de abril de 2017 .
  6. ^ "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 .
  7. ^ "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 .
  8. ^ "¡Anunciamos la fundación JS!". SitePen . 17 de octubre de 2016 . Consultado el 2 de julio de 2018 .
  9. ^ "¿Qué es Asynchronous JavaScript and XML (AJAX)?". TheServerSide.com . Consultado el 4 de julio de 2023 .
  10. ^ "Penetración de versiones de Adobe Flash Player". Sitio web de Adobe .
  11. ^ "Datos del Dojo". 11 de enero de 2007. Archivado desde el original el 13 de febrero de 2007. Consultado el 3 de febrero de 2007 .
  12. ^ "Blog de desarrollo y JavaScript".
  13. ^ ab "Entrevista con el creador de Dojo Toolkit, Dylan Schiemann". Nettuts+ . 16 de agosto de 2012 . Consultado el 21 de noviembre de 2012 .
  14. ^ "¡Lanzamiento de Dojo 1.7!". Blog de Dojo Toolkit . 1 de enero de 2011. Consultado el 21 de noviembre de 2012 .
  15. ^ "Novedades de Dojo 1.8". Blog de Dojo Toolkit . 9 de febrero de 2012. Consultado el 21 de noviembre de 2012 .
  16. ^ ab "cuál es la razón de ser de dojo 2.0". dojo-contributors . 11 de octubre de 2012 . Consultado el 29 de noviembre de 2012 .Archivado el 1 de diciembre de 2017 en Wayback Machine.
  17. ^ Schiemann, Dylan (30 de abril de 2012). «jQuery y la viabilidad a largo plazo de Dojo». Dojo-interest . Archivado desde el original el 29 de octubre de 2014. Consultado el 29 de noviembre de 2012 .
  18. ^ "¿Crítica a Dojo?". Seven Foot Tall Cactus . 17 de agosto de 2012. Archivado desde el original el 26 de octubre de 2012. Consultado el 21 de noviembre de 2012 .
  19. ^ ab "Dojo o JQuery". NoADojoGuru . 6 de abril de 2012 . Consultado el 21 de noviembre de 2012 .

Lectura adicional

Enlaces externos