• 【全新正版】 深入浅出RxJS
21年品牌 40万+商家 超1.5亿件商品

【全新正版】 深入浅出RxJS

全新正版图书,支持七天退换,可开具电子发票。

68.96 7.7折 89 全新

库存2件

上海黄浦
认证卖家担保交易快速发货售后保障

作者程墨 编著

出版社机械工业出版社

ISBN9787111596646

出版时间2018-05

装帧平装

开本16开

定价89元

货号30166362

上书时间2024-04-04

轩天书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
程墨,资历架构师,曾任职于摩托罗拉、雅虎和微软,云鸟配送平台联合创始人,目前服务于美国视频服务公司Hulu。

目录
前言
章函数响应式编程1
1.1一个简单的RxJS例子1
1.2函数式编程5
1.2.1什么是函数式编程5
1.2.2为什么函数式编程最近才崛起11
1.2.3函数式编程和面向对象编程的比较13
1.3响应式编程14
1.4ReactiveExtension15
1.5RxJS是否是函数响应式编程16
1.6函数响应式编程的优势17
1.7本章小结18
第2章RxJS入门19
2.1RxJS的版本和运行环境19
2.2Observable和Observer24
2.2.1观察者模式24
2.2.2迭代器模式25
2.2.3创造Observable26
2.2.4跨越时间的Observable28
2.2.5永无止境的Observable29
2.2.6Observable的完结30
2.2.7Observable的出错处理31
2.2.8Observer的简单形式32
2.3退订Observable33
2.4HotObservable和ColdObservable35
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关联Observable53
3.3.3改进的操作符定义55
3.3.4lettable/pipeable操作符60
3.4本章小结68
第4章创建数据流69
4.1创建类操作符70
4.2创建同步数据流70
4.2.1create:毫无神奇之处71
4.2.2of:列举数据71
4.2.3range:指定范围73
4.2.4generate:循环创建74
4.2.5repeat:重复数据的数据流75
4.2.6三个极简的操作符:empty、never和throw78
4.3创建异步数据的Observable对象80
4.3.1interval和timer:定时产生数据80
4.3.2from:可把一切转化为Observable82
4.3.3fromPromise:异步处理的交接84
4.3.4fromEvent85
4.3.5fromEventPattern87
4.3.6ajax88
4.3.7repeatWhen89
4.3.8defer91
4.4本章小结92
第5章合并数据流93
5.1合并类操作符94
5.1.1concat:首尾相连94
5.1.2merge:先到先得快速通过96
5.1.3zip:拉链式组合99
5.1.4combineLatest:合并最后一个数据102
5.1.5withLatestFrom109
5.1.6解决glitch112
5.1.7race:胜者通吃115
5.1.8startWith115
5.1.9forkJoin117
5.2高阶Observable118
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.1count:统计数据个数130
6.1.2max和min:优选最小值130
6.1.3reduce:规约统计131
6.2条件布尔类操作符133
6.2.1every134
6.2.2find和findIndex135
6.2.3isEmpty137
6.2.4defaultIfEmpty138
6.3本章小结138
第7章过滤数据流139
7.1过滤类操作符的模式140
7.1.1filter141
7.1.2first142
7.1.3last144
7.1.4take一族操作符145
7.1.5计时的点击计数网页程序150
7.1.6skip151
7.1.7skipWhile和skipUntil151
7.2回压控制152
7.2.1throttle和debounce154
7.2.2auditTime和audit164
7.2.3sampleTime和sample166
7.2.4根据数据序列做回压控制168
7.3其他过滤方式171
7.3.1ignoreElements172
7.3.2elementAt172
7.3.3single173
7.4本章小结173
第8章转化数据流174
8.1转化类操作符174
8.2映射数据175
8.2.1map176
8.2.2mapTo177
8.2.3pluck178
8.3缓存窗口:无损回压控制179
8.3.1windowTime和bufferTime180
8.3.2windowCount和bufferCount183
8.3.3windowWhen和bufferWhen184
8.3.4windowToggle和buffer-Toggle185
8.3.5window和buffer186
8.4高阶的map188
8.4.1concatMap189
8.4.2mergeMap192
8.4.3switchMap193
8.4.4exhaustMap195
8.4.5高阶的MapTo195
8.4.6expand196
8.5数据分组196
8.6累计数据200
8.6.1scan200
8.6.2mergeScan201
8.7本章小结203
第9章异常错误处理204
9.1异常处理不可避免204
9.2异常处理的难点206
9.2.1try/catch只支持同步运算207
9.2.2回调函数的局限207
9.2.3Promise的异常处理209
9.3RxJS的异常处理212
9.3.1catch214
9.3.2retry216
9.3.3retryWhen217
9.3.4finally220
9.4重试的本质221
9.5本章小结223
0章多播225
10.1数据流的多播225
10.2Hot和Cold数据流差异228
10.3Subject230
10.3.1两面神Subject230
10.3.2用Subject实现多播233
10.3.3makeHot操作符234
10.3.4Subject不能重复使用235
10.3.5Subject可以有多个上游237
10.3.6Subject的错误处理239
10.4支持多播的操作符241
10.4.1multicast241
10.4.2publish253
10.4.3share255
10.5不错多播功能257
10.5.1publishLast和Async-Subject258
10.5.2pubishReplay和Replay-Subject259
10.5.3publishBehavior和BehaviorSubject262
10.6本章小结263
1章掌握时间的Scheduler265
11.1Scheduler的调度作用265
11.2RxJS提供的Scheduler268
11.3Scheduler的工作原理269
11.3.1单线程的JavaScript270
11.3.2调用栈和事件循环272
11.3.3Scheduler如何工作275
11.4支持Scheduler的操作符279
11.4.1创造类和合并类操作符279
11.4.2observeOn281
11.4.3subscribeOn282
11.5本章小结283
2章RxJS的调试和测试284
12.1调试方法284
12.1.1无用武之地的Debugger285
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.2RxJS天生适合单元测试297
12.2.3单元测试的结构298
12.2.4RxJS单元测试中的时间303
12.2.5操纵时间的TestScheduler306
12.2.6可测试性代码325
12.3本章小结340
3章用RxJS驱动React341
13.1React简介341
13.1.1为什么选择React341
13.1.2React如何工作343
13.2简单的React应用Counter350
13.3利用RxJS管理React状态356
13.3.1利用Subject作为桥梁356
13.3.2用高阶组件连接RxJS359
13.4本章小结365
4章Redux和RxJS结合366
14.1Redux简介366
14.1.1Redux的工作方式367
14.1.2构建Redux应用368
14.2用RxJS实现Redux372
14.3Redux和RxJS比较374
14.4Redux-Observable:Redux和RxJS的结合375
14.5本章小结380
5章RxJS游戏开发381
15.1breakout的历史381
15.2程序设计383
15.3用RxJS实现breakout385
15.4本章小结397
结语398

内容摘要
本书系统讲解RxJS响应式编程的技术原理与应用。靠前章剖析函数响应式编程的基本概念,通过简单RxJS代码引入函数响应式编程,并与传统编程方式对比,解释这种编程范式的优势,以及这种范式形成的历史。第2章介绍学习RxJS必须掌握的基本概念,包括数据流、操作符和观察者模式。第3~9章介绍RxJS的各种操作符,以及如何选择恰当的操作符来完成不同的任务。靠前0章介绍RxJS如何实现多播的方式。靠前1章介绍实现调度Scheduler的作用、原理与使用。靠前2章介绍如何调试和测试RxJS相关代码,写出高可测试性代码。靠前3章介绍如何在React应用中使用RxJS,提高代码质量。靠前4章介绍Redux与RxJS的组合应用,发挥两者的共同优势。靠前5章介绍一个综合案例,用RxJS实现网页游戏Breakout,并剖析RxJS如何实现动画和绘图。

精彩内容
Preface  前    言这是一个信息技术爆炸的时代,计算机编程语言和框架层出不穷,同时,编程的风格也在发生变化。也许你还没有注意到,但是变化的确在发生。曾经面向对象式编程方法一统天下,如今越来越多开发者开始转向函数式编程方法;与此同时,一直具有统治地位的指令式编程方法,也发现自己要面对一个新的对手:响应式编程。在这本书里,我们介绍的就是兼具函数式和响应式两种先进编程风格的框架RxJS。    RxJS是Reactive Extension这种模式的JavaScript语言实现,通过学习了解RxJS,你将打开一扇通往全新编程风格的大门。    当然,我们学习RxJS,并不是因为RxJS是一项炫酷的技术,也不是因为RxJS是一个最新的技术。在技术的道路上,如果只是追逐“炫酷”和“最新”,肯定是要吃苦头的,因为这是舍本逐末。    我们学习和应用RxJS,是因为RxJS的的确确能够帮助我们解决问题,而且这些问题长期以来一直在困扰我们,没有好的解决办法,这些问题包括:    如何控制大量代码的复杂度;如何保持代码可读;如何处理异步操作。    RxJS的价值在于提供了一种不一样的编程方式,能够解决很多困扰我们开发者的问题。    打开了这本书的读者,你们想必也曾经面对过软件开发过程中的这些挑战,学习RxJS能够帮助大家在“军火库”中增加一种有力武器,也许你不用随时随地使用这种武器,但是,你肯定多了一种解决这些问题的更有效方法。    不过,可能你也早有耳闻,RxJS的学习曲线非常陡峭,可以说已经陡峭到了不能称为学习曲线的程度,应该称为“学习悬崖”。这并不夸张,我个人学习RxJS就尝试了三次。    次学习RxJS时,感觉这种思想很酷,但是很快就发现太多概念都是交叉出现的,文档中为了解释一个概念,就会引入一个新的概念,当我去了解这个新的概念的时候,发现为了解释这个新的概念又需要理解其他的概念,整个RxJS的知识图就像是一个迷宫,我次学习RxJS的经历就终结在这个迷宫之中。    几个月后,我第二次鼓起勇气来学习RxJS,因为有了次的一些基础,这一次还比较顺利,我把概念都掌握得差不多了,但是接下来面对的就是RxJS中大量的操作符,RxJS的应用几乎就是在选择用哪种操作符合适。虽然我把RxJS的迷宫整个都摸了一遍,但是很多操作符我也没有发现实际的应用场景,所以这一次学习最后依然不了了之。    最后,终于有个机会,我需要用RxJS来解决实际的问题。这一次,因为存在实际应用的驱动,我不得不深入去理解RxJS的内在机制,揣摩一个操作符为什么要设计成这样而不是另一个样子,把自己摆在RxJS的角度来思考问题。我还是很幸运,这一次,终于对RxJS有了一个全面的认识。    我终于体会到RxJS的卓越之处,我很兴奋,希望这个工具能够被更多人了解,于是我向朋友们介绍RxJS,有的朋友的确花了时间去学习,但是,他们大多数最后依然放弃了。    怎么会这样?简单来说,是因为RxJS的学习曲线太陡峭。    上图就是对RxJS学习曲线的形象描述,一般知识的学习曲线像是一个小山坡,而RxJS的学习曲线就像是一个悬崖,而且这个悬崖有的部分的倾斜角度超过了90度!    怎么会这样?这个问题我也思考了很久,回顾自己三次学习RxJS的过程,我发现了问题的所在,那就是,目前几乎没有一个像样的用线性方法教授RxJS的教材。    RxJS是开源软件,这个软件经过了很长时间的演进,代码的确可圈可点,但是其文档实在算不上优秀。RxJS的官方文档内容虽然不少,但是内容太多,很多部分之间相互引用,并没有一步一步告诉初学者该如何入门,初学者很容易(就像我次学习RxJS一样)发现自己陷入一个巨大的、没有头绪的迷宫之中。    于是我想,既然RxJS是一个好东西,那为什么不用一种简单易懂的方式来介绍这种技术呢?这也正是写作本书的动因。    在这本书里,我会尽量用一种线性的方法来介绍RxJS的各个方面,读者按照正常的、从前到后的顺序来阅读,不需要在各个知识点之间跳来跳去,这样,当读者看到最后一页的时候,应该就能够对RxJS有全面深刻的认识了。    读者可能会想,RxJS这样一个复杂难懂的东西,我有必要去学吗?如果你只是满足于现状,那真的不用去学,不过,我前面也说过,当今世界的变化和发展非常快,函数式编程在目前也许还不起眼,但是在未来可能会占统治地位,这个变化可能发生在明年,也可能发生在明晚。你肯定不希望当变化发生的时候自己手足无措,所以,花一些时间来接触这个面向未来的思想,对你绝对没有坏处。    坦白地说,我并不相信每个读者学习RxJS的经历都会一帆风顺,如果你真的能够一次就学透RxJS,那你真的很可能是一个天才,记得一定要给我留言;如果你在学习中遇到一些挫折,请相信,你并不孤单,这本书的作者就经历了三次学习才真正学会RxJS,任何疑问都可以留言和我交流。    让我们开始这段旅程吧!    本书的内容本书以线性方式来介绍RxJS,所以建议读者以顺序的方式来阅读本书,如果读者觉得对某一个方面已经十分了解,也可以跳过相关章节,不过,还是希望读者在时间允许的情况下阅读全部内容,你肯定会有新的体会。本书

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP