Dojo-Toolkit
OriginalautorDojo-Stiftung
EntwicklerOpenJS Foundation
FreigebenMärz 2005 [ 4 ] ( 2005-03 )
Stabile Version
1.17.3 / 13. August 2022 [ 5 ] ( 13.08.2022 )
Geschrieben inJavaScript
BetriebssystemPlattformübergreifend
TypJavaScript- Toolkit (oder Bibliothek )
LizenzBSD 3-Klausel-Lizenz oder Academic Free License 2.1 [ 6 ]
Webseitedojotoolkit.org​
Repositorygithub.com/dojo/dojo​​​

Dojo (vor Version 2.0 auch Dojo Toolkit oder dōjō toolkit geschrieben ) ist eine modulare Open-Source -JavaScript-Bibliothek (genauer: ein Toolkit oder UI-Framework), die die schnelle Entwicklung plattformübergreifender, JavaScript- / Ajax -basierter Anwendungen und Websites vereinfacht. Sie wurde 2004 von Alex Russell, Dylan Schiemann, David Schontzler und anderen gegründet [ 4 ] und ist unter der modifizierten BSD-Lizenz oder der Academic Free License (ab Version 2.1) lizenziert . [ 6 ]

Die Dojo Foundation war eine gemeinnützige Organisation, die mit dem Ziel gegründet wurde, die Verbreitung des Toolkits zu fördern. Im Jahr 2016 fusionierte die Stiftung mit der jQuery Foundation zur JS Foundation [ 7 ] [ 8 ] [ 9 ] , die 2019 mit der Node.js Foundation zur OpenJS Foundation fusionierte [ 10 ].

Überblick

Dojo ist ein JavaScript- Framework, das auf die vielfältigen Anforderungen umfangreicher clientseitiger Webentwicklung zugeschnitten ist. So abstrahiert Dojo beispielsweise die Unterschiede zwischen verschiedenen Browsern, um APIs bereitzustellen, die auf allen Browsern funktionieren (es kann sogar serverseitig unter Node.js ausgeführt werden ). Es etabliert ein Framework zur Definition von Code-Modulen und zur Verwaltung ihrer Abhängigkeiten. Dojo bietet Build-Tools zur Optimierung von JavaScript und CSS , zur Generierung von Dokumentation und für Unit-Tests. Es unterstützt Internationalisierung, Lokalisierung und Barrierefreiheit und stellt eine umfangreiche Sammlung häufig benötigter Hilfsklassen und Benutzeroberflächen-Widgets bereit.

Dojo ist vollständig Open Source . Das Toolkit umfasst neben Bildern und anderen Ressourcen etwa dreitausend JavaScript-Module.

Das Dojo Toolkit ist in mehrere Teile gegliedert:

  • Dojo enthält den Kern und die meisten nicht-visuellen Module.
  • dijit ist eine Bibliothek von Benutzeroberflächenmodulen für Widgets und Layout.
  • dojox enthält verschiedene Module, die noch nicht als stabil genug gelten, um in dojo oder dijit aufgenommen zu werden .
  • util umfasst Build-Tools wie Optimierung, Dokumentation, Stilprüfung und Tests.

Merkmale

Widgets

Dojo-Widgets sind Komponenten – bestehend aus JavaScript- Code, HTML- Markup und CSS- Stildeklarationen –, die browserübergreifende (nicht zu verwechseln mit browserübergreifender ) interaktive Funktionen bieten:

  • Menüs , Registerkarten und Tooltips
  • Sortierbare Tabellen
  • Dynamische Diagramme
  • 2D- Vektorzeichnungen
  • Animierte Effekte – Überblendungen, Wischblenden und Gleiteffekte – Möglichkeiten für benutzerdefinierte Animationseffekte

Asynchrone Kommunikation

Ein wichtiges Merkmal von Ajax-Anwendungen ist die asynchrone Kommunikation zwischen Browser und Server: Informationen werden ausgetauscht und die Seitendarstellung aktualisiert, ohne dass die gesamte Seite neu geladen werden muss. Traditionell geschieht dies mit dem JavaScript-Objekt XMLHttpRequest . Dojo bietet einen abstrahierten Wrapper dojo.xhrfür die verschiedenen Browser-Implementierungen von XMLHttpRequest und dojo.iounterstützt darüber hinaus weitere Transportprotokolle (wie z. B. versteckte IFrames ) sowie eine Vielzahl von Datenformaten. Mit diesem Ansatz lassen sich die vom Benutzer in ein Formular eingegebenen Daten einfach „im Hintergrund“ an den Server senden; der Server kann dann mit JavaScript-Code antworten, der die Seitendarstellung aktualisiert. [ 11 ]

Verpackungssystem

Dojo bietet ein Paketsystem zur modularen Entwicklung von Funktionen in einzelnen Paketen und Unterpaketen. Das Dojo-Basisskript, der sogenannte „ Bootstrap “, initialisiert eine Reihe hierarchischer Paket-Namensräume – „io“, „event“ usw. – unter dem Stamm -Namensraum „dojo“ . Nach der Initialisierung des Stamm-Namensraums kann jedes Dojo-Paket (über XMLHttpRequest oder einen ähnlichen Transport) mithilfe der im Bootstrap bereitgestellten Hilfsfunktionen geladen werden. Es ist außerdem möglich, zusätzliche Namensräume innerhalb oder parallel zum Namensraum „dojo“ zu initialisieren. Dies ermöglicht Erweiterungen von Dojo oder die Entwicklung privater, von Dojo verwalteter Namensräume für Bibliotheken und Anwendungen von Drittanbietern.

Dojo-Pakete können aus mehreren Dateien bestehen und festlegen, welche Dateien das gesamte Paket bilden. Jedes Paket oder jede Datei kann zudem Abhängigkeiten zu anderen Paketen oder Dateien definieren; beim Laden des Pakets werden dann auch alle darin angegebenen Abhängigkeiten geladen.

Für das domänenübergreifende Laden der meisten Dojo-Pakete werden Workarounds bereitgestellt (dies erfordert jedoch eine spezielle Version von Dojo).

Dojo bietet außerdem einen Mechanismus zum Erstellen von „Profilen“. Das Build-System benötigt eine Liste von Paketen als Eingabe und erstellt mithilfe von Rhino eine einzelne komprimierte JavaScript-Datei, die diese Pakete und alle ihre Abhängigkeiten enthält. Dadurch kann der gesamte benötigte Code gleichzeitig geladen und initialisiert werden, und das Caching des Codes ist möglich (die meisten Webbrowser cachen keine Dateien, die über XMLHttpRequest geladen werden). Vorkonfigurierte Profile für einige gängige Anwendungsfälle stehen am selben Ort wie das vollständige Toolkit zum Download bereit.

Clientseitige Datenspeicherung

Dojo bietet Unterstützungsfunktionen zum Lesen und Schreiben von Cookies . Es unterstützte außerdem zuvor eine lokale, clientseitige Speicherabstraktion namens Dojo Storage.

Dojo Storage ermöglicht Webanwendungen, Daten clientseitig, persistent und sicher sowie mit Zustimmung des Nutzers zu speichern. Beim Einbinden in eine Webseite ermittelt Dojo Storage die optimale Methode zur dauerhaften Datenspeicherung. Es ist mit allen gängigen Webbrowsern kompatibel, darunter Internet Explorer , Firefox und Safari . Firefox 2 nutzt die native Browser-Persistenz; andere Browser verwenden ein verstecktes Flash- Applet. Da Flash 6 und höher bereits auf etwa 95 % aller mit dem Internet verbundenen Computer installiert waren [ 12 ], war der Speichermechanismus für einen Großteil der installierten Basis im Web zugänglich. Bei Webanwendungen, die vom Dateisystem (z. B. über eine file://URL) geladen werden, verwendet Dojo Storage transparent XPCOM (Firefox) bzw. ActiveX (Internet Explorer) zur Datenspeicherung. Programmierer, die Dojo Storage verwenden, profitieren von einer Abstraktion des Speichermechanismus und erhalten eine einfache Hashtabelle mit Methoden wie `put()` und `get()`. Dojo Storage wird in Versionen nach 1.3 nicht mehr unterstützt.

Serverseitige Datenspeicherung

Stand Januar 2007 enthält Dojo die folgenden Beispielimplementierungen von serverseitigen Datenspeichern im Namespace dojo.data : [ 13 ]

  • CsvStore : Ein schreibgeschützter Speicher, der tabellarische Daten aus CSV- Dateien (Comma-Separated Values ) liest.
  • OpmlStore : Ein schreibgeschützter Speicher, der hierarchische Daten aus OPML -Dateien liest.
  • YahooStore : ein schreibgeschützter Speicher, der Suchergebnisse vom Yahoo! -Suchdienst abruft.
  • DeliciousStore : ein schreibgeschützter Speicher, der Lesezeichen vom Webdienst del.icio.us abruft.
  • RdfStore : ein Lese-/Schreibspeicher, der SPARQL verwendet, um mit RDF- Datenservern zu kommunizieren , darunter beispielsweise der Rhizome RDF-Anwendungsserver.

Unterstützung für Adobe Integrated Runtime (AIR)

Dojo kann in JavaScript -basierten Adobe AIR- Anwendungen verwendet werden . Es wurde so angepasst, dass es den Sicherheitsanforderungen von AIR entspricht.

SitePen, ein Dojo-Beratungsunternehmen, hat mit Dojo eine Adobe AIR-Anwendung namens „Dojo Toolbox“ entwickelt. Diese beinhaltet einen API-Viewer und eine grafische Benutzeroberfläche für das Dojo-Buildsystem. Normalerweise wird das Buildsystem innerhalb von Rhino ausgeführt, in dieser AIR-Anwendung kann es jedoch direkt aus AIR heraus, ohne Java , gestartet werden . [ 14 ]

Kritikpunkte

Laden

Frühere Versionen von Dojo waren dafür bekannt, umfangreich und langsam zu sein. [ 15 ] Auch das Laden von Dojo über verschiedene Domänen hinweg, z. B. von einem CDN , erforderte zusätzlichen Aufwand . Die Behebung dieser Probleme war das Hauptziel von Dojo 1.7, das die asynchrone Moduldefinition (AMD) und einen „Nano“-Loader einführte. [ 16 ]

Dokumentation

Dojo wurde lange für seine unvollständige, verstreute und veraltete Dokumentation kritisiert. Die Entwickler haben dies erkannt und die Dokumentation für Version 1.8 umfassend verbessert. Dazu gehören neue Tutorials, ein API-Browser, das Ergänzen fehlender Informationen und die Aktualisierung der meisten Beispiele auf den AMD- Standard. [ 17 ] [ 18 ]

Es wurden bereits einige Bücher über Dojo verfasst, die jedoch alle auf Dojo 1.3 oder älteren Versionen basieren, welche mittlerweile mehrere Jahre veraltet sind. Da diese Bücher vor der Einführung der AMD-Unterstützung und der damit einhergehenden Reorganisation entstanden sind, beruhen die Beispiele darin fast ausnahmslos auf veralteten und nicht mehr empfohlenen Vorgehensweisen. Die meisten Autoren warten daher auf Dojo 2.0, bevor sie etwas Neues veröffentlichen. [ 19 ]

Lernkurve

Viele haben angemerkt, dass Dojo schwierig zu erlernen und anzuwenden sei, insbesondere im Vergleich zum populäreren jQuery . [ 20 ] [ 21 ]

Dojo-Mitbegründer Dylan Schiemann räumt dies als Folge der unterschiedlichen Schwerpunkte ein: „Es ist sicherlich einfacher, etwas Kleineres zu lernen als etwas, das mehr kann, aber unsere begeisterten Nutzer weisen schnell darauf hin, dass ihnen etwas mehr Einarbeitung im Vorfeld unzählige Stunden für Dinge erspart, die Dojo so einfach macht.“ [ 15 ]

API-Stabilität

Die ersten Nutzer hatten nach der kompletten Neuentwicklung des Toolkits Schwierigkeiten beim Umstieg auf Version 2.0. [ 18 ] Auch der Wechsel zu AMD in neueren Versionen gestaltete sich ähnlich problematisch. [ 21 ] Dojo hat sich trotz der rasanten Weiterentwicklung große Mühe gegeben, die Abwärtskompatibilität zu wahren. Ein Großteil der aktuellen API ist zwar veraltet, wird aber weiterhin gepflegt. Dennoch verliefen Aktualisierungen für die Nutzer oft nicht so reibungslos wie erhofft.

Mit der Veröffentlichung von Dojo 2.0 wurde ein Großteil der veralteten API entfernt und von JavaScript auf TypeScript umgestellt.

Siehe auch

Referenzen

  1. ^ Forbes, Bryan (21. April 2015). „Grundlegende Paketstruktur erstellt und Sprachmodul hinzugefügt“ . dojo/framework@762aac4 – via GitHub .
  2. ^ Lautzenheiser, Daniel (4. März 2022). „Release v8.0.0“ . dojo/framework . Abgerufen am 29. März 2026 – via GitHub .
  3. ^ Gubler, Anthony (27. Juli 2021). „Release v8.0.0-rc.1“ . dojo/framework . Abgerufen am 29. März 2026 – via GitHub .
  4. ^ a b „Eine kurze Geschichte von Dojo – Das Dojo Toolkit – Referenzhandbuch“ . dojotoolkit.org . Abgerufen am 16. Januar 2024 .
  5. ^ Schiemann, Dylan (13. August 2022). „Release 1.17.3“ . dojo/framework . Abgerufen am 29. März 2026 – via GitHub .
  6. ^ a b „Dojo Toolkit License“ . Dojo Toolkit . Archiviert vom Original am 31. März 2017. Abgerufen am 17. April 2017 .
  7. ^ „jQuery Foundation und Dojo Foundation fusionieren“ . Offizieller jQuery-Blog . 1. September 2015. Abgerufen am 2. Juli 2018 .
  8. ^ „jQuery Foundation und Dojo Foundation fusionieren“ . PRWeb . 1. Juli 2015. Abgerufen am 2. Juli 2018 .
  9. ^ „Ankündigung der JS Foundation!“ . SitePen . 17. Oktober 2016 . Abgerufen am 2. Juli 2018 .
  10. ^ Singh, Manish (12. März 2019). „Node.js und JS Foundations verschmelzen zu OpenJS“ . VentureBeat . Archiviert vom Original am 11. Februar 2021. Abgerufen am 21. März 2019 .
  11. ^ Awati, Rahul (25. Januar 2022). „Was ist asynchrones JavaScript und XML (AJAX)?“ Definition. TheServerSide.com . Informa TechTarget . Abgerufen am 30. März 2026 .
  12. ^ „Adobe Flash Player Version Penetration“ . Adobe-Website . Archiviert vom Original am 2. Februar 2007.
  13. ^ skinner (11. Januar 2007). „Dojo-Daten“ . Wiki. Dojo-Handbuch . Archiviert vom Original am 13. Februar 2007.
  14. ^ Dangoor, Kevin (9. September 2008). „Inside the Dojo Toolbox“ . Blog. SitePen . Archiviert vom Original am 11. September 2008.
  15. ^ a b Schiemann, Dylan (16. August 2012). „Ein Interview mit Dylan Schiemann, dem Entwickler des Dojo Toolkits“ . Artikel\Interviews. Nettuts+ (Interview). Interview geführt von David Walsh. Envato. Archiviert vom Original am 27. November 2012.
  16. ^ Schiemann, Dylan (1. Dezember 2011). „Dojo 1.7 veröffentlicht!“ . Blog. Dojo Toolkit . Abgerufen am 29.03.2026 .
  17. ^ Snover, Colin (9. Februar 2012). „Was kommt in Dojo 1.8?“ . Blog. Dojo Toolkit . Abgerufen am 29. März 2026 .
  18. ^ a b Schiemann, Dylan (11. Oktober 2012). „Was ist der Sinn von Dojo 2.0?“ . dojo-contributors (Mailingliste). Archiviert vom Original am 6. Dezember 2021.
  19. ^ Schiemann, Dylan (30. April 2012). „jQuery und die langfristige Zukunftsfähigkeit von Dojo“ . Dojo-interest (Mailingliste). Archiviert vom Original am 5. Juli 2022.
  20. ^ Kelly, Kitson P. (17. August 2012). „Kritik an Dojo?“ . Seven Foot Tall Cactus . Archiviert vom Original am 26.10.2012.
  21. ^ ein b „Dojo oder JQuery“ . NichtADojoGuru . 6. April 2012 . Abgerufen am 29.03.2026 .

Weiterführende Literatur