JavaScript设计模式
Addy Osmani
徐涛 译
出版时间:2013年05月
页数:241
“每一位JavaScript开发人员都应该阅读这本书。这是一本有关JavaScript设计模式的入门书,我们在将来会经常阅读和参考这本书。”
——Andree Hansson,首席前端开发人员
“Addy Osmani的这本书让很多开发人员可以了解JavaScript设计模式。MV*和现代模块化模式部分将帮助开发者巩固他们对为了创建客户端Web应用程序可能已经在使用的技术和库的理解。”
——Eric Ferraiuolo,@ericf, YUI, Yahoo!

通过阅读本书,你将学会如何把经典和现代设计模式应用到JavaScript语言中,来编写优美、结构化和可维护的代码。如果想让代码保持高效、更易于管理,并且能同步最新的最佳实践,那么本书正是为你打造的。
本书介绍了很多流行的设计模式,包括Module(模块)模式、
Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;帮助你从现代Web应用程序开发者的角度来了解MVC、MVP、MVVM等现代架构模式的实用性。本书将带领你了解现代模块格式、有效为代码定义名称空间的方法和其他重要主题。
· 学习设计模式的结构以及如何编写设计模式;
· 了解不同的模式类别,包括创建型、结构型和行为模式;
· 介绍JavaScript中20多个经典和现代设计模式;
· 使用编写模块化代码的几种方法,包括Module模式、非同步模块定义(AMD)和CommonJS;
· 发掘在jQuery库中实现的设计模式;
· 学习流行的设计模式,从而编写可维护的jQuery插件。

  1. 第1章 介绍
  2. 第2章 什么是模式
  3. 我们每天都在使用模式
  4. 第3章 模式状态测试、proto模式及三法则
  5. 第4章 设计模式的结构
  6. 第5章 编写设计模式
  7. 第6章 反模式
  8. 第7章 设计模式类别
  9. 第8章 设计模式分类
  10. 有关类(class)的要点
  11. 第9章 javascript设计模式
  12. 9.1 constructor(构造器)模式
  13. 9.1.1 对象创建
  14. 9.1.2 基本constructor(构造器)
  15. 9.1.3 带原型的constructor(构造器)
  16. 9.2 module(模块)模式
  17. 9.2.1 对象字面量
  18. 9.2.2 module(模块)模式
  19. 9.2.3 module模式变化
  20. .9.3 revealing module(揭示模块)模式
  21. 9.3.1 优点
  22. 9.3.2 缺点
  23. 9.4 singleton(单例)模式
  24. 9.5 observer(观察者)模式
  25. 9.5.1 observer(观察者)模式和publish/subscribe(发布/订阅)模式的区别 
  26. 9.5.2 优点
  27. 9.5.3 缺点
  28. 9.5.4 publish/subscribe实现
  29. 9.6 mediator(中介者)模式
  30. 9.6.1 基本实现
  31. 9.6.2 高级实现
  32. 9.6.3 示例
  33. 9.6.4 优点和缺点
  34. 9.6.5 中介者(mediator)与观察者(observer)
  35. 9.6.6 中介者(mediator)与外观(facade) 
  36. 9.7 prototype(原型)模式
  37. 9.8 command(命令)模式
  38. 9.9 facade(外观)模式
  39. 有关抽象的要点
  40. 9.10 factory(工厂)模式
  41. 9.10.1 何时使用factory模式
  42. 9.10.2 何时不应使用factory模式
  43. 9.10.3 abstract factory(抽象工厂)
  44. 9.11 mixin模式
  45. 9.11.1 子类化
  46. 9.11.2 mixin(混入)
  47. 9.12 decorator(装饰者)模式
  48. 9.12.1 伪经典decorator(装饰者)
  49. 9.12.2 使用jquery的装饰者
  50. 9.12.3 优点和缺点
  51. 9.13 flyweight(享元)模式
  52. 9.13.1 使用flyweight模式
  53. 9.13.2 flyweight和共享数据
  54. 9.13.3 实现经典flyweight(享元)
  55. 9.13.4 转换代码以使用flyweight(享元)模式 
  56. 9.13.5 基本工厂
  57. 9.13.6 管理外部状态
  58. 9.13.7 flyweight(享元)模式和dom 
  59. 第10章 javascript mv*模式
  60. 10.1 mvc 
  61. smalltalk-80 mvc
  62. 10.2 为javascript开发人员提供的mvc 
  63. 10.2.1 model(模型)
  64. 10.2.2 view(视图)
  65. 10.2.3 controller(控制器)
  66. 10.2.4 spine.js与backbone.js 
  67. 10.3 mvc为我们提供了什么
  68. 10.4 javascript中的smalltalk-80 mvc 
  69. 10.4.1 深入挖掘
  70. 10.4.2 总结
  71. 10.5 mvp 
  72. 10.5.1 model、view和presenter 
  73. 10.5.2 mvp或mvc?
  74. 10.5.3 mvc、mvp和backbone.js 
  75. 10.6 mvvm 
  76. 10.6.1 历史
  77. 10.6.2 model 
  78. 10.6.3 view 
  79. 10.6.4 viewmodel 
  80. 10.6.5 小结:view和viewmodel 
  81. 10.6.6 小结:viewmodel和model 
  82. 10.7 利与弊
  83. 10.7.1 优点
  84. 10.7.2 缺点
  85. 10.8 使用更松散数据绑定的mvvm
  86. 10.9 mvc、mvp与mvvm 
  87. 10.10 backbone.js与knockoutjs 
  88. 第11章 模块化的javascript设计模式
  89. 11.1 脚本加载器要点
  90. 11.2 amd
  91. 11.2.1 模块入门
  92. 11.2.2 使用dojo的amd模块
  93. 11.2.3 amd模块设计模式(dojo)
  94. 11.2.4 使用jquery的amd模块
  95. 11.2.5 amd总结
  96. 11.3 commonjs 
  97. 11.3.1 入门指南
  98. 11.3.2 使用多个依赖
  99. 11.3.3 支持commonjs的加载器和框架
  100. 11.3.4 commonjs适用于浏览器吗?
  101. 11.3.5 延伸阅读
  102. 11.4 amd和commonjs:互相竞争,标准同效
  103. umd:用于插件的amd和commonjs兼容模块
  104. 11.5 es harmony 
  105. 11.5.1 具有imports和exports的模块
  106. 11.5.2 从远程数据源加载的模块
  107. 11.5.3 模块加载器api 
  108. 11.5.4 用于服务器的类commonjs模块
  109. 11.5.5 具有构造函数、getter和setter的类 11.5.6 es harmony总结
  110. 11.5.7 延伸阅读
  111. 11.6 总结
  112. 第12章 jquery中的设计模式
  113. 12.1 composite(组合)模式
  114. 12.2 adapter(适配器)模式
  115. 12.3 facade(外观)模式
  116. 12.4 observer(观察者)模式
  117. 12.5 iterator(迭代器)模式
  118. 12.6 延迟初始化
  119. 12.7 proxy(代理)模式
  120. 12.8 builder(生成器)模式
  121. 第13章 jquery插件设计模式
  122. 13.1 模式
  123. 13.2 lightweight start模式
  124. 延伸阅读
  125. 13.3 完整的widget factory模式
  126. 延伸阅读
  127. 13.4 嵌套命名空间插件模式
  128. 延伸阅读
  129. 13.5 自定义事件插件模式(使用widget factory)
  130. 延伸阅读
  131. 13.6 使用dom-to-object bridge模式的原型继承
  132. 延伸阅读
  133. 13.7 jquery ui widget factory bridge模式 
  134. 延伸阅读
  135. 13.8 使用widget factory的jquery mobile widget 
  136. 13.9 requirejs和jquery ui widget factory 
  137. 13.9.1 用法
  138. 13.9.2 延伸阅读
  139. 13.10 全局选项和单次调用可重写选项(最佳选项模式)
  140. 延伸阅读
  141. 13.11 高可配和高可变的插件模式
  142. 延伸阅读
  143. 13.12 是什么使插件超越模式
  144. 13.12.1 质量
  145. 13.12.2 代码风格
  146. 13.12.3 兼容性
  147. 13.12.4 可靠性
  148. 13.12.5 性能
  149. 13.12.6 文档
  150. 13.12.7 维护的可能性
  151. 13.13 总结
  152. 13.14 命名空间模式
  153. 13.15 命名空间基础
  154. 13.15.1 单一全局变量
  155. 13.15.2 命名空间前缀
  156. 13.15.3 对象字面量表示法
  157. 13.15.4 嵌套命名空间
  158. 13.15.5 立即调用的函数表达式(iife)
  159. 13.15.6 命名空间注入
  160. 13.16 高级命名空间模式
  161. 13.16.1 自动嵌套的命名空间
  162. 13.16.2 依赖声明模式
  163. 13.16.3 深度对象扩展
  164. 13.16.4 推荐
  165. 第14章 总结
  166. 附录 参考文献
书名:JavaScript设计模式
作者:Addy Osmani
译者:徐涛 译
国内出版社:人民邮电出版社
出版时间:2013年05月
页数:241
书号:978-7-115-31454-3
原版书书名:Learning JavaScript Design Patterns
原版书出版商:O'Reilly Media
Addy Osmani
 
Addy Osmani,谷歌Chrome团队的开发工程师,对JavaScript应用程序架构有着强烈的爱好。他创建了一些比较流行的项目,如TodoMVC,并对Yeoman、Modernizr和jQuery等其他开源项目也有重要贡献。Addy Osmani是一位高产的博主(http://addyosmani.com/blog),他也是O’Reilly出版的《JavaScript设计模式》一书的作者。