SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
0 to Production


December 3, 2008
Peter Higgins
SpringOne Americas
Me.



© SitePen, Inc. 2008. All Rights Reserved
Show of Hands?




© SitePen, Inc. 2008. All Rights Reserved
Quick Start



© SitePen, Inc. 2008. All Rights Reserved
Notes about Dojo


            Long Standing Development
            Large, Active Developer Base
            Friendly Professional Community
            Liberally Licensed, Clean IP




© SitePen, Inc. 2008. All Rights Reserved
Notes about Dojo


                    Comprised of Base, Core,
                    Dijit, and DojoX
                    Uni ed Tools and
                    Components
                    Extras: ShrinkSafe, Build
                    Utils
                    D.O.H.




© SitePen, Inc. 2008. All Rights Reserved
Base



© SitePen, Inc. 2008. All Rights Reserved
Using Dojo Base

         <html>
           <head>

                    <title>Hello, Dojo</title>

                    <!-- load Dojo from a CDN: -->
                    <script type=quot;text/javascriptquot;
                      src=quot;http://o.aolcdn.com/dojo/1.2/dojo/dojo.xd.jsquot;>
                    </script>

           </head>
           <body>
           </body>
         </html>




© SitePen, Inc. 2008. All Rights Reserved
Aka: dojo.js (26KB of Joy)
                    Ajax: dojo.xhr, dojo.xhrGet, dojo.xhrPost ...
                    Events: normalization, keys, Objects or Nodes
                    DOM/CSS: dojo.byId, dojo.style, dojo.place, dojo.attr
                    Animation: dojo.fadeIn/Out, dojo.animateProperty
                    Query/NodeList: CSS3 Selectors. aka: All of the Above
                    Advanced JS: dojo.delegate, .hitch, .partial, .exists ...
                          dojo.declare
                    Native JS: forEach, map, lter, some, every, indexOf ...
                    Browser Sni ng: dojo.isIE < 7, isFF, isWebKit ...


© SitePen, Inc. 2008. All Rights Reserved
Patterns in Dojo
         // style and add class to a node:
         dojo.addClass(“someNode”, “someClass”);
         dojo.style(“someNode”, { opacity:0.5, lineHeight:”1.3em” });
         dojo.attr(“someNode”, { id:”newId” });

         // or chained
         dojo.query(“#someNode”)
             .addClass(“someClass”)
             .attr({ id:”newId” })
             .style({ opacity:0.5, lineHeight:”1.3em” })

         // connect:
         dojo.connect(dojo.byId(“foo”), “onclick”, function(e){...});
         // or connect:
         dojo.query(“#foo”).connect(“onclick”, function(e){ ... });
         // or sugar:
         dojo.query(“#foo”).onclick(function(e){ ... });




© SitePen, Inc. 2008. All Rights Reserved
Simple OO, Simulated Inheritance
         dojo.declare(“some.Person”, null, {
             name: ”default”,
             constructor: function(args){
                 dojo.mixin(this, args);
             }
         });

         dojo.declare(“some.Employee”, some.Person, {
             employeeId: 0
         });

         var bob = new some.Person({ name:”Bob Bobson” });
         var joy = new some.Employee({ name:”Joy”, employeeId:24 });




© SitePen, Inc. 2008. All Rights Reserved
Package System == modular code
        And more...                                     Works with Dojo and custom code


                    Local:
                          dojo.require(“dojo.io.script”);
                          dojo.require(“my.Widget”);
                    Robust:
                          dojo.registerModulePath(“external”, “/external/js”);
                          dojo.require(“external.Thinger”);
                    Easy:
                          dojo.provide(“my.Widget”);
                    Ready: dojo.addOnLoad, .addOnUnLoad ...


© SitePen, Inc. 2008. All Rights Reserved
The   Core



© SitePen, Inc. 2008. All Rights Reserved
More Patterns
                    Use at will - everything additive.
                    No dependency tracking - just dojo.require(“it”)
                    Few, if any, “rules”
                    Scale: Grows to t your needs




© SitePen, Inc. 2008. All Rights Reserved
Added Joy - a require() away
                    dojo.data - Uni ed Data API
                    dojo.dnd - Drag and Drop API
                    dojo.fx / dojo.NodeList-fx - Additional Advanced FX
                    dojo.i18n - Internationalization tools
                    dojo.string, dojo.date, dojo.regexp - Common utility
                    dojo.io.iframe, dojo.io.script, dojo.rpc - Advanced IO


                    ... more: dojo.behavior, dojo.html, dojo.gears,
                    dojo.cookie, dojo.parser, dojo.jaxer ...



© SitePen, Inc. 2008. All Rights Reserved
Additional Debugging

                 FireBug Lite Shipped
                     console.* provided in less
                     sane browsers
                 Load with djCon g =
                 { isDebug:true }
                 if(dojo.con g.isDebug){ .. }




© SitePen, Inc. 2008. All Rights Reserved
The Dojo Widget Framework




© SitePen, Inc. 2008. All Rights Reserved
Take Your Pick
                    Compartmentalized Behavior using Existing Markup
                    Fully dynamic, reusable Templated components
                    Extend existing or Create ...




© SitePen, Inc. 2008. All Rights Reserved
Includes Suite of Widgets

                 Layouts - Accordions, Tabs
                 Form - Validation and
                 more ...
                 WYSIWYG Editor
                 Tree, Sliders, ProgressBar ...




© SitePen, Inc. 2008. All Rights Reserved
Setup is Easy
          <html>
            <head>
              <title>index.html</title>
              <!-- some css -->
              <link rel=”stylesheet”
                href=”dojotoolkit/dijit/themes/tundra/tundra.css”>

               <script type=quot;text/javascriptquot;
         	

 	

 src=quot;dojotoolkit/dojo/dojo.jsquot;></script>
            </head>
            <body class=”tundra”>
            </body>
         </html>




© SitePen, Inc. 2008. All Rights Reserved
Flexible Instantiation
         // load the resource:
         dojo.require(“dijit.dijit”); // Base Dijit
         dojo.require(“dijit.Dialog”); // Dialog Code

         // create programatically:
         var myDialog = new dijit.Dialog({
         title:”Login”
         }, “formArea”);

         <!-- or declaratively in markup -->
         <div id=”formArea” dojoType=”dijit.Dialog” title=”Login”>
         <p>...</p>
         </div>

         // access the instance:
         dijit.byId(“formArea”).show(); // myDialog.show();




© SitePen, Inc. 2008. All Rights Reserved
CSS Driven Skinning

                 Three full themes:
                      Tundra
                      Soria
                      Nihilo


                 Fully customizable


                 Even easier with
                 constraints:
                     Embedded WebKit ?



© SitePen, Inc. 2008. All Rights Reserved
Full Localization (i18n) Support




© SitePen, Inc. 2008. All Rights Reserved
Full Accessibility (a11y) Support


                                            Screen reader support

                                            High contrast mode support

                                            Keyboard navigation



                                            ... with every Dijit




© SitePen, Inc. 2008. All Rights Reserved
Custom Widgets
         dojo.provide(“my.Widget”);
         dojo.require(“dijit._Widget”);
         dojo.require(“dijit._Templated”);

         // define:
         dojo.declare(“my.Widget”, [dijit._Widget, dijit._Templated], {
           value:”default”,
           templatePath: dojo.moduleUrl(“my.templates”, “Widget.html”,
           postCreate: function(args){
             // init code
           }
         });

         // instantiate:
         new my.Widget({ value:”bar” }, “someNode”);
         // declarative way:
         <input id=”someNode” dojoType=”my.Widget” value=”Foo”>




© SitePen, Inc. 2008. All Rights Reserved
Custom Extensions



                                            Leverage the Dijit widget
                                            system for speci c purposes

                                            Reuse Existing a11y and i18n
                                            code in Dijit




© SitePen, Inc. 2008. All Rights Reserved
Custom Widgets: Subclassing
          dojo.require(“dijit.Dialog”);

         // “subclassing”:
         dojo.declare(“my.Dialog”, dijit.Dialog, {

               canShow: true,

               show: function(){
                 if(this.canShow){
                   // then call inherited:
                   this.inherited(arguments);
                 }
               }

         });

         var showable = new my.Dialog({ canShow: false });




© SitePen, Inc. 2008. All Rights Reserved
Ultra Rapid Prototyping
          <div id=”foo” dojoType=”dijit.Dialog” title=”Hello”>
            <p> ... </p>

               <script type=”dojo/method” event=”hide”>
                 // override instance’s hide() method ... test.
               </script>

               <script type=”dojo/connect” event=”show”>
                 // monitor instance’s show() method ...
               </script>

         </div>




© SitePen, Inc. 2008. All Rights Reserved
Helping Designers
         /* Convenience Rules added to <html> element */
         .mybox {
            width:250px;
         }

         /* love the quirks: */
         .dj_ie6 .mybox {
            margin-right:1px
         }

         .dj_ie7 .mybox {
            margin-right:2px;
         }

         .dj_quirks .mybox {
            margin:3px;
         }




© SitePen, Inc. 2008. All Rights Reserved
© SitePen, Inc. 2008. All Rights Reserved
Extensions, Extras, Experiments
                    Extend Dijit:
                          dojox.widget, dojox.layout, dojox.form
                    Additional FX: dojox.fx
                          Morph, Text, Extras ...
                    Image Gadgets:
                          FlickrBadge, Lightbox (Nano), SlideShow ...
                    Comet: dojox.cometd
                    Advanced IO:
                          RPC, REST, SMD, ScriptFrame ...


© SitePen, Inc. 2008. All Rights Reserved
... there’s more: DojoX GFX




                                Cross-browser vector graphics
                            GFX API, Charting: 2d / 3d, GFX Animation

© SitePen, Inc. 2008. All Rights Reserved
DojoX: DataGrid




                                   Fully dojo.data-Ready
                            Lazy Row Selection,Virtual Scrolling
                       Simplified Use: Layout Ready, Easy instantiation

© SitePen, Inc. 2008. All Rights Reserved
dojox.data Stores
                    AndOrReadStore          GoogleSearchStore
                    AppStore                HtmlStore
                    AtomReadStore           jsonPathStore
                    CouchDBRestStore        jsonRestStore
                    CssRuleStore            OpmlStore
                    CsvStore                QueryReadStore
                    FileStore               ServiceStore
                    FlickrRestStore /       S3Store
                    FlickrStore             WikipediaStore
                    GoogleFeedStore         XmlStore

© SitePen, Inc. 2008. All Rights Reserved
Other Goodies
                    dojox.av - Audio / Video helpers
                    dojox.dtl - django templating system implementation
                    dojox.o , dojox.storage - O ine helpers
                    dojox.lang - Advanced JS techniques
                    dojox.xmpp - Full protocol implementation
                    dojox.validate - Regexps + Functions


                    ... much, much more!




© SitePen, Inc. 2008. All Rights Reserved
Simple Gems: Google Analytics
                   Why Write This?

              <script type=quot;text/javascriptquot;>
              var gaJsHost = ((quot;https:quot; == document.location.protocol) ?
              quot;https://ssl.quot; : quot;http://www.quot;);
              document.write(unescape(quot;%3Cscript src='quot; + gaJsHost + quot;google-
              analytics.com/ga.js' type='text/javascript'%3E%3C/script%3Equot;));
              </script>
              <script type=quot;text/javascriptquot;>
              var pageTracker = _gat._getTracker(quot;UA-xxxxxx-xquot;);
              pageTracker._trackPageview();
              </script>




© SitePen, Inc. 2008. All Rights Reserved
Simple Gems: Google Analytics with Dojo
                   Just Write This:


              // load the resource
              dojo.require(“dojox.analytics.Urchin”);

              <!-- and create in markup -->
              <div dojoType=”dojox.analytics.Urchin”
              acct=”12345-UA-23”></div>

              // or in script:
              new dojox.analytics.Urchin({ acct:”UA-xxxxx-x” });




© SitePen, Inc. 2008. All Rights Reserved
in Production



© SitePen, Inc. 2008. All Rights Reserved
Dojo Build System
                    Reduce number of HTTP requests
                          Template Interning and resource concatenation
                    Reduce JavaScript le size:
                          Remove Comments and whitespace
                          Variable obfuscation (ShrinkSafe)
                    CSS Optimization
                          Comment Removal
                          @import “...” concatenation
                    StripConsole options


© SitePen, Inc. 2008. All Rights Reserved
Advanced Builds
                    Stubs Dojo (6k dojo.js)
                    Custom Base
                    “Layers”
                          Automatic dependency tracking
                          Cross-dependent layers
                          RestoreRequire
                    X-Domain Dojo - Local CDN
                    BuildExclude syntax



© SitePen, Inc. 2008. All Rights Reserved
D.O.H - Unit test Suite




           Supports Build Up, Tear Down, sync or async Testing
                doh.robot - Automated UI Unit testing

© SitePen, Inc. 2008. All Rights Reserved
Resources



© SitePen, Inc. 2008. All Rights Reserved
Basic Documentation
                    Full API Docs:
                          http://api.dojotoolkit.org
                    Full On-Line Docs:
                          http://docs.dojocampus.org
                    O ine Docs:
                          http://sitepen.com/labs/toolbox
                    Tutorials, Blogs, Examples:
                          http://dojocampus.org




© SitePen, Inc. 2008. All Rights Reserved
Additional Documentation




                                                 Dojo Dead Trees!


© SitePen, Inc. 2008. All Rights Reserved
That’s



© SitePen, Inc. 2008. All Rights Reserved
Questions?



© SitePen, Inc. 2008. All Rights Reserved

Mais conteúdo relacionado

Mais procurados

Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014
Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014
Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014Endava
 
How dojo works
How dojo worksHow dojo works
How dojo worksAmit Tyagi
 
Rich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitRich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitalexklaeser
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the CloudJames Thomas
 
Jquery dojo slides
Jquery dojo slidesJquery dojo slides
Jquery dojo slideshelenmga
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastGabriel Hamilton
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks TriviaCognizant
 
Dojo: Getting Started Today
Dojo: Getting Started TodayDojo: Getting Started Today
Dojo: Getting Started TodayGabriel Hamilton
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeLaurence Svekis ✔
 
Better Selenium Tests with Geb - Selenium Conf 2014
Better Selenium Tests with Geb - Selenium Conf 2014Better Selenium Tests with Geb - Selenium Conf 2014
Better Selenium Tests with Geb - Selenium Conf 2014Naresha K
 
JavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilderJavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilderAndres Almiray
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQueryAnil Kumar
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)jeresig
 
Node.js in action
Node.js in actionNode.js in action
Node.js in actionSimon Su
 
State of jQuery and Drupal
State of jQuery and DrupalState of jQuery and Drupal
State of jQuery and Drupaljeresig
 
Why and How to Use Virtual DOM
Why and How to Use Virtual DOMWhy and How to Use Virtual DOM
Why and How to Use Virtual DOMDaiwei Lu
 

Mais procurados (20)

Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014
Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014
Angularjs vs Dojo toolkit | SuperSpeaker@CodeCamp Iasi 2014
 
How dojo works
How dojo worksHow dojo works
How dojo works
 
Dojo & HTML5
Dojo & HTML5Dojo & HTML5
Dojo & HTML5
 
Rich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitRich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkit
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the Cloud
 
Jquery dojo slides
Jquery dojo slidesJquery dojo slides
Jquery dojo slides
 
dojo.Patterns
dojo.Patternsdojo.Patterns
dojo.Patterns
 
Dojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, FastDojo: Beautiful Web Apps, Fast
Dojo: Beautiful Web Apps, Fast
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
 
Dojo: Getting Started Today
Dojo: Getting Started TodayDojo: Getting Started Today
Dojo: Getting Started Today
 
JavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your codeJavaScript Advanced - Useful methods to power up your code
JavaScript Advanced - Useful methods to power up your code
 
The jQuery Library
The  jQuery LibraryThe  jQuery Library
The jQuery Library
 
Better Selenium Tests with Geb - Selenium Conf 2014
Better Selenium Tests with Geb - Selenium Conf 2014Better Selenium Tests with Geb - Selenium Conf 2014
Better Selenium Tests with Geb - Selenium Conf 2014
 
JavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilderJavaOne TS-5098 Groovy SwingBuilder
JavaOne TS-5098 Groovy SwingBuilder
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQuery
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)
 
ActiveDOM
ActiveDOMActiveDOM
ActiveDOM
 
Node.js in action
Node.js in actionNode.js in action
Node.js in action
 
State of jQuery and Drupal
State of jQuery and DrupalState of jQuery and Drupal
State of jQuery and Drupal
 
Why and How to Use Virtual DOM
Why and How to Use Virtual DOMWhy and How to Use Virtual DOM
Why and How to Use Virtual DOM
 

Semelhante a Zero To Dojo

The Dojo Build System
The Dojo Build SystemThe Dojo Build System
The Dojo Build Systemklipstein
 
Bubbles & Trees with jQuery
Bubbles & Trees with jQueryBubbles & Trees with jQuery
Bubbles & Trees with jQueryBastian Feder
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009Christopher Judd
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPnsandonato
 
Developer Student Clubs NUK - Flutter for Beginners
Developer Student Clubs NUK - Flutter for BeginnersDeveloper Student Clubs NUK - Flutter for Beginners
Developer Student Clubs NUK - Flutter for BeginnersJiaxuan Lin
 
Simple web browser
Simple web browserSimple web browser
Simple web browserSohag Babu
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overviewjeresig
 
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Peter Martin
 
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios
 
How to develop nice portlet with Juzu framework
How to develop nice portlet with Juzu frameworkHow to develop nice portlet with Juzu framework
How to develop nice portlet with Juzu frameworkNguyễn Tuyến
 
Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGiDavid Bosschaert
 
Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert
Maximise the Power of OSGi - Carsten Ziegeler & David BosschaertMaximise the Power of OSGi - Carsten Ziegeler & David Bosschaert
Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaertmfrancis
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersTodd Anglin
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)jeresig
 
a friend in need-a js indeed / Yonatan levin
a friend in need-a js indeed / Yonatan levina friend in need-a js indeed / Yonatan levin
a friend in need-a js indeed / Yonatan levingeektimecoil
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeedYonatan Levin
 

Semelhante a Zero To Dojo (20)

The Dojo Build System
The Dojo Build SystemThe Dojo Build System
The Dojo Build System
 
Trimming The Cruft
Trimming The CruftTrimming The Cruft
Trimming The Cruft
 
Bubbles & Trees with jQuery
Bubbles & Trees with jQueryBubbles & Trees with jQuery
Bubbles & Trees with jQuery
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
 
YUI 3
YUI 3YUI 3
YUI 3
 
Developer Student Clubs NUK - Flutter for Beginners
Developer Student Clubs NUK - Flutter for BeginnersDeveloper Student Clubs NUK - Flutter for Beginners
Developer Student Clubs NUK - Flutter for Beginners
 
Simple web browser
Simple web browserSimple web browser
Simple web browser
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
Developing a Joomla 3.x Component using RAD FOF- Part 2: Front-end + demo - J...
 
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
Nagios Conference 2012 - Eric Loyd - Nagios Implementation Case Eastman Kodak...
 
How to develop nice portlet with Juzu framework
How to develop nice portlet with Juzu frameworkHow to develop nice portlet with Juzu framework
How to develop nice portlet with Juzu framework
 
Maximize the power of OSGi
Maximize the power of OSGiMaximize the power of OSGi
Maximize the power of OSGi
 
Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert
Maximise the Power of OSGi - Carsten Ziegeler & David BosschaertMaximise the Power of OSGi - Carsten Ziegeler & David Bosschaert
Maximise the Power of OSGi - Carsten Ziegeler & David Bosschaert
 
Extend sdk
Extend sdkExtend sdk
Extend sdk
 
Test02
Test02Test02
Test02
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)
 
a friend in need-a js indeed / Yonatan levin
a friend in need-a js indeed / Yonatan levina friend in need-a js indeed / Yonatan levin
a friend in need-a js indeed / Yonatan levin
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeed
 

Mais de Peter Higgins

Mais de Peter Higgins (7)

Jsconf.us.2013
Jsconf.us.2013Jsconf.us.2013
Jsconf.us.2013
 
has("builds")
has("builds")has("builds")
has("builds")
 
has.js
has.jshas.js
has.js
 
Just JavaScript
Just JavaScriptJust JavaScript
Just JavaScript
 
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
 
Txjs
TxjsTxjs
Txjs
 
dojo.things()
dojo.things()dojo.things()
dojo.things()
 

Último

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Último (20)

Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Zero To Dojo

  • 1. 0 to Production December 3, 2008 Peter Higgins SpringOne Americas
  • 2. Me. © SitePen, Inc. 2008. All Rights Reserved
  • 3. Show of Hands? © SitePen, Inc. 2008. All Rights Reserved
  • 4. Quick Start © SitePen, Inc. 2008. All Rights Reserved
  • 5. Notes about Dojo Long Standing Development Large, Active Developer Base Friendly Professional Community Liberally Licensed, Clean IP © SitePen, Inc. 2008. All Rights Reserved
  • 6. Notes about Dojo Comprised of Base, Core, Dijit, and DojoX Uni ed Tools and Components Extras: ShrinkSafe, Build Utils D.O.H. © SitePen, Inc. 2008. All Rights Reserved
  • 7. Base © SitePen, Inc. 2008. All Rights Reserved
  • 8. Using Dojo Base <html> <head> <title>Hello, Dojo</title> <!-- load Dojo from a CDN: --> <script type=quot;text/javascriptquot; src=quot;http://o.aolcdn.com/dojo/1.2/dojo/dojo.xd.jsquot;> </script> </head> <body> </body> </html> © SitePen, Inc. 2008. All Rights Reserved
  • 9. Aka: dojo.js (26KB of Joy) Ajax: dojo.xhr, dojo.xhrGet, dojo.xhrPost ... Events: normalization, keys, Objects or Nodes DOM/CSS: dojo.byId, dojo.style, dojo.place, dojo.attr Animation: dojo.fadeIn/Out, dojo.animateProperty Query/NodeList: CSS3 Selectors. aka: All of the Above Advanced JS: dojo.delegate, .hitch, .partial, .exists ... dojo.declare Native JS: forEach, map, lter, some, every, indexOf ... Browser Sni ng: dojo.isIE < 7, isFF, isWebKit ... © SitePen, Inc. 2008. All Rights Reserved
  • 10. Patterns in Dojo // style and add class to a node: dojo.addClass(“someNode”, “someClass”); dojo.style(“someNode”, { opacity:0.5, lineHeight:”1.3em” }); dojo.attr(“someNode”, { id:”newId” }); // or chained dojo.query(“#someNode”) .addClass(“someClass”) .attr({ id:”newId” }) .style({ opacity:0.5, lineHeight:”1.3em” }) // connect: dojo.connect(dojo.byId(“foo”), “onclick”, function(e){...}); // or connect: dojo.query(“#foo”).connect(“onclick”, function(e){ ... }); // or sugar: dojo.query(“#foo”).onclick(function(e){ ... }); © SitePen, Inc. 2008. All Rights Reserved
  • 11. Simple OO, Simulated Inheritance dojo.declare(“some.Person”, null, { name: ”default”, constructor: function(args){ dojo.mixin(this, args); } }); dojo.declare(“some.Employee”, some.Person, { employeeId: 0 }); var bob = new some.Person({ name:”Bob Bobson” }); var joy = new some.Employee({ name:”Joy”, employeeId:24 }); © SitePen, Inc. 2008. All Rights Reserved
  • 12. Package System == modular code And more... Works with Dojo and custom code Local: dojo.require(“dojo.io.script”); dojo.require(“my.Widget”); Robust: dojo.registerModulePath(“external”, “/external/js”); dojo.require(“external.Thinger”); Easy: dojo.provide(“my.Widget”); Ready: dojo.addOnLoad, .addOnUnLoad ... © SitePen, Inc. 2008. All Rights Reserved
  • 13. The Core © SitePen, Inc. 2008. All Rights Reserved
  • 14. More Patterns Use at will - everything additive. No dependency tracking - just dojo.require(“it”) Few, if any, “rules” Scale: Grows to t your needs © SitePen, Inc. 2008. All Rights Reserved
  • 15. Added Joy - a require() away dojo.data - Uni ed Data API dojo.dnd - Drag and Drop API dojo.fx / dojo.NodeList-fx - Additional Advanced FX dojo.i18n - Internationalization tools dojo.string, dojo.date, dojo.regexp - Common utility dojo.io.iframe, dojo.io.script, dojo.rpc - Advanced IO ... more: dojo.behavior, dojo.html, dojo.gears, dojo.cookie, dojo.parser, dojo.jaxer ... © SitePen, Inc. 2008. All Rights Reserved
  • 16. Additional Debugging FireBug Lite Shipped console.* provided in less sane browsers Load with djCon g = { isDebug:true } if(dojo.con g.isDebug){ .. } © SitePen, Inc. 2008. All Rights Reserved
  • 17. The Dojo Widget Framework © SitePen, Inc. 2008. All Rights Reserved
  • 18. Take Your Pick Compartmentalized Behavior using Existing Markup Fully dynamic, reusable Templated components Extend existing or Create ... © SitePen, Inc. 2008. All Rights Reserved
  • 19. Includes Suite of Widgets Layouts - Accordions, Tabs Form - Validation and more ... WYSIWYG Editor Tree, Sliders, ProgressBar ... © SitePen, Inc. 2008. All Rights Reserved
  • 20. Setup is Easy <html> <head> <title>index.html</title> <!-- some css --> <link rel=”stylesheet” href=”dojotoolkit/dijit/themes/tundra/tundra.css”> <script type=quot;text/javascriptquot; src=quot;dojotoolkit/dojo/dojo.jsquot;></script> </head> <body class=”tundra”> </body> </html> © SitePen, Inc. 2008. All Rights Reserved
  • 21. Flexible Instantiation // load the resource: dojo.require(“dijit.dijit”); // Base Dijit dojo.require(“dijit.Dialog”); // Dialog Code // create programatically: var myDialog = new dijit.Dialog({ title:”Login” }, “formArea”); <!-- or declaratively in markup --> <div id=”formArea” dojoType=”dijit.Dialog” title=”Login”> <p>...</p> </div> // access the instance: dijit.byId(“formArea”).show(); // myDialog.show(); © SitePen, Inc. 2008. All Rights Reserved
  • 22. CSS Driven Skinning Three full themes: Tundra Soria Nihilo Fully customizable Even easier with constraints: Embedded WebKit ? © SitePen, Inc. 2008. All Rights Reserved
  • 23. Full Localization (i18n) Support © SitePen, Inc. 2008. All Rights Reserved
  • 24. Full Accessibility (a11y) Support Screen reader support High contrast mode support Keyboard navigation ... with every Dijit © SitePen, Inc. 2008. All Rights Reserved
  • 25. Custom Widgets dojo.provide(“my.Widget”); dojo.require(“dijit._Widget”); dojo.require(“dijit._Templated”); // define: dojo.declare(“my.Widget”, [dijit._Widget, dijit._Templated], { value:”default”, templatePath: dojo.moduleUrl(“my.templates”, “Widget.html”, postCreate: function(args){ // init code } }); // instantiate: new my.Widget({ value:”bar” }, “someNode”); // declarative way: <input id=”someNode” dojoType=”my.Widget” value=”Foo”> © SitePen, Inc. 2008. All Rights Reserved
  • 26. Custom Extensions Leverage the Dijit widget system for speci c purposes Reuse Existing a11y and i18n code in Dijit © SitePen, Inc. 2008. All Rights Reserved
  • 27. Custom Widgets: Subclassing dojo.require(“dijit.Dialog”); // “subclassing”: dojo.declare(“my.Dialog”, dijit.Dialog, { canShow: true, show: function(){ if(this.canShow){ // then call inherited: this.inherited(arguments); } } }); var showable = new my.Dialog({ canShow: false }); © SitePen, Inc. 2008. All Rights Reserved
  • 28. Ultra Rapid Prototyping <div id=”foo” dojoType=”dijit.Dialog” title=”Hello”> <p> ... </p> <script type=”dojo/method” event=”hide”> // override instance’s hide() method ... test. </script> <script type=”dojo/connect” event=”show”> // monitor instance’s show() method ... </script> </div> © SitePen, Inc. 2008. All Rights Reserved
  • 29. Helping Designers /* Convenience Rules added to <html> element */ .mybox { width:250px; } /* love the quirks: */ .dj_ie6 .mybox { margin-right:1px } .dj_ie7 .mybox { margin-right:2px; } .dj_quirks .mybox { margin:3px; } © SitePen, Inc. 2008. All Rights Reserved
  • 30. © SitePen, Inc. 2008. All Rights Reserved
  • 31. Extensions, Extras, Experiments Extend Dijit: dojox.widget, dojox.layout, dojox.form Additional FX: dojox.fx Morph, Text, Extras ... Image Gadgets: FlickrBadge, Lightbox (Nano), SlideShow ... Comet: dojox.cometd Advanced IO: RPC, REST, SMD, ScriptFrame ... © SitePen, Inc. 2008. All Rights Reserved
  • 32. ... there’s more: DojoX GFX Cross-browser vector graphics GFX API, Charting: 2d / 3d, GFX Animation © SitePen, Inc. 2008. All Rights Reserved
  • 33. DojoX: DataGrid Fully dojo.data-Ready Lazy Row Selection,Virtual Scrolling Simplified Use: Layout Ready, Easy instantiation © SitePen, Inc. 2008. All Rights Reserved
  • 34. dojox.data Stores AndOrReadStore GoogleSearchStore AppStore HtmlStore AtomReadStore jsonPathStore CouchDBRestStore jsonRestStore CssRuleStore OpmlStore CsvStore QueryReadStore FileStore ServiceStore FlickrRestStore / S3Store FlickrStore WikipediaStore GoogleFeedStore XmlStore © SitePen, Inc. 2008. All Rights Reserved
  • 35. Other Goodies dojox.av - Audio / Video helpers dojox.dtl - django templating system implementation dojox.o , dojox.storage - O ine helpers dojox.lang - Advanced JS techniques dojox.xmpp - Full protocol implementation dojox.validate - Regexps + Functions ... much, much more! © SitePen, Inc. 2008. All Rights Reserved
  • 36. Simple Gems: Google Analytics Why Write This? <script type=quot;text/javascriptquot;> var gaJsHost = ((quot;https:quot; == document.location.protocol) ? quot;https://ssl.quot; : quot;http://www.quot;); document.write(unescape(quot;%3Cscript src='quot; + gaJsHost + quot;google- analytics.com/ga.js' type='text/javascript'%3E%3C/script%3Equot;)); </script> <script type=quot;text/javascriptquot;> var pageTracker = _gat._getTracker(quot;UA-xxxxxx-xquot;); pageTracker._trackPageview(); </script> © SitePen, Inc. 2008. All Rights Reserved
  • 37. Simple Gems: Google Analytics with Dojo Just Write This: // load the resource dojo.require(“dojox.analytics.Urchin”); <!-- and create in markup --> <div dojoType=”dojox.analytics.Urchin” acct=”12345-UA-23”></div> // or in script: new dojox.analytics.Urchin({ acct:”UA-xxxxx-x” }); © SitePen, Inc. 2008. All Rights Reserved
  • 38. in Production © SitePen, Inc. 2008. All Rights Reserved
  • 39. Dojo Build System Reduce number of HTTP requests Template Interning and resource concatenation Reduce JavaScript le size: Remove Comments and whitespace Variable obfuscation (ShrinkSafe) CSS Optimization Comment Removal @import “...” concatenation StripConsole options © SitePen, Inc. 2008. All Rights Reserved
  • 40. Advanced Builds Stubs Dojo (6k dojo.js) Custom Base “Layers” Automatic dependency tracking Cross-dependent layers RestoreRequire X-Domain Dojo - Local CDN BuildExclude syntax © SitePen, Inc. 2008. All Rights Reserved
  • 41. D.O.H - Unit test Suite Supports Build Up, Tear Down, sync or async Testing doh.robot - Automated UI Unit testing © SitePen, Inc. 2008. All Rights Reserved
  • 42. Resources © SitePen, Inc. 2008. All Rights Reserved
  • 43. Basic Documentation Full API Docs: http://api.dojotoolkit.org Full On-Line Docs: http://docs.dojocampus.org O ine Docs: http://sitepen.com/labs/toolbox Tutorials, Blogs, Examples: http://dojocampus.org © SitePen, Inc. 2008. All Rights Reserved
  • 44. Additional Documentation Dojo Dead Trees! © SitePen, Inc. 2008. All Rights Reserved
  • 45. That’s © SitePen, Inc. 2008. All Rights Reserved
  • 46. Questions? © SitePen, Inc. 2008. All Rights Reserved