Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Dojo Toolkit

From Wikipedia, the free encyclopedia
Open-source modular JavaScript library

Dojo Toolkit (before version 2), Dojo (since version 2)
Developer(s)Dojo Foundation
Initial releaseMarch 2005; 20 years ago (2005-03)[1]
Stable release
7.0.6 / January 20, 2021; 4 years ago (2021-01-20)[2]
Preview release
8.0.0-beta.7 / April 27, 2021; 3 years ago (2021-04-27)[3]
RepositoryDojo Toolkit 1.xhttps://github.com/dojo/dojo
Dojo Framework 2+https://github.com/dojo/framework
Written inDojo Tookit 1.x:JavaScript,Dojo >= 2.x:TypeScript[4]
Operating systemCross-platform
TypeJavaScript toolkit (orlibrary)
LicenseThemodified BSD license or theAcademic Free License (≥ 2.1)[5]
Websitehttps://dojotoolkit.org,https://dojo.io/

Dojo Toolkit (stylized asdōjō toolkit) is anopen-source modularJavaScript library (or more specificallyJavaScript toolkit) designed to ease the rapid development of cross-platform, JavaScript/Ajax-based applications and web sites. It was started by Alex Russell, Dylan Schiemann, David Schontzler, and others in 2004[1] and isdual-licensed under themodified BSD license or theAcademic Free License (≥ 2.1).[5]

TheDojo Foundation was a non-profit organization created with the goal to promote the adoption of the toolkit. In 2016, the foundation merged withjQuery Foundation to becomeJS Foundation.[6][7][8]

Overview

[edit]

Dojo is aJavaScript framework targeting the many needs of large-scale client-side web development. For example, Dojo abstracts the differences among diverse browsers to provide APIs that will work on all of them (it can even run on the server underNode.js); it establishes a framework for defining modules of code and managing their interdependencies; it provides build tools for optimizing JavaScript andCSS, generating documentation, and unit testing; it supportsinternationalization, localization, andaccessibility; and it provides a rich suite of commonly needed utility classes and user-interface widgets.[citation needed]

Dojo is completelyopen source. The toolkit includes about three thousand JavaScript modules, in addition to images and other resources.[citation needed]

The Dojo Toolkit is organized in several parts:

  • dojo contains the core and most non-visual modules.
  • dijit is a library of user-interface modules for widgets and layout.
  • dojox holds assorted modules not yet considered stable enough to include indojo ordijit.
  • util includes build tools such as optimization, documentation, style-checking, and testing.

Features

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(April 2023) (Learn how and when to remove this message)

Widgets

[edit]

Dojo widgets are components — comprisingJavaScript code,HTML markup, andCSS style declarations — that provide multi-browser (not to be confused withcross-browser), interactive features:

Asynchronous communication

[edit]

One important feature of Ajax applications is asynchronous communication of the browser with the server: information is exchanged and the page's presentation is updated without a need for reloading the whole page. Traditionally, this is done with the JavaScript objectXMLHttpRequest. Dojo provides an abstracted wrapper (dojo.xhr) around various web browsers' implementations of XMLHttpRequest, anddojo.io also supports other transports (such as hiddenIFrames) and a variety of data formats. Using this approach, it is easy to have the data a user enters into a form sent to the server "behind the scenes"; the server can then reply with some JavaScript code that updates the presentation of the page.[9]

Packaging system

[edit]

Dojo provides a packaging system to facilitate modular development of functionality in individual packages and sub-packages; the base Dojo "bootstrap" script initializes a set of hierarchical package namespaces — "io", "event", etc. — under a root "dojo"namespace. After initialization of the root namespace, any Dojo package can be loaded (viaXMLHttpRequest or other similar transport) by using utility functions supplied in the bootstrap. It is also possible to initialize additional namespaces within or parallel to the "dojo" namespace, allowing extensions of Dojo or the development of private Dojo-managed namespaces for third-party libraries and applications.[citation needed]

Dojo packages can consist of multiple files and can specify which files constitute the entire package. Any package or file can also specify a dependency on other packages or files; when the package is loaded, any dependencies it specifies will also be loaded.[citation needed]

Workarounds for cross-domain loading of most Dojo packages are provided (though this requires a specialized build of Dojo).

Dojo also provides a mechanism for building "profiles"; the build system takes as input a list of packages, and usesRhino to create a single compressed JavaScript file containing those packages and all their dependencies. This allows all necessary code to be loaded and initialized at once, and permitscaching of the code (mostweb browsers do not cache files loaded via XMLHttpRequest[citation needed]). Pre-built profiles for some common use cases are available for download from the same location as the full toolkit.

Client-side data storage

[edit]

Dojo has support functions for reading and writingcookies. It also previously supported a local, client-side storage abstraction named Dojo Storage.

Dojo Storage allows web applications to store data on the client-side, persistently and securely and with a user's permission. When included in a web page, Dojo Storage determines the best method for persistently storing information. It works across existing web browsers, includingInternet Explorer,Firefox, andSafari. Firefox 2 uses native browser persistence; on other browsers, it uses a hiddenFlash applet. With Flash 6+ have previously been installed on about 95% of computers connected to the web,[10] this previously made the storage mechanism accessible for much of the web's installed base. For a web application loaded from the file system, i.e., from a file:// URL, Dojo Storage will transparently useXPCOM on Firefox andActiveX on Internet Explorer to persist information. The programmer using Dojo Storage is abstracted from the storage mechanism used and is presented with a simplehash table abstraction, with methods such as put() and get().Dojo Storage is not supported in versions later than the 1.3 release.[citation needed]

Server-side data storage

[edit]

As of January 2007, Dojo includes the following exampleserver-side datastore implementations in thedojo.data namespace:[11]

  • CsvStore: a read-only store that reads tabular data fromcomma-separated values files
  • OpmlStore: a read-only store that reads hierarchical data fromOPML format files
  • YahooStore: a read-only store that fetches search results from theYahoo! Search web service
  • DeliciousStore: a read-only store that fetches bookmarks from thedel.icio.us web service
  • RdfStore: a read-write store that usesSPARQL to talk toRDF data servers including, for example, theRhizome RDF application server.

Support for Adobe Integrated Runtime (AIR)

[edit]

Dojo can be used inJavaScript-basedAdobe AIR applications. It has been modified to meet AIR's security requirements.

SitePen, a Dojo consulting company, has made an Adobe AIR application called "Dojo Toolbox" using Dojo. It includes an API viewer and a GUI to Dojo's build system. Normally, the build system is run from within Rhino, but in this AIR application the build system can be run from AIR, without the use of Java.[12]

Criticisms

[edit]

Loading

[edit]

Earlier versions of Dojo had a reputation for being bulky and slow to load.[13] It also required extra work to load Dojo across domains, e.g., from aCDN. Addressing these problems was the major goal of Dojo 1.7, which introducedasynchronous module definition (AMD) and a "nano" loader.[14]

Documentation

[edit]

Dojo has long been criticized for its incomplete, scattered, and outdated documentation. Recognizing this, the developers made huge improvements in the documentation for the 1.8 release, including new tutorials, an API browser, filling in the missing pieces, and updating most examples toAMD style.[15][16]

A number of books have been written about Dojo, but all based upon Dojo 1.3 or earlier, now several years out of date. Since these predate AMD support and its accompanying reorganization, examples in these books almost invariably rely on things that are now deprecated and no longer best practice. Most authors are waiting for Dojo 2.0 before publishing anything new.[17]

Learning curve

[edit]

Many have commented that Dojo seems difficult to learn and get started with, especially in comparison with the more popularjQuery.[18][19]

Dojo co-creator Dylan Schiemann acknowledges this as a consequence of their different scopes: "It's certainly easier to learn something that's smaller than something that does more, but our avid users are quick to point out that a bit more learning up front saves them countless hours for things that Dojo makes easy."[13]

API stability

[edit]

Early users faced a difficult transition to the 1.0 release after the toolkit was totally rewritten.[16] The move to AMD in recent versions has been similarly problematic.[19] Dojo has taken great pains to maintain backward compatibility despite its rapid evolution, with a large portion of the current API deprecated but still maintained, but users have often found that upgrades did not go as smoothly as hoped.

Dojo 2.0 release removed much of the deprecated API and switched from JavaScript to TypeScript.

See also

[edit]

References

[edit]
  1. ^ab"A Brief History of Dojo — The Dojo Toolkit - Reference Guide".dojotoolkit.org. RetrievedJanuary 16, 2024.
  2. ^"Dojo Blog".dojo.io. RetrievedJanuary 16, 2024.
  3. ^"Release v8.0.0-beta.3 · dojo/framework · GitHub".github.com. March 2, 2021. RetrievedMarch 10, 2021.
  4. ^"Samples · TypeScript". Archived fromthe original on March 27, 2016.
  5. ^ab"Dojo Toolkit License".Dojo Toolkit. RetrievedApril 17, 2017.
  6. ^"jQuery Foundation and Dojo Foundation to Merge".Official jQuery Blog. September 1, 2015. RetrievedJuly 2, 2018.
  7. ^"jQuery Foundation and Dojo Foundation to Merge".PRWeb. July 1, 2015. RetrievedJuly 2, 2018.
  8. ^"Announcing the JS Foundation!".SitePen. October 17, 2016. RetrievedJuly 2, 2018.
  9. ^"What is Asynchronous JavaScript and XML (AJAX)?".TheServerSide.com. RetrievedJuly 4, 2023.
  10. ^"Adobe Flash Player Version Penetration".Adobe website.
  11. ^"Dojo Data". January 11, 2007. Archived fromthe original on February 13, 2007. RetrievedFebruary 3, 2007.
  12. ^"Development and JavaScript Blog".
  13. ^ab"An Interview with Dojo Toolkit Creator Dylan Schiemann".Nettuts+. August 16, 2012. RetrievedNovember 21, 2012.
  14. ^"Dojo 1.7 Released!".Dojo Toolkit Blog. January 1, 2011. RetrievedNovember 21, 2012.
  15. ^"What's coming in Dojo 1.8".Dojo Toolkit Blog. February 9, 2012. RetrievedNovember 21, 2012.
  16. ^ab"what is the raison detre for dojo 2.0".dojo-contributors. October 11, 2012. RetrievedNovember 29, 2012.Archived 2017-12-01 at theWayback Machine
  17. ^Schiemann, Dylan (April 30, 2012)."jQuery and the long term viability of Dojo".Dojo-interest. Archived fromthe original on October 29, 2014. RetrievedNovember 29, 2012.
  18. ^"Criticism of Dojo?".Seven Foot Tall Cactus. August 17, 2012. Archived fromthe original on October 26, 2012. RetrievedNovember 21, 2012.
  19. ^ab"Dojo or JQuery".NotADojoGuru. April 6, 2012. RetrievedNovember 21, 2012.

Further reading

[edit]

External links

[edit]
Dialects
Engines
(comparison)
Frameworks
Client-side
Server-side
Multiple
  • Cappuccino
Libraries
People
Other
.NET
C++
ColdFusion
Common Lisp
Haskell
Java
JavaScript
Perl
PHP
Python
Ruby
Rust
Scala
Smalltalk
Other languages
Low-level platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
OnWindows
OnUnix,
underX11
OnBeOS,Haiku
OnAndroid
CLI
Low Level Cross-platform
CLI
C
Java
High-level, platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
Object Pascal
Objective-C,Swift
C++
CLI
OnWindows
CLI
C++
Object Pascal
OnUnix,
underX11
OnAndroid
High-level, cross-platform
C
C++
Objective-C
CLI
Adobe Flash
Go
Haskell
Java
JavaScript
Common Lisp
Lua
Pascal
Object Pascal
Perl
PHP
Python
Ruby
Tcl
XML
shell
Dart
International
National
Retrieved from "https://en.wikipedia.org/w/index.php?title=Dojo_Toolkit&oldid=1259356436"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp