How dojo works

34
How Dojo works By Amit Tyagi

description

Basic Introduction to Dojo JavaScript toolkit. Find Video tutorial at http://www.youtube.com/watch?v=Q3S3yb8OlTU

Transcript of How dojo works

Page 1: How dojo works

How Dojo worksBy Amit Tyagi

Page 2: How dojo works

Dojo is a powerful, open source JavaScript toolkit (library).

Dojo provide uniform access to Browser APIs and encapsulates JavaScript implementations.

Dojo provides pluggable widgets UI(Dijit).

Dojo Introduction

Page 3: How dojo works

Dojo makes creating Web applications ( web 2.0) simpler and quick.

Helps in handling of the Cross Browser Development.

Why Dojo?

Page 4: How dojo works

Download from http://download.dojotoolkit.org

SVN and git checkout also available.

How to get Dojo

Page 5: How dojo works

Dojo Architecture

Page 6: How dojo works

Size 26KB (gzipped) Bootstrap Host and Browser detection (browser,

SpiderMonkey, Rhino, Appcelerator Titanium, AIR)

Package system JavaScript enhancements Query, DOM, Ajax, Events, FX

Dojo Base

Page 7: How dojo works

<html> <head> <title>Dojo!</title> <script type="text/javascript"

src="/path/to/dojo.js"> </script> </head> <body> </body></html>

Getting Started

Page 8: How dojo works

<script type="text/javascript" src="/path/to/dojo.js“ djConfig="isDebug:true,parseOnLoad:true" ></script>

debugAtAllCosts: true/false locale: 'ja-jp' extraLocale: 'zn-ch' baseUrl: 'http://www.domain.com/path/to/dojotoolkit' modulePaths: {'cb1','/js/cb1'} afterOnLoad: true/false addOnLoad: function/array useCustomLogger: anything != false require: ['dojo.fx', 'dojo.string'] defaultDuration: 200 // int milliseconds

djConfig

Page 9: How dojo works

Dojo comes with Firebug lite, if FireBug is not installed .

djConfig.isDebug

Page 10: How dojo works

dojo.require("dojo.fx") Downloads /path/to/dojotoolkit/dojo/fx.js

dojo.registerModulePath("cb1", "/js/cb1") dojo.require("cb1.module")

Downloads /js/cb1/module.js

dojo.require("blah.module") 404 Error: /path/to/dojotoolkit/some/module.js

dojo.provide("cb1.module")

Package System

Page 11: How dojo works

dojo.isMoz dojo.isFF dojo.isIE dojo.isAIR dojo.isOpera dojo.isKhtml dojo.isWebKit dojo.isSafari dojo.isChrome dojo.isQuirks

Browser Detection

Page 12: How dojo works

dojo.declare()<script type="text/javascript">dojo.declare("MyObj", null, {say: function(msg){ console.log(msg); }});var obj = new MyObj;obj.say("Hi!");</script>

dojo.extend()<script type="text/javascript">dojo.extend(MyObj, {sayUpperCase: function(msg){ this.say(msg.toUpperCase()); }});var obj = new MyObj;obj.sayUpperCase("Hi!");</script>

Classes and Inheritance

Page 13: How dojo works

dojo.mixin()<script type="text/javascript">var obj = { firstName: "chris", lastName:

"barber" };var emp = dojo.mixin({ title: "hacker" }, obj);</script>

Contd.

Page 14: How dojo works

<script type="text/javascript">var nodes = dojo.query("li"); // can use CSS3

selectorsdojo.query("a").forEach(function(n){n.innerHTML += "!!";});dojo.query("div").style({ padding:"1px",

margin:"0px" });</script>

dojo.query()

Page 15: How dojo works

dojo.byId() dojo.body() dojo.create() dojo.destroy() dojo.attr() dojo.style() dojo.place()

DOM functions

Page 16: How dojo works

dojo.addOnLoad() dojo.addOnUnload() dojo.connect()/ dojo.disconnect() dojo.subscribe dojo.publish dojo.unsubscribe()

Events

Page 17: How dojo works

dojo.xhr() dojo.xhrGet() dojo.xhrPost() dojo.deferred

AJAX

Page 18: How dojo works

dojo.fadeIn(), dojo.fadeOut() dojo.animateProperty()

FX

Page 19: How dojo works

Dojo Core

Page 20: How dojo works

Unified Data API◦ dojo.data

Drag n Drop◦ dojo.dnd

Advanced FX◦ dojo.fx

Internationalization◦ dojo.i18n

Google Gears◦ dojo.gears

Dojo Core

• Utilities• dojo.string• dojo.date• dojo.regexp

• I/O Transports• dojo.io.iframe• dojo.io.script• dojo.rpc

• Browser History• dojo.back

• OpenAjax

Page 21: How dojo works

Dijit

Page 22: How dojo works

Dojo's widget system Huge library of existing widgets

◦ Form elementsButtons, drop downs, input fields, etc

◦ Layout widgetsContent pane, accordions, tab container, stack

container, etc◦ Rich experience widgets

Tree, progress bar, dialog, tooltip, menu, rich text editor, etc

Accessibility (a11y) Templated - externalized HTML templates Themes (tundra, soria, nihilo, noir)

What is Dijit?

Page 23: How dojo works

constructor() postMixInProperties() buildRendering() postCreate() startup()

Widget Lifecycle

Page 24: How dojo works

BorderContainer ContentPane LinkPane TabContainer AccordionContainer SplitContainer StackContainer

Dijit Layout Widgets

Page 25: How dojo works

Dojox

Page 26: How dojo works

Place for extra stuff Stuff that isn't ready for prime time

◦ (i.e. dojox.grid)

What is Dojox?

Page 27: How dojo works

dojox.analytics◦ Client monitoring

dojox.charting dojox.cometd dojox.data

◦ Tons of data stores dojox.dtl

◦ Django template library dojox.embed

◦ Embed Flash, QuickTime

Tour of Dojox

• dojox.form– Additional form

widgets

• dojox.fx– Cool FX

• dojox.gfx– Cross-browser vector

• graphics (SVG/VML)• dojox.gfx3d• dojox.grid

– Grid widget

Page 28: How dojo works

dojox.highlight◦ Syntax highlighting

dojox.image◦ Lightboxes,

slideshow,gallery, magnifier

dojox.io◦ Additional transports

dojox.layout◦ Dijit layout widgets

dojox.off◦ Offline support

Tour of Dojox Contd.

• dojox.rpc• dojox.secure• Sandboxing

• dojox.storage• Persistent client-side

storage• dojox.widgets• Additional dijit

widgets• dojox.xmpp• XMPP client

Page 29: How dojo works

Build system DOH - Dojo Objective Harness

◦ Testing framework

Dojo Util

Page 30: How dojo works

Reduce number of files sent over the wire Reduce JavaScript file sizes Profiles Layers Build script Executes Java, Rhino Compiles modules into layer .js files Strips whitespace, comments, console.*(), etc Minification (i.e. "var something = 123;" becomes

"var _0=123;" Inlines widget HTML templates & @import CSS

Dojo Build system

Page 31: How dojo works

Build script in /util/buildscriptsbuild.sh (GNU/Linux, MacOSX, Solaris, Unix)build.bat (Windows)

Pre-defined profiles in /util/buildscripts/profilesbasecometddemos-alldtkapifxlayersofflinerhinosqlstandardstandardCustomBasestorage

Build system

Page 32: How dojo works

API Docs◦ http://api.dojotoolkit.org

Online Docs◦ http://docs.dojocampus.org

Blogs◦ http://dojotoolkit.org/rss.xml◦ http://dojocampus.org/content/feed

Resources

Page 33: How dojo works
Page 34: How dojo works