内容简介 · · · · · ·
《JavaScript框架设计》是一本全面讲解JavaScript框架设计的图书,详细地讲解了设计框架需要具备的知识,主要包括的内容为:框架与库、JavaScript框架分类、JavaScript框架的主要功能、种子模块、模块加载系统、语言模块、浏览器嗅探与特征侦测、样式的支持侦测、类工厂、JavaScript对类的支撑、选择器引擎、浏览器内置的寻找元素的方法、节点模块、一些有趣的元素节点、数据缓存系统、样式模块、个别样式的特殊处理、属性模块、jQuery的属性系统、事件系统、异步处理、JavaScript异步处理的前景、数据交互模块、一个完整的Ajax实现、动画引擎、API的设计、插件化、当前主流MVVM框架介绍、监控数组与子模板等。
作者简介 · · · · · ·
钟钦成 网名司徒正美,著名的JavaScript专家,立志做考古学家的日语系工程师,穿梭于二次元与二进制间的“魔法师”,做过陶艺,写过小说,涉猎Java、Ruby、 JavaScript,3年成就此书!
目录 · · · · · ·
目 录
第1章 种子模块 1
1.1 命名空间 1
1.2 对象扩展 3
1.3 数组化 4
1.4 类型的判定 6
1.5 主流框架引入的机制——domReady 14
1.6 无冲突处理 16
第2章 模块加载系统 18
2.1 AMD规范 18
2.2 加载器所在路径的探知 19
2.3 require方法 21
2.4 define方法 27
第3章 语言模块 31
3.1 字符串的扩展与修复 31
3.2 数组的扩展与修复 43
3.3 数值的扩展与修复 50
3.4 函数的扩展与修复 56
3.5 日期的扩展与修复 61
第4章 浏览器嗅探与特征侦测 64
4.1 判定浏览器 64
4.2 事件的支持侦测 67
4.3 样式的支持侦测 69
4.4 jQuery一些常用特征的含义 70
第5章 类工厂 72
5.1 JavaScript对类的支撑 72
5.2 各种类工厂的实现 77
5.2.1 相当精巧的库——P.js 77
5.2.2 JS.Class 80
5.2.3 simple-inheritance 82
5.2.4 体现JavaScript灵活性的库——def.js 84
5.3 es5属性描述符对OO库的冲击 88
第6章 选择器引擎 100
6.1 浏览器内置的寻找元素的方法 100
6.2 getElementsBySelector 102
6.3 选择器引擎涉及的知识点 106
6.4 选择器引擎涉及的通用函数 114
6.4.1 isXML 114
6.4.2 contains 115
6.4.3 节点排序与去重 117
6.4.4 切割器 121
6.4.5 属性选择器对于空白字符的匹配策略 123
6.4.6 子元素过滤伪类的分解与匹配 125
6.5 Sizzle引擎 127
第7章 节点模块 137
7.1 节点的创建 138
7.2 节点的插入 149
7.3 节点的复制 155
7.4 节点的移除 158
7.5 innerHTML、innerText与outerHTML的处理 161
7.6 一些奇葩的元素节点 164
7.6.1 iframe元素 164
7.6.2 object元素 174
7.6.3 video标签 179
第8章 数据缓存系统 185
8.1 jQuery的第1代缓存系统 185
8.2 jQuery的第2代缓存系统 190
8.3 mass Framework的第1代数据缓存系统 193
8.4 mass Framework的第2代数据缓存系统 196
8.5 mass Framework的第3代数据缓存系统 198
8.6 总结 199
第9章 样式模块 200
9.1 主体结构 201
9.2 样式名的修正 205
9.3 个别样式的特殊处理 206
9.3.1 opacity 206
9.3.2 user-select 208
9.3.3 background-position 208
9.3.4 z-index 209
9.3.5 盒子模型 210
9.3.6 元素的尺寸 211
9.3.7 元素的显隐 218
9.3.8 元素的坐标 222
9.4 元素的滚动条的坐标 228
第10章 属性模块 229
10.1 如何区分固有属性与自定义属性 231
10.2 如何判定浏览器是否区分固有属性与自定义属性 233
10.3 IE的属性系统的三次演变 234
10.4 className的操作 235
10.5 Prototype.js的属性系统 240
10.6 jQuery的属性系统 246
10.7 mass Framework的属性系统 249
10.8 value的操作 253
第11章 事件系统 256
11.1 onXXX绑定方式的缺陷 257
11.2 attachEvent的缺陷 258
11.3 addEventListener的缺陷 259
11.4 Dean Edward的addEvent.js源码分析 260
11.5 jquery1.8.2的事件模块概览 263
11.6 jQuery.event.add的源码解读 266
11.7 jQuery.event.remove的源码解读 269
11.8 jQuery.event.dispatch的源码解读 271
11.9 jQuery.event.trigger的源码解读 276
11.10 jQuery对事件对象的修复 280
11.11 滚轮事件的修复 286
11.12 mouseenter与mouseleave事件的修复 290
11.13 focusin与focusout事件的修复 293
11.14 旧版本IE下submit的事件代理的实现 295
11.15 oninput事件的兼容性处理 296
第12章 章异步处理 298
12.1 setTimeout与setInterval 299
12.2 Mochikit Deferred 301
12.3 JSDeferred 309
12.3.1 得到一个Deferred实例 310
12.3.2 Deferred链的实现 312
12.3.3 JSDeferred的并归结果 316
12.3.4 JSDeferred的性能提速 318
12.4 jQuery Deferred 321
12.5 Promise/A与mmDeferred 327
12.6 JavaScript异步处理的前景 334
第13章 数据交互模块 339
13.1 Ajax概览 339
13.2 优雅地取得XMLHttpRequest对象 339
13.3 XMLHttpRequest对象的事件绑定与状态维护 342
13.4 发送请求与数据 344
13.5 接收数据 346
13.6 上传文件 349
13.7 一个完整的Ajax实现 351
第14章 动画引擎 363
14.1 动画的原理 363
14.2 缓动公式 365
14.3 API的设计 368
14.4 mass Framework基于JavaScript的动画引擎 369
14.5 requestAnimationFrame 377
14.6 CSS3 transition 383
14.7 CSS3 animation 388
14.8 mass Framework基于CSS的动画引擎 390
第15章 插件化 398
15.1 jQuery的插件的一般写法 398
15.2 jQuery UI对内部类的操作 401
15.3 jQuery easy UI的智能加载与个别化制定 403
15.4 更直接地操作UI实例 406
第16章 MVVM 409
16.1 当前主流MVVM框架介绍 410
16.2 属性变化的监听 416
16.3 ViewModel 418
16.4 绑定 429
16.5 监控数组与子模板 437
· · · · · · (收起)
第1章 种子模块 1
1.1 命名空间 1
1.2 对象扩展 3
1.3 数组化 4
1.4 类型的判定 6
1.5 主流框架引入的机制——domReady 14
1.6 无冲突处理 16
第2章 模块加载系统 18
2.1 AMD规范 18
2.2 加载器所在路径的探知 19
2.3 require方法 21
2.4 define方法 27
第3章 语言模块 31
3.1 字符串的扩展与修复 31
3.2 数组的扩展与修复 43
3.3 数值的扩展与修复 50
3.4 函数的扩展与修复 56
3.5 日期的扩展与修复 61
第4章 浏览器嗅探与特征侦测 64
4.1 判定浏览器 64
4.2 事件的支持侦测 67
4.3 样式的支持侦测 69
4.4 jQuery一些常用特征的含义 70
第5章 类工厂 72
5.1 JavaScript对类的支撑 72
5.2 各种类工厂的实现 77
5.2.1 相当精巧的库——P.js 77
5.2.2 JS.Class 80
5.2.3 simple-inheritance 82
5.2.4 体现JavaScript灵活性的库——def.js 84
5.3 es5属性描述符对OO库的冲击 88
第6章 选择器引擎 100
6.1 浏览器内置的寻找元素的方法 100
6.2 getElementsBySelector 102
6.3 选择器引擎涉及的知识点 106
6.4 选择器引擎涉及的通用函数 114
6.4.1 isXML 114
6.4.2 contains 115
6.4.3 节点排序与去重 117
6.4.4 切割器 121
6.4.5 属性选择器对于空白字符的匹配策略 123
6.4.6 子元素过滤伪类的分解与匹配 125
6.5 Sizzle引擎 127
第7章 节点模块 137
7.1 节点的创建 138
7.2 节点的插入 149
7.3 节点的复制 155
7.4 节点的移除 158
7.5 innerHTML、innerText与outerHTML的处理 161
7.6 一些奇葩的元素节点 164
7.6.1 iframe元素 164
7.6.2 object元素 174
7.6.3 video标签 179
第8章 数据缓存系统 185
8.1 jQuery的第1代缓存系统 185
8.2 jQuery的第2代缓存系统 190
8.3 mass Framework的第1代数据缓存系统 193
8.4 mass Framework的第2代数据缓存系统 196
8.5 mass Framework的第3代数据缓存系统 198
8.6 总结 199
第9章 样式模块 200
9.1 主体结构 201
9.2 样式名的修正 205
9.3 个别样式的特殊处理 206
9.3.1 opacity 206
9.3.2 user-select 208
9.3.3 background-position 208
9.3.4 z-index 209
9.3.5 盒子模型 210
9.3.6 元素的尺寸 211
9.3.7 元素的显隐 218
9.3.8 元素的坐标 222
9.4 元素的滚动条的坐标 228
第10章 属性模块 229
10.1 如何区分固有属性与自定义属性 231
10.2 如何判定浏览器是否区分固有属性与自定义属性 233
10.3 IE的属性系统的三次演变 234
10.4 className的操作 235
10.5 Prototype.js的属性系统 240
10.6 jQuery的属性系统 246
10.7 mass Framework的属性系统 249
10.8 value的操作 253
第11章 事件系统 256
11.1 onXXX绑定方式的缺陷 257
11.2 attachEvent的缺陷 258
11.3 addEventListener的缺陷 259
11.4 Dean Edward的addEvent.js源码分析 260
11.5 jquery1.8.2的事件模块概览 263
11.6 jQuery.event.add的源码解读 266
11.7 jQuery.event.remove的源码解读 269
11.8 jQuery.event.dispatch的源码解读 271
11.9 jQuery.event.trigger的源码解读 276
11.10 jQuery对事件对象的修复 280
11.11 滚轮事件的修复 286
11.12 mouseenter与mouseleave事件的修复 290
11.13 focusin与focusout事件的修复 293
11.14 旧版本IE下submit的事件代理的实现 295
11.15 oninput事件的兼容性处理 296
第12章 章异步处理 298
12.1 setTimeout与setInterval 299
12.2 Mochikit Deferred 301
12.3 JSDeferred 309
12.3.1 得到一个Deferred实例 310
12.3.2 Deferred链的实现 312
12.3.3 JSDeferred的并归结果 316
12.3.4 JSDeferred的性能提速 318
12.4 jQuery Deferred 321
12.5 Promise/A与mmDeferred 327
12.6 JavaScript异步处理的前景 334
第13章 数据交互模块 339
13.1 Ajax概览 339
13.2 优雅地取得XMLHttpRequest对象 339
13.3 XMLHttpRequest对象的事件绑定与状态维护 342
13.4 发送请求与数据 344
13.5 接收数据 346
13.6 上传文件 349
13.7 一个完整的Ajax实现 351
第14章 动画引擎 363
14.1 动画的原理 363
14.2 缓动公式 365
14.3 API的设计 368
14.4 mass Framework基于JavaScript的动画引擎 369
14.5 requestAnimationFrame 377
14.6 CSS3 transition 383
14.7 CSS3 animation 388
14.8 mass Framework基于CSS的动画引擎 390
第15章 插件化 398
15.1 jQuery的插件的一般写法 398
15.2 jQuery UI对内部类的操作 401
15.3 jQuery easy UI的智能加载与个别化制定 403
15.4 更直接地操作UI实例 406
第16章 MVVM 409
16.1 当前主流MVVM框架介绍 410
16.2 属性变化的监听 416
16.3 ViewModel 418
16.4 绑定 429
16.5 监控数组与子模板 437
· · · · · · (收起)
喜欢读"JavaScript框架设计"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"JavaScript框架设计"的人也喜欢 · · · · · ·
- 单页Web应用 8.0
- 高性能网站建设指南(第二版) 7.9
- 高性能网站建设进阶指南(第二版) 7.4
- 编写可维护的JavaScript 8.1
- 七周七语言(卷2) 7.5
- HTML5程序设计(第2版) 7.2
- 机器学习系统设计 7.5
- 两周自制脚本语言 8.5
JavaScript框架设计的书评 · · · · · · ( 全部 4 条 )
能力有限,暂时看不懂,不适合初学者看
一直很敬佩司徒正美,他写博客坚持了5年多,很敬佩他的毅力。这次在图书馆里见到这本书很激动,说实话也是冲着作者来借阅的,只是现在水平有限,还是先巩固好CSS吧,这本大作先默默地收藏起来了,以后再读。。。。。
(展开)
> 更多书评 4篇
论坛 · · · · · ·
在这本书的论坛里发言以下书单推荐 · · · · · · ( 全部 )
- web前端工程师读书单 (小王)
- 书单-编程-前端 (LZX)
- Web编程与设计 (敏子爱书)
- 人民邮电出版社原创经典 (childchen)
- 前端 (cowboy)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有436人想读,手里有一本闲着?
订阅关于JavaScript框架设计的评论:
feed: rss 2.0
0 有用 MrZou 2020-03-25 21:48:22
进阶JavaScript
0 有用 PeakFish 2015-01-29 09:39:19
这本书错误,或者说笔误比较多。
0 有用 ITF杰尼龟 2015-09-16 07:47:02
作者水平是有的,感觉看过好多库的源码,在书中列了一些库的源码及自己的改进。但是组织语言上没讲出来。这本书很像是一本集jquery,protype等库的部分源码打印版本。
0 有用 wf 2015-05-12 11:18:53
各种实现原理,各种黑魔法,绝对是一本好书!值得力荐~!!
0 有用 dcchan 2022-11-13 22:17:58 广东
RIP!2022年看的第二版,作者花了不少心血,几乎毫无保留的说了自己写框架的过程。缺点是第二版应该删减一下 IE6-8的内容,另外都是细节,缺少整体架构的讲解。
0 有用 张三 2024-05-05 14:17:08 福建
技术考古
0 有用 dcchan 2022-11-13 22:17:58 广东
RIP!2022年看的第二版,作者花了不少心血,几乎毫无保留的说了自己写框架的过程。缺点是第二版应该删减一下 IE6-8的内容,另外都是细节,缺少整体架构的讲解。
7 有用 姚泽源 2022-01-29 18:27:18
21年惊闻司徒正美离世, 处于敬慕读了这本书. 感慨前端变化之快 书中重点解决的是js语言孱弱和跨浏览器兼容问题. 但14年的书, 不到7年时间, 书内知识基本成为无用之学. 类似于2020年一个人精通DOS, 虽然很厉害, 但却是也没什么用. 时间有限, 不应把精力放在半衰期太短的事务上. 标记一下, 为后人排雷
0 有用 十六点五 2020-11-04 09:29:23
现在看来,细节有借鉴,但整体上价值不高。
0 有用 韩小四 2020-06-01 08:19:21
好多已经过时了