高清版 深入浅出Rxjs(带书签和目录)

所需积分/C币:20 2018-12-09 18:14:07 17.81MB PDF

本书系统讲解RxJS响应式编程的技术原理与应用。第1章剖析函数响应式编程的基本概念,通过简单RxJS代码引入函数响应式编程,并与传统编程方式对比,解释这种编程范式的优势,以及这种范式形成的历史。第2章介绍学习RxJS必须掌握的基本概念,包括数据流、操作符和观察者模式。第3~9章介绍RxJS的各种操作符,以及如何选择恰当的操作符来完成不同的任务。第10章介绍RxJS如何实现多播的方式。第11章介绍实现调度Scheduler的作用、原理与使用。第12章介绍如何调试和测试RxJS相关代码,写出高可测试性代码。第13章介绍如何在React应用中使用RxJS,提高代码质量。第14章介绍Redux与RxJ
目录 前言 第1章函数响应式编程 1.1一个简单的RXJS例子 1.2函数式编程 12.1什么是函数式编程 1.2.2为什么函数式编程最近才崛起 1.2.3函数式编程和面向对象编程的比较 1.3响应式编程 1.4 Reactive Extension 1.5RxJS是否是函数响应式编程 1.6函数响应式编程的优势 17本章小结 第2章RxJS入门 2.1RxJS的版本和运行环境 2.2 ObservablefHObserver 2.2.1观察者模式 2.2.2迭代器模式 2.2.3创造 Observable 2.2.4跨越时间的 Observable 22.5永无止境的 Observable 22.6 Observable的完结 22.7 Observable的出错处理 22.8 Observer的简单形式 2.3退订 Observable 2.4 Hot Observable TA Cold Observable 25操作符简介 2.6弹珠图 2.7本章小结 第3章操作符基础 31为什么要有操作符 32操作符的分类 321功能分类 32.2静态和实例分类 33如何实现操作符 33.1操作符函数的实现 332关联 Observable 33.3改进的操作符定义 334 lettable/pipeable操作符 34本章小结 第4章创建数据流 4.1创建类操作符 4.2创建同步数据流 421 create:毫无神奇之处 4.2.2of:列举数据 42.3 range:指定范围 42.4 generate:循环创建 4.2.5 repeat:重复数据的数据流 42.6三个极简的操作符: empty、 never和 throw 43创建异步数据的 Observable对象 43.1 interval和 Itimer:定时产生数据 4.3.2from:可把一切转化为 Observable 4.3.3 fromPromise:异步处理的交接 4.3.4 fromEvent 4.3.5 fromEventPattern 4.3.6 ajax 4.3.7 repeatWhen 4.3.8 defer 44本章小结 第5章合并数据流 5.1合并类操作符 511 concat:首尾相连 51.2 merge:先到先得快速通过 5.1.3zip:拉链式组合 5.1.4 combinelatest:合并最后一个数据 5.1.5 withLatest from 51.6解决 glitch 51.7race:胜者通吃 5.1.8 start with 5.19 forkjoin 5.2高阶 Observable 52.1高阶 Observable的意义 52.2操作高阶 Observable的合并类操作符 5.2.3进化的高阶 Observable处理 53本章小结 第6章辅助类操作符 6.1数学类操作符 6.1.1 count:统计数据个数 61.2max和min:最大最小值 6.1.3 reduce:规约统计 62条件布尔类操作符 6.2.1 every 6.2.2find和 IfindIndex 6.2.3 isEmpty 6.2.4 defaultifEmpty 63本章小结 第7章过滤数据流 7.1过滤类操作符的模式 7.1.1 filter 7.1.2 first 7.1.3 last 7.1.4take一族操作符 7.1.5计时的点击计数网页程序 7.1.6 skip 7.1.7 skip WhileFHskipUntil 7.2回压控制 7.2.1 throttle dEbounce 7.2.2 audit Time mAudit 7.2.3 sampleTime FAsample 7.2.4根据数据序列做回压控制 7.3其他过滤方式 7.3.1 ignoreElements 7.3.2 elementAt 7.3.3 single 74本章小结 第8章转化数据流 8.1转化类操作符 82映射数据 8.2.1map 8.2.2 matO 8.2.3 pluck 8.3缓存窗口:无损回压控制 8.3. 1 window Time BUffer Time 8.3.2 window Count/ Count 8.3.3 window When/Buffer When 8.3.4 window Toggle Buffer Toggle 83.5 window和 buffer 84高阶的map 8.4.1 concatMap 8.4.2 mergeMap 8.4.3 switchMan 8.4.4 exhaustMap 84.5高阶的 MatO 8.4.6 expand 85数据分组 8.6累计数据 8.6.1 scan 8.6.2 mergeScan 87本章小结 第9章异常错误处理 9.1异常处理不可避免 9.2异常处理的难点 9.2.1ty/cath只支持同步运算 9.2.2回调函数的局限 923 Promise的异常处理 9.3RxJS的异常处理 9.3.1 catch 9.3.2 retry 9.3.3 retry When 9.3.4 finall 94重试的本质 9.5本章小结 第10章多播 10.1数据流的多播 10.2Hot和 Cold数据流差异 10.3 Subject 10.3.1两面神 Subject 10.3.2用 Subject实现多播 10.3.3 makehot操作符 10.34 Subject不能重复使用 10.3.5 Subject可以有多个上游 10.3.6 Subject的错误处理 10.4支持多播的操作符 10.4.1 multicast 10.4.2 publish 10.4.3 share 10.5高级多播功能 10.5.1 publishLast/FH AsyncSubject 10.5.2 pubishReplay / HReplaySubject 10.5.3 publish Behavior F Behavior Subject 10.6本章小结 第11章掌握时间的 Scheduler 11.1 Scheduler的调度作用 11.2RxJS提供的 Scheduler 11.3 Scheduler的工作原理 11.3.1单线程的 JavaScript 11.3.2调用栈和事件循环 11.33 Scheduler如何工作 14支持 Scheduler的操作符 114.1创造类和合并类操作符 11.42 observeon 11.4.3 subscriber 115不章小结 第12章RxJS的调试和测试 12.1调试方法 121.1无用武之地的 Debugger 12.1.2利用日志来调试 1213利用do来插入调试代码 1214改进的日志调试方法 12.1.5数据流依赖图 12.1.6弹珠图 122单元测试 12.2.1单元测试的作用 12.2.2RxJS天生适合单元测试 1223单元测试的结构 12.24RxJ单元测试中的时间 12.2.5操纵时间的 Testscheduler 12.2.6可测试性代码 12.3本章小结 第13章用RxJS驱动 React 13.1 React简介 13.1.1为什么选择 React 13.12 React如何工作 13.2简单的 React应用 Counter 13.3利用RxJS管理Reac状态 13.3.1利用 Subject作为桥梁 13.3.2用高阶组件连接RxJS 134本章小结 第14章 Redux和RxJS结合 141 Redux简介 141.1 Redux的工作方式 14.12构建 Redux应用 142用RxJS实现 Redux 143 Redux和RxJS比较 144 Redux- Observable: Redux和RxJS的结合 14.5本章小结 第15章RxJS游戏开发 15.1 breakout的历史 152程序设计 153用RxJS实现 breakout 154本章小结 结语 前言 这是一个信息技术爆炸的时代,计算机编程语言和框架层出不穷,同 时,编程的风格也在发生变化。也许你还没有注意到,但是变化的确在发 生。曾经面向对象式编程方法一统天下,如今越来越多开发者开始转向函 数式编程方法;与此同时,一直具有统治地位的指令式编程方法,也发现 自己要面对一个新的对手:响应式编程。在这本书里,我们介绍的就是兼 具函数式和响应式两种先进编程风格的框架RxJS。 RxJS是 Reactive extension这种模式的 JavaScript语言实现,通过学习了 解RxJS,你将打开一扇通往全新编程风格的大门 当然,我们学习RxJS,并不是因为RxJS是一项炫酷的技术,也不是因 为RⅹJS是一个最新的技术。在技术的道路上,如果只是追逐“炫酷”和“最 新”,肯定是要吃苦头的,因为这是舍本逐术。 我们学习和应用RxJS,是因为RxJS的的确确能够帮助我们解决问题 而且这些问题长期以来一直在困扰我们,没有好的解决办法,这些问题包 括 如何控制大量代码的复杂度; 如何保持代码可读; 如何处理异步操作。 RxJS的价值在于提供了一种不一样的编程方式,能够解决很多困扰我 们开发者的问题。 打开了这本书的读者,你们想必也曾经面对过软件开发过程中的这些 挑战,学习RxJS能够帮助大家在“军火库”中增加一种有力武器,也许你不 用随时随地使用这种武器,但是,你肯定多了一种解决这些问题的更有效 方法。 不过,可能你也早有耳闻,RxJS的学习曲线非常陡峭,可以说已经陡 峭到了不能称为学习曲线的程度,应该称为“学习悬崖”。这并不夸张,我 个人学习RxJS就尝试了三次。 第一次学习RxJS时,感觉这种思想很酷,但是很快就发现太多概念都 是交叉出现的,文档中为了解释一个概念,就会引入一个新的概念,当我 去了解这个新的概念的时候、发现为了解释这个新的概念又需要理解其他 的概念,整个RⅹJS的知识图就像是一个迷宫,我第一次学习RxJS的经历就 终结在这个迷宫之中。 几个月后,我第二次鼓起勇气来学习RxJS,因为有了第一次的一些基 础,这一次还比较顺利,我把概念都掌握得差不多了,但是接下来面对的 就是RxJS中大量的操作符,RxJS的应用几乎就是在选择用哪种操作符合 适。虽然我把RⅹJS的迷宫整个都摸了一遍,但是很多操作符我也没有发现 实际的应用场景,所以这一次学习最后依然不了了之。 最后,终于有个机会,我需要用RxJS来解决实际的问题。这一次,因 为存在实际应用的驱动,我不得不深入去理解RxJS的内在机制,揣摩一个 操作符为什么要设计成这样而不是另一个样子,把自己摆在RxJS的角度来 思考问题。我还是很幸运,这次,终于对RxJS有了一个全面的认识。 我终于体会到RxJS的卓越之处,我很兴奋,希望这个工具能够被更多 人了解,于是我向朋友们介绍RxJS,有的朋友的确花了时间去学习,但 是,他们大多数最后依然放弃了 怎么会这样?简单来说,是因为RxJS的学习曲线太陡峭

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源