Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Overview  





2 Features  



2.1  Widgets  





2.2  Asynchronous communication  





2.3  Packaging system  





2.4  Client-side data storage  





2.5  Server-side data storage  





2.6  Support for Adobe Integrated Runtime (AIR)  







3 Criticisms  



3.1  Loading  





3.2  Documentation  





3.3  Learning curve  





3.4  API stability  







4 See also  





5 References  





6 Further reading  





7 External links  














Dojo Toolkit






Deutsch
Español
فارسی
Français

עברית

Nederlands

Polski
Português
Русский

Українська

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Dojo Toolkit (before version 2), Dojo (since version 2)
Developer(s)Dojo Foundation
Initial releaseMarch 2005; 19 years ago (2005-03)[1]
Stable release

7.0.6 / January 20, 2021; 3 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.x https://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)
LicenseThe modified BSD license or the Academic Free License (≥ 2.1)[5]
Websitehttps://dojotoolkit.org, https://dojo.io/

Dojo Toolkit (stylized as dōjō toolkit) is an open-source modular JavaScript library (or more specifically JavaScript 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 is dual-licensed under the modified BSD license or the Academic Free License (≥ 2.1).[5]

The Dojo Foundation was a non-profit organization created with the goal to promote the adoption of the toolkit. In 2016, the foundation merged with jQuery Foundation to become JS Foundation.[6][7][8]

Overview[edit]

Dojo is a JavaScript 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 under Node.js); it establishes a framework for defining modules of code and managing their interdependencies; it provides build tools for optimizing JavaScript and CSS, generating documentation, and unit testing; it supports internationalization, localization, and accessibility; and it provides a rich suite of commonly needed utility classes and user-interface widgets.[citation needed]

Dojo is completely open 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:

Features[edit]

Widgets[edit]

Dojo widgets are components — comprising JavaScript code, HTML markup, and CSS style declarations — that provide multi-browser (not to be confused with cross-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 object XMLHttpRequest. Dojo provides an abstracted wrapper (dojo.xhr) around various web browsers' implementations of XMLHttpRequest, and dojo.io also supports other transports (such as hidden IFrames) 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 (via XMLHttpRequest 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 uses Rhino 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 permits caching of the code (most web 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]

In addition to providing support functions for reading and writing cookies, Dojo formerly 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. It works across existing web browsers, including Internet Explorer, Firefox, and Safari. When included in a web page, Dojo Storage determines the best method for persistently storing information. Firefox 2 uses native browser persistence; on other browsers, it uses a hidden Flash applet. With Flash 6+ being installed on about 95% of computers connected to the web,[10] this makes 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 use XPCOM on Firefox and ActiveX on Internet Explorer to persist information. The programmer using Dojo Storage is abstracted from the storage mechanism used and is presented with a simple hash 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 example server-side datastore implementations in the dojo.data namespace:[11]

Support for Adobe Integrated Runtime (AIR)[edit]

Dojo can be used in JavaScript-based Adobe 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 a CDN. Addressing these problems was the major goal of Dojo 1.7, which introduced asynchronous 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 to AMD 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 popular jQuery.[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. ^ a b "A Brief History of Dojo — The Dojo Toolkit - Reference Guide". dojotoolkit.org. Retrieved January 16, 2024.
  • ^ "Dojo Blog". dojo.io. Retrieved January 16, 2024.
  • ^ "Release v8.0.0-beta.3 · dojo/framework · GitHub". github.com. March 2, 2021. Retrieved March 10, 2021.
  • ^ "Samples · TypeScript". Archived from the original on March 27, 2016.
  • ^ a b "Dojo Toolkit License". Dojo Toolkit. Retrieved April 17, 2017.
  • ^ "jQuery Foundation and Dojo Foundation to Merge". Official jQuery Blog. September 1, 2015. Retrieved July 2, 2018.
  • ^ "jQuery Foundation and Dojo Foundation to Merge". PRWeb. July 1, 2015. Retrieved July 2, 2018.
  • ^ "Announcing the JS Foundation!". SitePen. October 17, 2016. Retrieved July 2, 2018.
  • ^ "What is Asynchronous JavaScript and XML (AJAX)?". TheServerSide.com. Retrieved July 4, 2023.
  • ^ "Adobe Flash Player Version Penetration". Adobe website.
  • ^ "Dojo Data". January 11, 2007. Archived from the original on February 13, 2007. Retrieved February 3, 2007.
  • ^ "Development and JavaScript Blog".
  • ^ a b "An Interview with Dojo Toolkit Creator Dylan Schiemann". Nettuts+. August 16, 2012. Retrieved November 21, 2012.
  • ^ "Dojo 1.7 Released!". Dojo Toolkit Blog. January 1, 2011. Retrieved November 21, 2012.
  • ^ "What's coming in Dojo 1.8". Dojo Toolkit Blog. February 9, 2012. Retrieved November 21, 2012.
  • ^ a b "what is the raison detre for dojo 2.0". dojo-contributors. October 11, 2012. Retrieved November 29, 2012.Archived 2017-12-01 at the Wayback Machine
  • ^ Schiemann, Dylan (April 30, 2012). "jQuery and the long term viability of Dojo". Dojo-interest. Archived from the original on October 29, 2014. Retrieved November 29, 2012.
  • ^ "Criticism of Dojo?". Seven Foot Tall Cactus. August 17, 2012. Archived from the original on October 26, 2012. Retrieved November 21, 2012.
  • ^ a b "Dojo or JQuery". NotADojoGuru. April 6, 2012. Retrieved November 21, 2012.
  • Further reading[edit]

  • Russell, Matthew A. (June 24, 2008). Dojo: The Definitive Guide (1st ed.). O'Reilly Media. p. 500. ISBN 978-0-596-51648-2.
  • Riecke, Craig; Gill, Rawld; Russell, Alex (June 18, 2008). Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences (1st ed.). Pragmatic Bookshelf. p. 568. ISBN 978-1-934356-11-1.
  • Holzner, Steven (December 14, 2008). The Dojo Toolkit: Visual QuickStart Guide (1st ed.). Peachpit Press. p. 208. ISBN 978-0-321-60512-2.
  • Zammetti, Frank (September 19, 2008). Practical Dojo Projects (1st ed.). Apress. p. 500. ISBN 978-1-4302-1066-5.
  • Hayes, Kyle (November 17, 2009). Getting StartED with Dojo JavaScript Toolkit (1st ed.). Friends of Ed. p. 350. ISBN 978-1-4302-2521-8. Archived from the original on April 22, 2010. Retrieved August 15, 2009.
  • Svensson, Peter (November 24, 2008). Learning Dojo (1st ed.). Packt Publishing. p. 264. ISBN 978-1-84719-268-4.
  • Harmon, James E. (June 21, 2008). Dojo: Using the Dojo JavaScript Library to Build Ajax Applications (1st ed.). Addison-Wesley Professional. p. 336. ISBN 978-0-13-235804-0.
  • Orchard, Leslie M.; Pehlivanian, Ara; Koon, Scott; Jones, Harley (August 31, 2009). Professional JavaScript Frameworks: Prototype,YUI, ExtJS, Dojo and MooTools (1st ed.). Wrox Press. p. 888. ISBN 978-0-470-38459-6. Archived from the original on July 6, 2011. Retrieved August 15, 2009.
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=Dojo_Toolkit&oldid=1222526195"

    Categories: 
    JavaScript libraries
    Ajax (programming)
    JavaScript-based HTML editors
    Software using the Academic Free License
    Software using the BSD license
    Hidden categories: 
    Webarchive template wayback links
    Articles with short description
    Short description is different from Wikidata
    Use mdy dates from June 2022
    All articles with unsourced statements
    Articles with unsourced statements from April 2023
    Wikipedia articles in need of updating from November 2012
    All Wikipedia articles in need of updating
    Articles needing additional references from April 2023
    All articles needing additional references
    Articles with unsourced statements from April 2011
    Articles with VIAF identifiers
    Articles with GND identifiers
    Articles with LCCN identifiers
     



    This page was last edited on 6 May 2024, at 13:18 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki