Ext江湖
编辑推荐
专业分析Ext架构的技术书
知名的Ext在线交流社区倾力打造 练好JS基本功通晓Ext内核和架构
基本信息
- 作者:
- 出版社:电子工业出版社
- ISBN:9787121148620
- 上架时间:2012-1-10
- 出版日期:2012 年1月
内容简介
《Ext江湖》以幽默诙谐的语言由浅入深地解析了Ext框架的方方面面,包括JS基础、Ext的DOM和CSS封装、内置对象的扩展、事件系统、Ajax和Direct、数据和缓存架构、面向对象和继承、UI组件、布局管理、模板、特效、图表和报表、Ext4新特性介绍等内容。文中穿插大量的实例和基础理论解析,寓教于乐,严谨而不失活泼。对于Ext的使用者来说,《Ext江湖》针对实战中面临的种种问题,给出了详尽的解决方案和思路;对于想研究源码的读者来说,《Ext江湖》绝对是难得的良师益友。全书思路清晰、内容一气呵成,适合Ext用户参考学习,还适合其他JS框架的开发者阅读和参考。
目录
第1章 ext史前 1.1 一个页面做两周 1 1.1.1 变量、对象、数组 5 1.1.1.1 变量 5 1.1.1.2 对象和数组 7 1.1.2 其他重要内置对象 8 1.1.2.1 nubmer对象 8 1.1.2.2 string对象 9 1.2.2.3 regexp对象 10 1.1.3 等值判定 10 1.1.4 11运算符 10 1.1.5 !运算符 11 1.1.6 类型转换技巧 11 1.1.7 特殊运算符 12 1.1.7.1 instanceof 语句 12 1.1.7.2 typeof 语句 13 1.1.7.3 delete 运算符 13 1.1.7.4 []运算符 14 1.1.7.5 ( )运算符 15 1.1.7.6 eval 语句 15
.1.1.7.7 三目运算符 16 1.1.7.8 for…in语句 16 1.1.7.9 with语句 18 1.2 缘起ext 19 1.2.1 开发工具spket 21 1.2.2 调试工具firebug 23 1.2.3 编译工具jsbuilder 23 1.2.4 设计工具 24 第2章 dom操作 2.1 基础概念 27 2.1.1 dom是什么 27 2.1.2 为什么要dom 28 2.1.3 dom怎么用 29 2.1.3.1 访问html节点 (retrieve) 29 2.1.3.2 创建、删除(create、 delete) 31 2.1.3.3 修改标签属性和内容 (update) 33 2.1.4 总结 36 2.2 新石器时代的crud 37 2.2.1 ext.element 38 2.2.1.1 ext.get() 39 2.2.1.2 ext.getdom() 40 2.2.1.3 ext.fly() 41 3.2.1.4 操纵样式属性 42 2.2.2 ext.domhelper 46 2.2.2.1 概述 46 2.2.2.2 append 47 2.2.2.3 inserthtml 48 2.2.2.4 overwrite 49 2.2.2.5 createtemplate 50 2.2.3 ext.domquery 51 2.2.3.1 概述 51 2.2.3.2 元素选择器 52 2.2.3.3 属性选择器 53 2.2.3.4 伪类选择器 55 2.2.3.5 css值选择器 57 2.3 源码解析:ext的dom封装 58 2.3.1 ext.element 59 2.3.1.1 dom结构工具 59 2.3.1.2 外观工具 66 2.3.2 ext.domhelper 67 2.3.2.1 设计思路概述 67 2.3.2.2 源码详解 69 2.3.2.3 domhelper与ext.element 协作 73 2.3.3 ext.domquery 74 2.3.3.1 设计思路概述 74 2.3.3.2 源码详解 75 2.3.3.3 与ext.element的配合 79 本章总结 80 第3章 程序员的css 3.1 必知的css基础概念 81 3.1.1 历史渊源 81 3.1.2 核心概念一:盒子模型 81 3.1.2.1 盒子模型 81 3.1.2.2 padding规则 84 3.1.2.3 border规则 85 3.1.2.4 margin规则 86 3.1.3 核心概念二:选择器 86 3.1.4 浏览器兼容 87 3.2 ext对css的封装 87 3.2.1 静态切换主题 87 3.2.2 动态切换主题 89 3.2.3 结构化css 90 3.2.4 ext ui组件的本质 91 第4章 精通function 4.1 js函数特性梳理 95 4.1.1 参数可变长 96 4.1.2 函数不能重载 97 4.1.3 命名空间 97 4.1.4 函数嵌套 100 4.1.5 call/apply/自执行 102 4.1.6 函数也是数据 104 4.1.7 function 105 4.1.8 函数实例的属性 107 4.1.9 构造函数 110 4.1.10 模拟静态属性 111 4.1.11 综合应用:定时器 112 4.2 函数原型 116 4.2.1 prototype概述 116 4.2.2 向prototype添加自定义属性 118 4.2.3 原型查找机制 119 4.2.4 遮盖 120 4.2.5 原型赋值机制 121 4.2.6 模拟静态属性 122 4.2.7 犀利的prototype 123 4.2.7.1 扩展array 123 4.2.7.2 扩展number 126 4.2.7.3 扩展string 127 4.2.7.4 扩展date 131 4.2.7.5 扩展error 134 4.2.7.6 扩展function 135 4.3 作用域链[[scope]] 141 4.3.1 作用域链[[scope]]简介 141 4.3.2 标识符解析 144 4.3.3 修改作用域链和this 146 4.4 闭包 149 4.4.1 从最简单的开始 149 4.4.2 闭包构造三步走 150 4.4.3 闭包用法:经典案例 151 4.4.3.1 获取table中被点击的行 151 4.4.3.2 模拟多线程 152 4.4.3.3 模拟私有属性 154 第5章 ext事件系统 5.1 dom事件演化史 156 5.1.1 没有事件的寂寞年代 156 5.1.2 简单事件模型 157 5.1.3 2级事件模型 159 5.1.3.1 多个监听函数 159 5.1.3.2 浏览器兼容 161 5.1.3.3 事件传播 163 5.1.3.4 监听函数中的this 171 5.1.3.5 事件对象 174 5.1.4 高级语义事件 176 5.1.4.1 设计自己的事件机制 176 5.1.4.2 为原生的事件接口提供 快捷方式 181 5.1.4.3 双剑合璧 183 5.2 熟练使用ext的事件机制 187 5.2.1 基础用法 187 5.2.1.1 为底层元素注册监听器 187 5.2.1.2 为ext的ui组件注册事件 190 5.2.2 批量注册监听器 191 5.2.3 指定this 192 5.2.4 单次运行的监听器 193 5.2.5 挂起和恢复 195 5.2.6 事件转发 196 5.2.7 删除监听函数 197 5.2.8 事件综合示例 198 5.2.9 高级用法一:自定义事件 203 5.2.10 高级用法二:为自定义的 类提供事件支持 204 5.3 ext事件系统全景解析 205 5.3.1 封装底层事件 206 5.3.1.1 ext.eventmanager 206 5.3.1.2 ext.eventobject 215 5.3.2 高级事件机制observable 217 5.3.2.1 非可视组件 217 5.3.2.2 可视组件 218 5.3.2.3 详解ext.util.observable 220 5.4 全景式解析api根对象ext 229 5.4.1 整体结构概述 230 5.4.2 源码详解 231 5.4.2.1 ext版本信息 231 5.4.2.2 浏览器/os类型判断 231 5.4.2.3 垃圾收集配置 233 5.4.2.4 继承机制的实现 235 5.4.2.5 id机制 235 5.4.2.6 对象类型判定 236 5.4.2.7 数组操纵工具 238 5.4.2.8 对象引用获取工具 245 本章总结 249 第6章 ext中的ajax和direct 6.1 ajax的前世今生 251 6.2 ajax和ext.ajax 251 6.2.1 ajax那点事儿 251 6.2.1.1 创建xhr对象 254 6.2.1.2 发送请求,接收数据 255 6.2.1.3 ajax基础实例 256 6.2.2 ext.ajax用法和常见陷阱 258 6.2.2.1 ext.ajax基础用法 258 6.2.2.2 缓存问题 259 6.2.2.3 传输xml 260 6.2.2.4 异步问题 261 6.2.2.5 跨域问题 262 6.2.2.6 ajax上传文件 265 6.2.3 ext.ajax源码解析 266 6.2.3.1 屏蔽浏览器差异 266 6.2.3.2 优雅地回调 267 6.3 按需加载js,梦想照进现实 268 6.3.1 基础动态载入技巧 268 6.3.2 使用ext.ajax动态加载js 270 6.3.3 使用jsloader动态加载 271 6.4 direct 272 第7章 ext的数据和缓存架构 7.1 js原生数据结构 278 7.1.1 数组技法大演练 278 7.1.1.1 join 279 7.1.1.2 slice 280 7.1.1.3 splice 281 7.1.1.4 sort 282 7.1.1.5 ext扩展:indexof、 remove 282 7.1.2 js对象{} 283 7.1.2.1 天然hash特性 283 7.1.2.2 伪数组 284 7.1.2.3 天然json结构 284 7.2 json 285 7.2.1 使用ext.util.json 285 7.2.1.1 encode/decode 285 7.2.1.2 对象深拷贝 286 7.2.2 源码分析 287 7.2.2.1 json.decode 287 7.2.2.2 json.encode 287 7.2.3 服务端json工具介绍 289 7.2.3.1 json-lib 289 7.2.3.2 dao直接生成json串 291 7.2.3.3 gson 292 7.3 xml 294 7.3.1 用js解析xml 294 7.3.1.1 直接使用xmldocument 加载xml文件 294 7.3.1.2 使用ajax加载xml数据 295 7.3.1.3 自制xml解析器源码分析 297 7.3.2 ext使用xml数据 301 7.3.2.1 使用ext.data.xmlstore 301 7.3.2.2 ext.data.xmlstore的解析 方式 303 7.3.3 json vs xml 304 7.4 mixedcollection 305 7.4.1 概述 305 7.4.2 玩转mixedcollection 306 7.4.2.1 当做数组使用 306 7.4.2.2 当做hashmap使用 307 7.4.2.3 迭代 308 7.4.2.4 查找和过滤 309 7.4.2.5 排序 313 7.4.2.6 mixedcollection的事件 316 7.4.3 mixedcollection源码分析 316 7.4.3.1 模拟hashmap 317 7.4.3.2 迭代工具 318 7.4.3.3 查找和过滤 320 7.4.3.4 排序和中文支持 321 7.4.3.5 事件支持 322 7.4.4 综合考察mixedcollection 323 7.4.4.1 代码实现层面 323 7.4.4.2 设计层面 324 7.5 store 324 7.5.1 store系组件概述 324 7.5.1.1 继承关系图 324 7.5.1.2 协作关系图 327 7.5.1.3 时序图 330 7.5.1.4 store的本质 331 7.5.2 数据记录record 332 7.5.2.1 手动创建record 332 7.5.2.2 create方法源码解析 339 7.5.2.3 拷贝记录 339 7.5.2.4 获取记录中的字段 342 7.5.3 store对record的管理 347 7.5.3.1 过滤记录——where 348 7.5.3.2 where机制的实现 354 7.5.3.3 记录排序——order by 357 7.5.3.4 order by机制的实现 360 7.5.3.5 从设计角度“品味”排序 特性 363 7.5.3.6 记录分组——group by 363 7.5.3.7 group by机制的实现 365 7.5.3.8 提交和回滚——commit/ rollback 367 7.5.3.9 commit/rollback机制的 实现 370 7.5.3.10 从设计层面“品味”store 的核心特性 373 7.5.4 dataproxy 374 7.5.4.1 dataproxy系组件概述 374 7.5.4.2 用法实例 375 7.5.4.3 源码解析 384 7.5.5 datareader 386 7.5.5.1 datareader系组件概述 386 7.5.5.2 用法实例 387 7.5.5.3 源码解析 401 7.5.6 datawriter 402 7.5.7 store系组件总结 405 7.6 tree 408 7.6.1 tree的基本性质 410 7.6.1.1 基本属性 410 7.6.1.2 树和json 411 7.6.1.3 递归遍历 411 7.6.2 ext.treenode 414 7.6.2.1 概述 414 7.6.2.2 父类node解析 414 7.6.2.3 treenode解析 415 7.7 cookie 428 7.7.1 cookie概述 428 7.7.2 使用ext的cookie 430 7.7.3 ext的cookies机制 432 7.7.3.1 顶级类component 432 7.7.3.2 cookieprovider源码解析 434 第8章 面向对象和继承 8.1 js模拟继承的方式 435 8.1.1 原型继承 435 8.1.1.1 子类prototype赋值为 父类实例 437 8.1.1.2 删除不需要的属性 439 8.1.1.3 重置constructor 440 8.1.2 对象冒充 442 8.1.2.1 对象冒充基础原理 442 8.1.2.2 静态属性 443 8.1.3 综合运用 447 8.2 易筋经:ext.extend() 449 8.2.1 使用ext.extend 449 8.2.1.1 招式一:子类不提供构造 函数 449 8.2.1.2 招式二:子类提供显式 构造函数 451 8.2.1.3 招式三:子类提供隐式 构造函数 453 8.2.2 深度解析ext.extend的源码 454 8.2.2.1 关键点1:私有属性 455 8.2.2.2 关键点2:参数移位 456 8.2.2.3 关键点3:空壳函数 457 8.2.2.4 关键点4:prototype拷贝 458 8.2.2.5 关于静态属性 460 8.2.3 ext.extend本质:继承和接口 相统一 460 8.2.3.1 机制总结 460 8.2.3.2 ext中的实例 461 8.2.3.3 ext.extend再认识 463 第9章 精通ext的ui组件 9.1 简单组件 467 9.1.1 messagebox 467 9.1.1.1 熟练使用messagebox 467 9.1.1.2 源码解析 470 9.1.2 progressbar 474 9.1.2.1 熟练使用进展条 474 9.1.2.2 源码解析 477 9.1.3 menu 478 9.1.4 toolbar 480 9.1.4.1 熟练使用toolbar 480 9.1.4.2 toolbar源码解析 485 9.1.5 loadmask 485 9.1.5.1 使用loadmask 485 9.1.5.2 loadmask源码分析 488 9.1.6 tip 489 9.2 panel系 491 9.2.1 panel 491 9.2.1.1 加载外部页面 491 9.2.1.2 陷阱和注意点 494 9.2.2 window 495 9.2.2.1 window的重复创建问题 496 9.2.2.2 使用windowgroup管理 window 498 9.2.2.3 window的其他配置项 499 9.2.3 tabpanel 500 9.3 form系 503 9.3.1 表单的加载和提交 503 9.3.2 更改fieldlabel 508 9.3.3 多列布局 510 9.3.4 vtypes表单校验 512 9.3.5 combobox 515 9.3.5.1 使用本地数据 515 9.3.5.2 使用远程数据 518 9.3.5.3 combo分页 519 9.3.5.4 二级联动 520 9.3.6 checkbox/radio group 523 9.3.7 fielset 524 9.3.8 datepicker 525 9.3.9 动态添加输入项 526 9.4 grid系 529 9.4.1 gridpanel基本用法 530 9.4.2 selectionmodel&row numberer 532 9.4.3 客户端分页 534 9.4.4 服务端分页 536 9.4.5 renderer和rowaction 538 9.4.6 动态操纵record 546 9.4.7 数据格式化 553 9.4.8 综合应用editorgridpanel 555 9.4.9 gridpanel中的右键菜单 559 9.5 tree系 561 9.5.1 装配“树形”json结构 561 9.5.2 动态加载数据 566 9.5.3 监听事件 569 9.5.4 编辑节点数据 572 9.5.5 节点拖曳 573 9.5.6 节点过滤 575 9.5.7 columntree 578 9.6 dataview系 580 9.7 特殊组件 582 9.7.1 文件上传 582 9.7.2 网页编辑器 586 9.7.3 调色板 588 第10章 详解ui组件核心机制 10.1 ui生命周期概述 591 10.2 详解生命周期 593 10.2.1 事件机制 593 10.2.2 组件查找机制 595 10.2.2.1 使用ext.getcmp 595 10.2.2.2 componentmgr源码解析 597 10.2.3 初始化机制 600 10.2.3.1 拷贝配置属性 602 10.2.3.2 生成id 603 10.2.3.3 初始化initcomponent 603 10.2.4 插件机制 608 10.2.5 渲染机制 608 10.2.5.1 触发beforerender事件 610 10.2.5.2 开始渲染onrender 611 10.2.5.3 应用样式 615 10.2.5.4 完成渲染afterrender 616 10.2.5.5 持久化 617 10.2.5.6 布局 618 10.2.6 懒渲染机制 619 10.2.6.1 直接创建 620 10.2.6.2 使用xtype 620 10.2.7 销毁机制 622 10.2.8 总结 623 10.3 gridpanel核心机制 623 10.3.1 概述 623 10.3.2 详解gridview 624 10.3.2.1 gridpanel和gridview 协作关系 624 10.3.2.2 标签模板初始化 625 10.3.2.3 gridview对store的监听 627 10.3.3 数据模型 628 10.3.4 选中模式 631 10.4 formpanel核心机制 632 10.4.1 概述 632 10.4.2 field和vtype 634 10.5 treepanel核心机制 634 10.5.1 treeloader加载数据 635 10.5.2 树的事件机制 637 第11章 布局管理器 11.1 全面掌握ext布局 639 11.1.1 absolutelayout 640 11.1.2 accordionlayout 641 11.1.3 anchorlayout 642 11.1.4 autolayout 643 11.1.5 borderlayout 644 11.1.6 cardlayout 645 11.1.7 columnlayout 646 11.1.8 fitlayout 647 11.1.9 formlayout 648 11.1.10 hboxlayout 649 11.1.11 menulayout 650 11.1.12 tablelayout 651 11.1.13 toolbarlayout 651 11.1.14 vboxlayout 652 11.2 综合应用viewport 652 11.3 布局核心源码详解 654 11.3.1 布局管理器概述 654 11.3.2 渲染完成后的布局操作 656 11.3.3 container.dolayout 657 第12章 扩展ui组件 12.1 概述 660 12.2 常用扩展组件介绍 661 12.2.1 下拉树combotree 661 12.2.2 详解combotree的实现 细节 666 12.2.2.1 从filed到combobox 666 12.2.2.2 ext.form.field 667 12.2.2.3 ext.form.textfield 669 12.2.2.4 ext.form.triggerfield 669 12.2.2.5 ext.form.combobox 673 12.2.3 日期选择器 675 12.2.4 desktop和portal 678 12.2.4.1 desktop实例分析 678 12.2.4.2 portal实例分析 680 12.5 扩展组件的技巧 682 12.5.1 是否真的需要继承 682 12.5.2 扩展组件的经典步骤 682 12.5.3 其他注意点 687 12.5.4 如何在项目中使用ui组件 688 12.5.4.1 设计界面原型 688 12.5.4.2 切分组件 689 12.5.4.3 代码实现 689 第13章 模 板 13.1 概述 693 13.2 ext模板用法 697 13.2.1 基本拳脚功夫:基础用法 697 13.2.1.1 ext.template的基础用法 697 13.2.1.2 ext.xtempate的基础用法 701 13.2.2 青出于蓝:实现“值班 日志” 705 13.2.3 组合拳:与其他组件配合 使用 709 13.2.3.1 一个自定义的留言板 709 13.2.3.2 与dataview配合使用 711 13.3 模板源码解析 714 13.3.1 自己实现template 715 13.3.1.1 概要设计 715 13.3.1.2 详细设计 715 13.3.1.3 编码实现 716 13.3.1.4 单元测试 716 13.3.1.5 说明文档 717 13.3.1.6 重构,增加“预编译” 功能 717 13.3.2 自己实现xtemplate 718 13.3.2.1 实现if标签 718 13.3.2.2 实现for标签 724 13.3.3 ext模板源码解析 727 13.3.3.1 ext.template 728 13.3.3.2 ext.xtemplate 729 第14章 特 效 14.1 使用ext动画 730 14.1.1 调整大小 730 14.1.2 淡入和淡出 732 14.1.3 其他特效 733 14.2 使用拖拽 733 14.2.1 拖拽的基本原理 733 14.2.2 基本ext拖拽 734 14.2.3 目标区域 735 14.2.4 grid和form之间的拖拽 737 第15章 图 表 15.1 使用ext的chart 741 15.1.1 解决本地运行问题 741 15.1.2 用法实例 742 15.1.2.1 前台本地数据 742 15.1.2.2 动态加载远程数据 743 15.1.3 其他类型的chart 746 15.2 ext的chart源码分析 746 15.2.1 swfobject与flash 746 15.2.2 ext.flashcomponenet 747 15.2.2.1 chart系组件概述 747 15.2.2.2 如何把swf渲染到页面中 749 15.2.3 flash技术前景展望 749 15.3 其他chart技术概览 750 15.3.1 svg 750 15.3.1.1 svg技术简介 750 15.3.1.2 基本用法示例 750 15.3.1.3 svg总结 754 15.3.2 vml 754 15.3.2.1 vml技术简介 754 15.3.2.2 实例代码 755 15.3.2.3 学习资源 756 第16章 报 表 16.1 客户端报表activexobject 757 16.1.1 导出基本html页面数据 757 16.1.2 gridpanel导出到excel 762 16.2 后台报表excel、pdf 763 16.2.1 使用jxl生成excel 764 16.2.2 使用itext生成pdf/word 766 第17章 ext 4新特性 17.1 svg图表和动画 769 17.2 新的类结构和加载机制 771 17.2.1 类结构优化 771 17.2.2 继承方式升级 771 17.2.3 mixin机制 772 17.2.4 自动生成getter&setter 772 17.2.5 动态加载类 773 17.3 新的数据模型 774 17.3.1 model和store 774 17.3.2 代理proxy 775 17.3.3 关联关系 776 17.3.4 加载嵌套数据 776 17.4 新的主题引擎 777 第18章 常见问题解答