序 1
前言 5
第一部分 Base与Core 23
第1章 Dojo工具箱概述 23
Dojo的架构 23
开发前的准备 27
重要的术语 32
启用Dojo 34
在Firebug中探索Dojo 41
小结 51
第2章 语言及浏览器实用程序 52
查找DOM节点 52
类型检查 53
字符串工具 54
数组处理 55
通过模块管理源代码 60
JavaScript对象实用程序 68
操作对象环境 72
DOM实用程序 76
浏览器实用程序 83
小结 87
第3章 事件侦听器及发布/预订通信 89
事件和键盘标准化 89
事件侦听器 92
发布/预订通信 97
小结 101
第4章 Ajax及服务器通信 102
Ajax简介 102
简化Ajax操作 104
Deferred对象 111
表单和HTTP实用程序 120
使用JSONP实现跨站点脚本 122
核心IO 123
JSON远程过程调用 132
OpenAjax Hub 135
小结 135
第5章 节点操作 136
query:以不变应万变 137
NodeList 143
创建NodeList扩展 153
分离行为 154
小结 158
第6章 国际化(i18n) 159
国际化简介 159
自定义模块的国际化 160
日期、数字和货币 163
小结 166
第7章 拖放 167
拖动 167
放置 178
小结 187
第8章 动画和特效 188
Base中的动画方法 188
Core的fx模块 201
动画+拖放=酷 209
颜色 210
小结 219
第9章 数据抽象 220
重建数据访问模式 220
数据API概览 221
深入理解API 222
Core对数据API的实现 230
小结 246
第10章 模拟类和继承 248
JavaScript不是Java 248
一题多解 249
使用Dojo来模拟类 252
小结 266
第二部分 Dijit与Util 271
第11章 Dijit概述 271
Dijit产生的动机 271
易访问性(ally) 274
设计人员需要了解的Dijit 277
解析器 283
动手构建NumberSpinner部件 287
内置部件一览 292
Dijit API简介 296
小结 297
第12章 深入理解Dijit及其生命周期 299
理解Dijit 299
Dijit的生命周期方法 302
自定义部件示例:HelloWorld 309
_Container和_Contained与父子关系 319
在标记中快速构建部件 319
小结 321
第13章 表单部件 323
表单部件 326
TextBox及其变体 329
FilteringSelect 348
MultiSelect 349
Textarea及其变体 350
Button及其变体 351
Slider 358
Form 363
小结 365
第14章 布局部件 366
布局部件的共同特性 366
ContentPane 368
BorderContainer 372
StackContainer 377
TabContainer 380
AccordionContainer 382
呈现与可见 383
小结 384
第15章 应用程序部件 386
Tooltip 386
Dialog部件 387
ProgressBar 391
ColorPalette 394
Toolbar 395
Menu 397
TitlePane 402
InlineEditBox 403
Tree 405
简单的树 406
Editor 417
小结 423
第16章 构建工具、测试及程序发布 424
构建工具 424
Dojo目标套件(DOH) 435
基于浏览器的测试套件 440
性能问题 442
小结 444
附录A Firebug入门教程 445
附录B DojoX评述 456