World Library  
Flag as Inappropriate
Email this Article

Dojo Toolkit

 

Dojo Toolkit

Dojo Toolkit
Developer(s) Dojo Foundation
Stable release 1.10.0 / June 13, 2014 (2014-06-13)
Development status Active
Written in JavaScript
Operating system Cross-platform
Type JavaScript toolkit (or library)
License The modified BSD license or the Academic Free License (≥ 2.1)
Website http://dojotoolkit.org

Dojo Toolkit (stylized as dōjō toolkit) is an

  • Orchard, Leslie M. (November 24, 2008). Concise Guide to Dojo (1st ed.).  
  • Russell, Matthew A. (June 24, 2008). Dojo: The Definitive Guide (1st ed.).  
  • Riecke, Craig; Gill, Rawld; Russell, Alex (June 18, 2008). Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences (1st ed.).  
  • Holzner, Steven (December 14, 2008). The Dojo Toolkit: Visual QuickStart Guide (1st ed.).  
  • Zammetti, Frank (September 19, 2008). Practical Dojo Projects (1st ed.).  
  • Hayes, Kyle (November 17, 2009). Getting StartED with Dojo JavaScript Toolkit (1st ed.).  
  • Svensson, Peter (November 24, 2008). Learning Dojo (1st ed.).  
  • Harmon, James E. (June 21, 2008). Dojo: Using the Dojo JavaScript Library to Build Ajax Applications (1st ed.).  
  • Orchard, Leslie M.; Pehlivanian, Ara; Koon, Scott; Jones, Harley (August 31, 2009). Professional JavaScript Frameworks: Prototype,YUI, ExtJS, Dojo and MooTools (1st ed.).  

Further reading

  1. ^ A Brief History of Dojo
  2. ^ [cense]
  3. ^ a b The Dojo Foundation
  4. ^ "Adobe Flash Player Version Penetration". Adobe website. 
  5. ^ "Dojo Data". 2007-01-11. Archived from the original on 2007-02-13. Retrieved 2007-02-03. 
  6. ^ [1]
  7. ^ a b c d e f g h i A Visual History of Dojo. Retrieved 2012-04-20.
  8. ^ a b c d e f g h i j k l m n o p OpenLogic Exchange Dojo Toolkit Download. Retrieved on 2012-04-20
  9. ^ The Dojo Loader. Retrieved on 2012-04-20
  10. ^ Dojo 1.9.2 and more
  11. ^ http://dojotoolkit.org/documentation/tutorials/1.10/start/ "Which Dojo Version?"
  12. ^ a b "An Interview with Dojo Toolkit Creator Dylan Schiemann". Nettuts+. 2012-08-16. Retrieved 2012-11-21. 
  13. ^ "Dojo 1.7 Released!". Dojo Toolkit Blog. 2011-01-01. Retrieved 2012-11-21. 
  14. ^ "What’s coming in Dojo 1.8". Dojo Toolkit Blog. 2012-02-09. Retrieved 2012-11-21. 
  15. ^ a b "what is the raison detre for dojo 2.0". dojo-contributors. 2012-10-11. Retrieved 2012-11-29. 
  16. ^ Schiemann, Dylan (2012-04-30). "jQuery and the long term viability of Dojo". Dojo-interest. Retrieved 2012-11-29. 
  17. ^ "Criticism of Dojo?". Seven Foot Tall Cactus. 2012-08-17. Retrieved 2012-11-21. 
  18. ^ a b "Dojo or JQuery". NotADojoGuru. 2012-04-06. Retrieved 2012-11-21. 
  19. ^ [2]
  20. ^ [3]
  21. ^ [4]
  22. ^ [5]
  23. ^ [6]
  24. ^ [7]
  25. ^ [8]
  26. ^ "IBM Contributes Ajax Software Development Technology to Open Source Community". IBM Press Release. 2006-06-05. Retrieved 2007-02-03. 
  27. ^ "Sun Joins the OpenAJAX Alliance and Dojo Foundation". Sun Microsystems Press Release. 2006-06-16. Retrieved 2007-02-03. 
  28. ^ "MarketScope for Ajax Technologies and Rich Internet Application Platforms". Gartner Group. December 2009. Retrieved 17 March 2014. 
  29. ^ Dojo and Zend Framework Partnership Announcement

References

  • Dojo toolkit website

External Links

See also

In 2006, both IBM[26] and Sun Microsystems[27] announced official support for Dojo, including code contributions. A Gartner report in 2009 noted that IBM support Dojo across 30 of their products.[28] Zend Technologies, the company behind the PHP core, announced a partnership with Dojo in 2008, incorporating the toolkit into the Zend Framework.[29]

  • AnimeJ
  • CometD (for the Comet content-streaming paradigm)
  • DWR
  • EmbedJS
  • Fast Messenger
  • General Interface
  • Grunt [20]
  • Intern [21]
  • Lo-dash [22]
  • Lucid Desktop [23]
  • Maqetta
  • OpenCoWeb
  • Persevere [24]
  • RequireJS [25]
  • Wink Toolkit
  • Zazl

The Dojo Foundation also helps the following projects, in inclusion to the Dojo Toolkit:

Its sponsors and members are:

[3] The Dojo Foundation is a

Dojo Foundation and sponsorship

The upcoming 2.0 release is expected to remove much of the deprecated API but be mostly compatible with 1.8.

Early users faced a difficult transition to the 1.0 release after the toolkit was totally rewritten.[15] The move to AMD in recent versions has been similarly problematic.[18] 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.

API stability

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."[12]

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

Learning curve

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. [16]

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.[14][15]

Documentation

Earlier versions of Dojo had a reputation for being bulky and slow to load.[12] 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 AMD and a "nano" loader.[13]

Loading

Criticisms

Versions 1.4 through 1.10 continue to receive new point releases as important changes are backported. Work on version 2.0 is ongoing, with a release expected in later 2014.[11]

Version number Release date Additional notes
0.1 2005-08-30 [7]
0.2 2005-12-14 [7]
0.3 2006-05-12 [7]
0.4 2006-11-05 [7]
0.9 2007-09-14 [7] Total rewrite.
1.0 2007-11-05 [7] First stable release.
1.0.1 2007-09-13 [8]
1.0.2 2007-09-13 [8]
1.1 2008-03-26 [7]
1.1.1 2008-05-13 [8]
1.2 2008-10-02 [7]
1.2.1 2008-11-06 [8]
1.2.2 2008-11-16 [8]
1.2.3 2008-12-08 [8]
1.3.0 2009-03-26 [7]
1.3.1 2009-04-30 [8]
1.3.2 2009-07-15 [8]
1.4.0 2009-12-07 [8]
1.4.1 2010-01-25 [8]
1.4.2 2010-03-10 [8]
1.4.3 2010-05-01 [8]
1.4.4 2012-06-22 Maintenance release that adds support for Internet Explorer 9 and Firefox 4+.
1.4.5 2010-08-24
1.5.0 2010-07-22 [8] "Claro" theme.
1.5.1 2011-04-12
1.5.2 2012-02-09
1.5.3 2010-08-24
1.6.0 2011-03-15 [8] Support HTML5 data attributes.
1.6.1 2011-05-20 [8]
1.6.2 2010-08-24
1.7.0 2011-10-27 Start using AMD (Asynchronous Module Definition) API.[9]
1.7.1 2011-12-16
1.7.2 2012-02-16
1.7.3 2012-06-22
1.7.4 2012-10-05
1.7.5 2013-06-14
1.8.0 2012-08-15 Documentation overhaul.
1.8.1 2012-10-14 [8]
1.8.2 2012-12-12
1.8.3 2012-12-19
1.8.4 2013-05-01
1.8.5 2013-06-14
1.8.6 2014-02-20
1.9.0 2013-05-01
1.9.1 2013-06-14
1.9.2 2013-12-16 [10]
1.9.3 2014-02-20
1.10.0 2014-06-13

Release history

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 use of java.[6]

Dojo can be used in JavaScript-based Adobe AIR applications. It has been modified to meet AIR's security requirements.

Support for Adobe Integrated Runtime (AIR)

  • CsvStore: a read-only store that reads tabular data from comma-separated values files
  • OpmlStore: a read-only store that reads hierarchical data from OPML format files
  • YahooStore: a read-only store that fetches search results from the Yahoo! Search web service
  • DeliciousStore: a read-only store that fetches bookmarks from the del.icio.us web service
  • RdfStore: a read-write store that uses SPARQL to talk to RDF data servers including, for example, the Rhizome RDF application server.

As of January 2007, Dojo includes the following example server-side datastore implementations in the dojo.data namespace:[5]

Server-side data storage

In addition to providing support functions for reading and writing cookies, Dojo also provides 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. On Firefox 2, it 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,[4] this makes the storage mechanism accessible for much of the web's installed base. For a web application that is being 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.

Client-side data storage

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). Pre-built profiles for some common use cases are available for download from the same location as the full toolkit.

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

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.

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.

Packaging system

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.

Asynchronous communication

  • Menus, tabs, and tooltips
  • Sortable tables
  • Dynamic charts
  • 2D vector drawings
  • Animated effects—fades, wipes and slides—facilities for custom animation effects

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:

Widgets

Features

  • 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 in dojo or dijit.
  • util includes build tools such as optimization, documentation, style-checking, and testing.

The Dojo Toolkit is organized in several parts:

Dojo is completely open-source. The entire toolkit can be downloaded as a ZIP and is also hosted on the Google CDN. The toolkit includes about three thousand JavaScript modules, in addition to images and other resources.

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.

Overview

Contents

  • Overview 1
  • Features 2
    • Widgets 2.1
    • Asynchronous communication 2.2
    • Packaging system 2.3
    • Client-side data storage 2.4
    • Server-side data storage 2.5
    • Support for Adobe Integrated Runtime (AIR) 2.6
  • Release history 3
  • Criticisms 4
    • Loading 4.1
    • Documentation 4.2
    • Learning curve 4.3
    • API stability 4.4
  • Dojo Foundation and sponsorship 5
  • See also 6
  • External Links 7
  • References 8
  • Further reading 9

created with the goal to promote the adoption of the toolkit. [3]

This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.