《深入浅出RxJS》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:程墨编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111596646
  • 页数:400 页
图书介绍:本书系统讲解RxJS响应式编程的技术原理与应用。第1章剖析函数响应式编程的基本概念,通过简单RxJS代码引入函数响应式编程,并与传统编程方式对比,解释这种编程范式的优势,以及这种范式形成的历史。第2章介绍学习RxJS必须掌握的基本概念,包括数据流、操作符和观察者模式。第3~9章介绍RxJS的各种操作符,以及如何选择恰当的操作符来完成不同的任务。第10章介绍RxJS如何实现多播的方式。第11章介绍实现调度Scheduler的作用、原理与使用。第12章介绍如何调试和测试RxJS相关代码,写出高可测试性代码。第13章介绍如何在React应用中使用RxJS,提高代码质量。第14章介绍Redux与RxJS的组合应用,发挥两者的共同优势。第15章介绍一个综合案例,用RxJS实现网页游戏Breakout,并剖析RxJS如何实现动画和绘图。

第1章 函数响应式编程 1

1.1一个简单的RxJS例子 1

1.2函数式编程 5

1.2.1什么是函数式编程 5

1.2.2为什么函数式编程最近才崛起 11

1.2.3函数式编程和面向对象编程的比较 13

1.3响应式编程 14

1.4 Reactive Extension 15

1.5 RxJS是否是函数响应式编程 16

1.6函数响应式编程的优势 17

1.7本章小结 18

第2章 RxJS入门 19

2.1 RxJS的版本和运行环境 19

2.2 Observable和Observer 24

2.2.1观察者模式 24

2.2.2迭代器模式 25

2.2.3创造Observable 26

2.2.4跨越时间的Observable 28

2.2.5永无止境的Observable 29

2.2.6 Observable的完结 30

2.2.7 Observable的出错处理 31

2.2.8 Observer的简单形式 32

2.3退订Observable 33

2.4 Hot Observable和Cold Observable 35

2.5操作符简介 37

2.6弹珠图 39

2.7本章小结 41

第3章 操作符基础 42

3.1为什么要有操作符 42

3.2操作符的分类 44

3.2.1功能分类 45

3.2.2静态和实例分类 46

3.3如何实现操作符 49

3.3.1操作符函数的实现 49

3.3.2关联Observable 53

3.3.3改进的操作符定义 55

3.3.4 lettable/pipeable操作符 60

3.4本章小结 68

第4章 创建数据流 69

4.1创建类操作符 70

4.2创建同步数据流 70

4.2.1 create:毫无神奇之处 71

4.2.2 of:列举数据 71

4.2.3 range:指定范围 73

4.2.4 generate:循环创建 74

4.2.5 repeat:重复数据的数据流 75

4.2.6三个极简的操作符:empty、never和throw 78

4.3创建异步数据的Observable对象 80

4.3.1 interval和timer:定时产生数据 80

4.3.2 from:可把一切转化为Observable 82

4.3.3 fromPromise:异步处理的交接 84

4.3.4 fromEvent 85

4.3.5 fromEventPattern 87

4.3.6 ajax 88

4.3.7 repeatWhen 89

4.3.8 defer 91

4.4本章小结 92

第5章 合并数据流 93

5.1合并类操作符 94

5.1.1 concat:首尾相连 94

5.1.2 merge:先到先得快速通过 96

5.1.3 zip:拉链式组合 99

5.1.4 combineLatest:合并最后一个数据 102

5.1.5 withLatestFrom 109

5.1.6解决glitch 112

5.1.7 race:胜者通吃 115

5.1.8 startWith 115

5.1.9 forkJoin 117

5.2高阶Observable 118

5.2.1高阶Observable的意义 119

5.2.2操作高阶Observable的合并类操作符 120

5.2.3进化的高阶Observable处理 124

5.3本章小结 128

第6章 辅助类操作符 129

6.1数学类操作符 129

6.1.1 count:统计数据个数 130

6.1.2 max和min:最大最小值 130

6.1.3 reduce:规约统计 131

6.2条件布尔类操作符 133

6.2.1 every 134

6.2.2 find和findIndex 135

6.2.3 isEmpty 137

6.2.4 defaultIfEmpty 138

6.3本章小结 138

第7章 过滤数据流 139

7.1过滤类操作符的模式 140

7.1.1 filter 141

7.1.2 first 142

7.1.3 last 144

7.1.4 take一族操作符 145

7.1.5计时的点击计数网页程序 150

7.1.6 skip 151

7.1.7 skipWhile和skipUntil 151

7.2回压控制 152

7.2.1 throttle和debounce 154

7.2.2 auditTime和 audit 164

7.2.3 sampleTime和sample 166

7.2.4根据数据序列做回压控制 168

7.3其他过滤方式 171

7.3.1 ignoreElements 172

7.3.2 elementAt 172

7.3.3 single 173

7.4本章小结 173

第8章 转化数据流 174

8.1转化类操作符 174

8.2映射数据 175

8.2.1 map 176

8.2.2 mapTo 177

8.2.3 pluck 178

8.3缓存窗口:无损回压控制 179

8.3.1 windowTime和bufferTime 180

8.3.2 windowCount和bufferCount 183

8.3.3 windowWhen和bufferWhen 184

8.3.4 windowToggle和buffer-Toggle 185

8.3.5 window和buffe 186

8.4高阶的map 188

8.4.1 concatMap 189

8.4.2 mergeMap 192

8.4.3 switchMap 193

8.4.4 exhaustMap 195

8.4.5高阶的MapTo 195

8.4.6 expand 196

8.5数据分组 196

8.6累计数据 200

8.6.1 scan 200

8.6.2 mergeScan 201

8.7本章小结 203

第9章 异常错误处理 204

9.1异常处理不可避免 204

9.2异常处理的难点 206

9.2.1 try/catch只支持同步运算 207

9.2.2回调函数的局限 207

9.2.3 Promise的异常处理 209

9.3 RxJS的异常处理 212

9.3.1 catch 214

9.3.2 retry 216

9.3.3 retryWhen 217

9.3.4 finally 220

9.4重试的本质 221

9.5本章小结 223

第10章 多播 225

10.1数据流的多播 225

10.2 Hot和Cold数据流差异 228

10.3 Subject 230

10.3.1两面神Subject 230

10.3.2用Subject实现多播 233

10.3.3 makeHot操作符 234

10.3.4 Subject不能重复使用 235

10.3.5 Subject可以有多个上游 237

10.3.6 Subject的错误处理 239

10.4支持多播的操作符 241

10.4.1 multicast 241

10.4.2 publish 253

10.4.3 share 255

10.5高级多播功能 257

10.5.1 publishLast和Async-Subject 258

10.5.2 pubishReplay和Replay-Subject 259

10.5.3 publishBehavior和BehaviorSubject 262

10.6本章小结 263

第11章 掌握时间的Scheduler 265

11.1 Scheduler的调度作用 265

11.2 RxJS提供的Scheduler 268

11.3 Scheduler的工作原理 269

11.3.1单线程的JavaScript 270

11.3.2调用栈和事件循环 272

11.3.3 Scheduler如何工作 275

11.4支持Scheduler的操作符 279

11.4.1创造类和合并类操作符 279

11.4.2 observeOn 281

11.4.3 subscribeOn 282

11.5本章小结 283

第12章 RxJS的调试和测试 284

12.1调试方法 284

12.1.1无用武之地的Debugger 285

12.1.2利用日志来调试 286

12.1.3利用do来插入调试代码 287

12.1.4改进的日志调试方法 290

12.1.5数据流依赖图 291

12.1.6弹珠图 292

12.2单元测试 293

12.2.1单元测试的作用 294

12.2.2 RxJS天生适合单元测试 297

12.2.3单元测试的结构 298

12.2.4 RxJS单元测试中的时间 303

12.2.5操纵时间的TestScheduler 306

12.2.6可测试性代码 325

12.3本章小结 340

第13章 用RxJS驱动React 341

13.1 React简介 341

13.1.1为什么选择React 341

13.1.2 React如何工作 343

13.2简单的React应用Counter 350

13.3利用RxJS管理React状态 356

13.3.1利用Subject作为桥梁 356

13.3.2用高阶组件连接RxJS 359

13.4本章小结 365

第14章 Redux和RxJS结合 366

14.1 Redux简介 366

14.1.1 Redux的工作方式 367

14.1.2构建Redux应用 368

14.2用RxJS实现Redux 372

14.3 Redux和RxJS比较 374

14.4 Redux-Observable:Redux和RxJS的结合 375

14.5本章小结 380

第15章 RxJS游戏开发 381

15.1 breakout的历史 381

15.2程序设计 383

15.3用RxJS实现breakout 385

15.4本章小结 397

结语 398