Dojo Goodness, Part 7 (Book Preview)

by Matthew Russell

As I put the final touches on my upcoming book, Dojo: The Definitive Guide, it occurred to me that it might be a good idea to go ahead and post an unofficial table of contents preview for those of you who are interested. Aside from some page numbers adjusting ever so slightly, and some heading levels changing that make Chapter 13's table of contents entry a lot more detailed (ironically, the most dense chapter in the book), this is pretty much the real deal.

As far as I know, the book will be available early next month. I plan to continue writing my "Dojo Goodness" column semi-regularly for quite some time, so be sure to check in every now and then if you've been following along.

If you'll be at OSCON, you might also drop by for some gfx discussion.

Without further ado:

Preface



Part I: Base and Core



1. Toolkit Overview 3

Overview of Dojo's Architecture 3

Prepping for Development 7

Terminology 13

Bootstrapping 15

Exploring Dojo with Firebug 22

Summary 32



2. Language and Browser Utilities 33

Looking Up DOM Nodes 33

Type Checking 34

String Utilities 35

Array Processing 36

Managing Source Code with Modules 40

JavaScript Object Utilities 49

Manipulating Object Context 53

DOM Utilities 56

Browser Utilities 63

Summary 67



3. Event Listeners and Pub/Sub Communication 68

Event and Keyboard Normalization 68

Event Listeners 71

Publish/Subscribe Communication 77

Summary 80



4. AJAX and Server Communication 82

Quick Overview of AJAX 82

AJAX Made Easy 84

Deferreds 91

Form and HTTP Utilities 100

Cross-Site Scripting with JSON-P 102

Core IO 103

JSON Remote Procedure Calls 112

OpenAjax Hub 114

Summary 115



5. Node Manipulation 116

Query: One Size Fits All 116

NodeList 123

Creating NodeList Extensions 132

Behavior 133

Summary 137



6. Internationalization (i18n) 138

Introduction 138

Internationalizing a Module 139

Dates, Numbers, and Currency 142

Summary 145



7. Drag and Drop 146

Dragging 146

Dropping 157

Summary 167



8. Animation and Special Effects 168

Animation 168

Core fx 182

Animation + Drag and Drop = Fun! 189

Colors 190

Summary 198



9. Data Abstraction 200

Shifting the Data Paradigm 200

Data API Overview 201

The APIs 202

Core Implementations of Data APIs 208

Summary 224



10. Simulated Classes and Inheritance 226

JavaScript Is Not Java 226

One Problem, Many Solutions 227

Simulating Classes with Dojo 231

Multiply Inheriting with Mixins 240

Summary 244



Part II: Dijit and Util



11. Dijit Overview 249

Motivation for Dijit 249

Accessibility (a11y) 252

Dijit for Designers 255

The Parser 260

Hands-on Dijit with NumberSpinner 264

Overview of Stock Dijits 270

Dijit API Drive-By 274

Summary 275



12. Dijit Anatomy and Lifecycle 276

Dijit Anatomy 276

Dijit Lifecycle Methods 279

Your First Dijit: HelloWorld 286

Parent-Child Relationships with _Container and _Contained 297

Rapidly Prototyping Widgets in Markup 298

Summary 299



13. Form Widgets 301

Drive-By Form Review 301

Form Dijits 305

Summary 343



14. Layout Widgets 345

Layout Dijit Commonalities 345

ContentPane 347

BorderContainer 351

StackContainer 356

TabContainer 358

AccordionContainer 360

Rendering and Visibility Considerations 362

Summary 363



15. Application Widgets 364

Tooltip 364

Dialog Widgets 365

ProgressBar 369

ColorPalette 371

Toolbar 372

Menu 376

TitlePane 379

InlineEditBox 380

Tree 382

Editor 394

Summary 400



16. Build Tools, Testing, and Production Considerations 401

Building 401

Dojo Objective Harness (DOH) 411

Browser-Based Test Harness 416

Performance Considerations 420

Summary 422



Appendix A. Firebug Primer 423

Appendix B. Brief Survey of DojoX 434

Index 437