设计模式 9787115396860
框架设计(第2版) 9787115464293
bm998824
分类: Web技术 > 前端开发 >
【预计上市时间:09月05日】
本书全面讲解了框架设计及相关的知识,主要内容包括种子模块、语言模块、浏览器嗅探与特征侦测、类工厂、选择器引擎、节点模块、数据缓存模块、样式模块、属性模块、PC端和移动端的事件系统、jQuery的事件系统、异步模型、数据交互模块、动画引擎、MVVM、前端模板(静态模板)、MVVM的动态模板、性能墙与复杂墙、组件、jQuery时代的组件方案、avalon2的组件方案、react的组件方案等。
本书适合前端设计人员、开发者、移动UI设计者、程序员和项目经理阅读,也可作为相关专业学习用书和培训学校教材。
设计模式
《设计模式》共分六篇四十章,首先讨论了几种函数的编写方式,体会在编程中的灵活性;然后讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;后探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。本书还讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。本书几乎包含了关于设计模式的全部知识,是进行高效编程必备的学习手册。
《设计模式》适合初学者、前端设计者、程序员学习,也可以作为大专院校相关专业师生的学习用书,以及培训学校的教材。
作者推荐
专业讲解全面Web前端设计模式书
阿里巴巴、百度前端高级工程师鼎力推荐
Web前端界以一种讲故事方式讲解每一种模式,让每位读者都能读懂。
书中案例都是实际工作中的真实案例,让读者身临其境。
全面涵盖专门针对的36个设计模式,帮助读者尽快提高开发效率
深入剖析面向对象的设计原则及代码重构,帮助读者快速融入团队项目开发中
本书通过职场主人公“小铭”实战历练,介绍了他从菜鸟到高级程序员的蜕变过程,值得每一个程序员借鉴和学习!
各种设计模式的原则和准确定义、应用方法实践图书目录
目录
一篇 面向对象编程
第1章 灵活的语言—— 2
1.1 入职一天 2
1.2 函数的另一种形式 2
1.3 用对象收编变量 3
1.4 对象的另一种形式 4
1.5 真假对象 4
1.6 类也可以 5
1.7 一个检测类 5
1.8 方法还可以这样用 6
1.9 函数的祖先 7
1.10 可以链式添加吗 8
1.11 换一种方式使用方法 9
下章剧透 10
忆之获 10
我问你答 10
第2章 写的都是看到的——面向
对象编程 11
2.1 两种编程风格——面向过程与
面向对象 11
2.2 包装明星——封装 12
2.3 传宗接代——继承 19
2.4 老师不止一位——多继承 27
2.5 多种调用方式——多态 29
下章剧透 30
忆之获 31
我问你答 31
第二篇 创建型设计模式
第3章 神奇的魔术师——简单工厂模式 34
3.1 工作中的一次需求 34
3.2 如果类太多,那么提供一个 35
3.3 一个对象有时也可代替许多类 37
3.4 你的理解决定你选择的方式 38
下章剧透 39
忆之获 39
我问你答 39
第4章 给我一张名片——工厂方法模式 40
4.1 广告展现 40
4.2 方案的抉择 41
4.3 安全模式类 42
4.4 安全的工厂方法 43
下章剧透 44
忆之获 44
我问你答 44
第5章 出现的都是幻觉——抽象
工厂模式 45
5.1 带头模范——抽象类 45
5.2 幽灵工厂——抽象工厂模式 46
5.3 抽象与实现 47
下章剧透 49
忆之获 49
我问你答 49
第6章 分即是合——建造者模式 50
6.1 发布简历 50
6.2 创建对象的另一种形式 50
6.3 创建一位应聘者 52
下章剧透 53
忆之获 53
我问你答 54
第7章 语言之魂——原型模式 55
7.1 语言中的原型 55
7.2 创建一个焦点图 55
7.3 优的解决方案 56
7.4 原型的拓展 58
7.5 原型继承 58
下章剧透 59
忆之获 60
我问你答 60
第8章 一个人的寂寞——单例模式 61
8.1 滑动特效 61
8.2 命名空间的管理员 62
8.3 模块分明 63
8.4 创建一个小型代码库 63
8.5 无法修改的静态变量 64
8.6 惰性单例 65
下章剧透 65
忆之获 66
我问你答 66
第三篇 结构型设计模式
第9章 套餐服务——外观模式 68
9.1 添加一个点击事件 68
9.2 兼容方式 69
9.3 除此之外 70
9.4 小型代码库 70
下章剧透 71
忆之获 71
我问你答 72
第10章 水管弯弯——适配器模式 73
10.1 引入jQuery 73
10.2 生活中的适配器 73
10.3 jQuery适配器 74
10.4 适配异类框架 74
10.5 参数适配器 75
10.6 数据适配 76
10.7 服务器端数据适配 77
下章剧透 77
忆之获 77
我问你答 78
第11章 牛郎织女——代理模式 79
11.1 无法获取图片上传模块数据 79
11.2 一切只因跨域 79
11.3 站长统计 80
11.4 JSONP 81
11.5 代理模板 81
下章剧透 83
忆之获 83
我问你答 84
第12章 房子装修——装饰者模式 85
12.1 为输入框的新需求 85
12.2 装饰已有的功能对象 86
12.3 为输入框添砖加瓦 86
下章剧透 87
忆之获 87
我问你答 88
第13章 城市间的公路——桥接模式 89
13.1 添加事件交互 89
13.2 提取共同点 90
13.3 事件与业务逻辑之间的桥梁 90
13.4 多元化对象 91
下章剧透 93
忆之获 93
我问你答 93
第14章 超值午餐——组合模式 94
14.1 新闻模块十万火急 94
14.2 餐厅里的套餐业务 95
14.3 每个成员要有祖先 95
14.4 组合要有容器类 96
14.5 创建一个新闻类 97
14.6 把新闻模块创建出来 99
14.7 表单中的应用 100
下章剧透 101
忆之获 101
我问你答 102
第15章 城市公交车——享元模式 103
15.1 翻页需求 103
15.2 冗余的结构 104
15.3 享元对象 104
15.4 实现需求 105
15.5 享元动作 106
下章剧透 108
忆之获 108
我问你答 108
第四篇 行为型设计模式
第16章 照猫画虎——模板方法模式 110
16.1 提示框归一化 110
16.2 美味的蛋糕 111
16.3 创建基本提示框 111
16.4 模板的原型方法 112
16.5 根据模板创建类 113
16.6 继承类也可作为模板类 113
16.7 创建一个提示框 114
16.8 创建多类导航 114
16.9 创建导航更容易 116
下章剧透 116
忆之获 116
我问你答 117
第17章 通信卫星——观察者模式 118
17.1 团队开发的坎坷 118
17.2 卫星的故事 118
17.3 创建一个观察者 119
17.4 拉出来溜溜 121
17.5 使用前的思考 121
17.6 大显身手 121
17.7 对象间解耦 123
17.8 课堂演练 124
下章剧透 125
忆之获 125
我问你答 125
第18章 超级玛丽——状态模式 126
18.1 美图片 126
18.2 分支判断的思考 126
18.3 状态对象的实现 127
18.4 状态对象演练 127
18.5 超级玛丽 128
18.6 状态的优化 129
18.7 两种使用方式 130
下章剧透 131
忆之获 131
我问你答 131
第19章 活诸葛——策略模式 132
19.1 商品促销 132
19.2 活诸葛 132
19.3 策略对象 133
19.4 诸葛奇谋 133
19.5 缓冲函数 134
19.6 表单验证 134
19.7 算法拓展 135
19.8 算法调用 135
下章剧透 136
忆之获 136
我问你答 137
第20章 有序车站——职责链模式 138
20.1“半成品”需求 138
20.2 分解需求 139
20.3 一站——请求模块 139
20.4 下一站——响应数据适配模块 140
20.5 终点站——创建组件模块 141
20.6 站点检测——单元测试 141
20.7 方案确定 142
下章剧透 142
忆之获 143
我问你答 143
第21章 命令模式 144
21.1 自由化创建视图 144
21.2 命令对象 145
21.3 视图创建 145
21.4 视图展示 146
21.5 命令接口 147
21.6 大功告成 147
21.7 绘图命令 148
21.8 写一条命令 150
下章剧透 150
忆之获 151
我问你答 151
第22章 驻华大使——访问者模式 152
22.1 设置样式 152
22.2 自娱自乐的IE 152
22.3 访问操作元素 153
22.4 事件自定义数据 153
22.5 原生对象构造器 154
22.6 对象访问器 154
22.7 操作类数组 155
下章剧透 156
忆之获 156
我问你答 156
第23章 媒婆——中介者模式 157
23.1 导航设置层 157
23.2 创建中介者对象 158
23.3 试试看,可否一用 159
23.4 攻克需求 159
23.5 订阅消息 160
23.6 发布消息 161
下章剧透 162
忆之获 162
我问你答 162
第24章 做好笔录——备忘录模式 163
24.1 新闻展示 163
24.2 缓存数据 164
24.3 新闻缓存器 164
24.4 工作中的备忘录 166
下章剧透 166
忆之获 166
我问你答 166
第25章 点钞机——迭代器模式 167
25.1 简化循环遍历 167
25.2 迭代器 167
25.3 实现迭代器 168
25.4 小试牛刀 170
25.5 数组迭代器 171
25.6 对象迭代器 171
25.7 试用迭代器 172
25.8 同步变量迭代器 172
25.9 分支循环嵌套问题 174
25.10 解决方案 176
下章剧透 177
忆之获 177
我问你答 177
第26章 语言翻译——解释器模式 178
26.1 统计元素路径 178
26.2 描述文法 179
26.3 解释器 179
深入理解 JavaScript 的本质:从灵活运用到架构构建 在这本深入探索 JavaScript 世界的力作中,我们将带领读者踏上一段从理解设计模式的精妙之处,到掌握框架设计核心理念的旅程。本书旨在为 JavaScript 开发者提供一套坚实的理论基础和丰富的实践经验,帮助他们构建出更具可维护性、可扩展性和健壮性的应用程序。我们不满足于表面上的语法掌握,而是力求深入到 JavaScript 的运行机制和设计思维的精髓,让每一行代码都蕴含着智慧与优雅。 第一部分:JavaScript 设计模式的艺术——重构代码的智慧与灵感 在软件开发的漫漫征途中,设计模式如同经验丰富的航海家手中的罗盘,为我们指引方向,规避暗礁。它们是前人智慧的结晶,是解决常见问题的成熟方案,能够帮助我们编写出更清晰、更易于理解和维护的代码。本部分将以详实而生动的笔触,剖析 JavaScript 中最常用、最经典的设计模式,并辅以大量贴合实际的示例,让你在代码实践中体会设计模式的魅力。 创建型模式:生命的起点与对象的诞生 单例模式 (Singleton):我们常常需要确保某个类在整个应用程序中只有一个实例,例如全局配置对象、日志记录器等。本节将深入讲解单例模式的实现方式,包括经典的饿汉式和懒汉式,以及在 JavaScript 异步加载场景下的考量。你将学会如何有效地控制对象的创建,避免资源浪费和潜在的状态冲突。 工厂模式 (Factory Pattern):当对象的创建逻辑变得复杂,或者需要根据不同条件创建不同类型的对象时,工厂模式便显现出其强大的威力。我们将探讨简单工厂、工厂方法和抽象工厂,并演示如何利用它们来简化对象的实例化过程,提高代码的灵活性和可复用性。你将能够轻松应对多变的业务需求,实现代码的解耦。 建造者模式 (Builder Pattern):对于那些拥有大量可选参数或复杂构建过程的对象,建造者模式提供了一种优雅的解决方案。它将对象的构建过程分解成多个步骤,使得客户端代码可以灵活地组合这些步骤来创建不同表现形式的对象。本节将通过生动的例子,展示建造者模式如何提升代码的可读性和维护性,避免构造函数参数过多的问题。 原型模式 (Prototype):JavaScript 的原型链机制是其独特的魅力所在。我们将深入讲解原型模式,理解对象如何通过原型链继承属性和方法,以及如何利用 `Object.create()` 等现代 API 来实现高效的对象复制和继承。你将深刻理解 JavaScript 中“一切皆对象”的哲学,并能更灵活地运用原型来优化代码。 结构型模式:构建优雅的系统骨架 适配器模式 (Adapter Pattern):在集成不同接口或现有代码时,适配器模式能够充当“翻译官”,将不兼容的接口转换成客户端可以接受的形式。本节将展示如何通过适配器模式,轻松连接遗留系统与新模块,或者统一不同第三方库的调用方式,从而实现代码的无缝集成。 装饰器模式 (Decorator Pattern):想要在不修改原有对象结构的前提下,动态地为对象添加新的功能或职责?装饰器模式就是为此而生。我们将探讨如何使用函数式或类的方式实现装饰器,为你的代码注入灵活性,实现代码的“即插即用”。 代理模式 (Proxy Pattern):代理模式允许我们创建一个对象的“替身”,在访问原始对象之前或之后,执行额外的操作,如延迟加载、访问控制、日志记录等。本节将深入讲解 JavaScript 中 `Proxy` 对象的使用,以及如何利用它来实现强大的功能,例如数据劫持、事件监听等。 组合模式 (Composite Pattern):当我们需要表示“部分-整体”的层次结构,并且希望客户端能够统一对待单个对象和组合对象时,组合模式便是理想的选择。我们将演示如何通过组合模式,构建出具有递归结构的类,实现对复杂树状结构的统一管理和操作。 外观模式 (Facade Pattern):面对一个复杂的子系统,外观模式提供了一个简化的接口,使得客户端能够更轻松地与其交互。本节将讲解如何利用外观模式,封装复杂的逻辑,提供清晰的 API,从而降低系统的耦合度,提高用户的使用便利性。 行为型模式:让对象间的协作更高效 观察者模式 (Observer Pattern):当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。观察者模式是事件驱动编程的核心,我们将深入讲解其原理,并展示如何在 DOM 事件、异步操作等场景下应用它,实现松耦合的组件通信。 策略模式 (Strategy Pattern):当一个算法族的不同实现可以相互替换时,策略模式便能派上用场。它将不同的算法封装成独立的策略对象,允许客户端在运行时动态地选择和切换算法,从而提高代码的灵活性和可扩展性。 命令模式 (Command Pattern):将请求封装成一个对象,使得我们可以参数化客户端,对不同的请求进行排队或记录日志,以及支持撤销操作。本节将讲解命令模式的实现,让你能够更好地管理和执行一系列操作。 迭代器模式 (Iterator Pattern):提供一种方法来访问聚合对象中的各个元素,而又不暴露其内部表示。我们将深入讲解如何实现自己的迭代器,以及如何利用 JavaScript 的迭代器协议,遍历各种数据结构。 中介者模式 (Mediator Pattern):当多个对象之间存在复杂的交互关系时,中介者模式能够通过引入一个中介者对象来协调它们之间的通信,从而降低对象间的直接依赖。本节将展示如何利用中介者模式,简化复杂系统中的对象协作。 状态模式 (State Pattern):允许一个对象在其内部状态改变时改变其行为。我们将深入讲解状态模式,如何让对象根据不同的状态表现出不同的行为,从而简化复杂的条件判断。 第二部分:JavaScript 框架设计的艺术——架构的思考与实践 掌握了设计模式这一强大的工具集,我们便能更进一步,思考如何构建健壮、高效、易于维护的 JavaScript 框架。本部分将带你走进框架设计的殿堂,从宏观的架构设计理念,到微观的具体实现细节,揭示现代 JavaScript 框架背后的设计哲学。 模块化与组件化:构建可复用的积木 CommonJS、AMD、ES Modules 的演进与比较:深入剖析不同模块化规范的优缺点,理解它们如何解决 JavaScript 的作用域和依赖管理问题。我们将重点讲解 ES Modules 的强大之处,以及如何在现代开发流程中高效地使用它们。 组件化设计的原则与实践:组件化是构建大型复杂应用的关键。我们将探讨如何设计可独立、可复用、可组合的组件,以及如何通过 props、state、生命周期等机制来管理组件的状态和交互。 虚拟 DOM 与 diffing 算法:理解虚拟 DOM 的概念,以及它如何通过高效的 diffing 算法来最小化实际 DOM 的操作,从而提升应用的性能。我们将深入探讨 diffing 算法的原理和实现。 数据管理与状态流:让数据在应用中自由流动 响应式数据绑定:深入理解响应式数据绑定的核心原理,包括数据劫持、依赖收集、派发更新等。我们将分析不同框架如何实现响应式,以及如何利用它来构建动态、交互式的用户界面。 单向数据流与状态管理:探讨单向数据流的设计理念,以及如何通过集中式状态管理解决方案(如 Redux、Vuex 的思想)来管理复杂的应用状态。我们将分析这些模式如何提高应用的可预测性和调试效率。 异步操作与副作用处理:如何优雅地处理网络请求、定时器等异步操作?我们将讲解 Promise、async/await 的高级用法,以及如何结合状态管理库来统一管理异步操作的副作用。 路由与导航:构建流畅的用户体验 客户端路由的原理与实现:深入理解客户端路由如何通过 History API 或 Hash 模式来改变 URL 而不重新加载页面,实现单页应用的流畅导航。 路由守卫与权限控制:学习如何通过路由守卫来实现导航前的逻辑判断,如用户认证、权限检查等,确保用户访问的安全性。 性能优化与工程化:打造高效、可维护的项目 代码分割与懒加载:如何减小初始包体积,提高首屏加载速度?我们将讲解代码分割和懒加载的技术,以及它们在现代构建工具中的应用。 Tree Shaking 与 Scope Hoisting:理解这些打包工具如何消除死代码,优化模块依赖,提升最终打包结果的效率。 构建工具与开发流程:介绍 Webpack、Vite 等主流构建工具的核心概念,以及如何配置它们来优化开发流程,实现自动化构建、热更新等功能。 单元测试与端到端测试:为何测试如此重要?我们将讲解单元测试和端到端测试的基本概念,以及如何利用 Jest、Cypress 等工具来保证代码质量。 框架设计思想与架构模式 MVVM、MVC、MVP 等经典架构模式的解读:在理解设计模式的基础上,我们将进一步分析这些架构模式在框架设计中的应用,以及它们如何组织代码,实现关注点分离。 框架的设计原则:我们将总结并探讨一个优秀框架应具备的设计原则,如简单性、可扩展性、可维护性、性能等。 如何从零开始构建一个简单的框架:通过一个简化的实例,我们将亲手实践框架的搭建过程,让你对框架的内部运作有更直观的认识。 本书内容丰富,逻辑清晰,图文并茂,旨在帮助读者建立起一套完整的 JavaScript 开发体系。我们相信,通过对设计模式的深入理解和对框架设计原理的透彻把握,你将能够驾驭更复杂的项目,编写出更具生命力的 JavaScript 代码,成为一名真正卓越的 JavaScript 开发者。
我非常欣赏作者在全书贯穿的那种严谨又务实的态度。很多技术书籍要么过于学术化,读起来像啃天书;要么过于“教程化”,只教你实现,不解释原理。但这两本书的平衡做得非常好。设计模式部分,它没有停留在对ES5语法的旧有依赖,而是非常自然地过渡到ES6+的新特性上,比如类(Class)语法下的继承和混入(Mixin)模式的应用,让老知识焕发出新的活力。框架设计部分,它没有直接照搬React或Vue的内部实现,而是构建了一个基于“最小可行框架”的模型进行剖析,这使得读者可以很容易地“逆向工程”出核心思想,而不是被复杂的源码淹没。特别是关于状态管理和数据流控制的章节,它提供了一种清晰的框架来思考“数据应该如何流动才能最少出错”,这比单纯学习Redux或MobX的API要深刻得多。总的来说,这两本书为我提供了一套可以长期受益的“武器库”,让我在面对任何新的技术浪潮时,都能快速抓住其背后的设计本质。