深入浅出RxJS
¥
15.25
1.7折
¥
89
九五品
仅1件
作者程墨
出版社机械工业出版社
ISBN9787111596646
出版时间2018-05
版次1
装帧平装
开本16开
纸张胶版纸
页数397页
定价89元
上书时间2024-12-07
商品详情
- 品相描述:九五品
- 商品描述
-
基本信息
书名:深入浅出RxJS
定价:89.00元
作者:程墨
出版社:机械工业出版社
出版日期:2018-05-01
ISBN:9787111596646
字数:
页码:397
版次:1
装帧:平装
开本:16开
商品重量:
编辑推荐
软件开发中有什么老问题?技术发展迅速,用户的需求增加更快,软件的代码库也会随需求增长快速膨胀。在这种情况下,如何保证代码质量?如何控制代码的复杂度?如何维持代码的可维护性?这些就成了软件开发的大问题。业界的同仁们为了解决这些老问题做了各种努力,函数式编程和响应式编程就是在实践中被证明行之有效的两种方法。RxJS兼具函数式和响应式两种编程方式的特点,RxJS擅长处理异步操作,因为它对数据采用“推”的处理方式,当一个数据产生的时候,被推送给对应的处理函数,这个处理函数不用关心数据是同步产生的还是异步产生的,这样就把开发者从命令式异步处理的枷锁中解放了出来。本书由浅入深地讲解RxJS,不仅介绍所有操作符的功能,而且讲解实际应用与利弊,是提升开发内功的好教程。
内容提要
本书系统讲解RxJS响应式编程的技术原理与应用。章剖析函数响应式编程的基本概念,通过简单RxJS代码引入函数响应式编程,并与传统编程方式对比,解释这种编程范式的优势,以及这种范式形成的历史。第2章介绍学习RxJS必须掌握的基本概念,包括数据流、操作符和观察者模式。第3~9章介绍RxJS的各种操作符,以及如何选择恰当的操作符来完成不同的任务。0章介绍RxJS如何实现多播的方式。1章介绍实现调度Scheduler的作用、原理与使用。2章介绍如何调试和测试RxJS相关代码,写出高可测试性代码。3章介绍如何在React应用中使用RxJS,提高代码质量。4章介绍Redux与RxJS的组合应用,发挥两者的共同优势。5章介绍一个综合案例,用RxJS实现网页游戏Breakout,并剖析RxJS如何实现动画和绘图。随着互联网行业的飞速发展,Web开发者面临的挑战也越来越大,伴随着功能的增多,Web应用的复杂度也快速膨胀。对于Web应用,复杂的问题就是异步操作的处理, 无论用户操作、AJAX请求、动画、WebSocket推送都涉及到异步操作,传统的异步处理方法越来越不适应复杂应用的需要,RxJS的产生,就是为了解决日益复杂的前端异步处理问题。RxJS是一门进入门槛比较高的技术,本书的目的就是降低学习成本,由浅入深地介绍RxJS,逐步解析这门技术的各个方面,让读者能够以一个平缓的学习曲线来掌握这一潜力无限的技术。主要内容包括: 函数响应式编程 数据流的工作原理 RxJS操作符的创建方法 RxJS所有操作符的详细分类介绍 多播的应用 Scheduler的应用 RxJS的调试和测试方法 React、Redux和RxJS的组合使用方法 RxJS开发游戏的实践
目录
目录 Contents前言章 函数响应式编程11.1 一个简单的RxJS例子11.2 函数式编程51.2.1 什么是函数式编程51.2.2 为什么函数式编程最近才崛起111.2.3 函数式编程和面向对象编程的比较131.3 响应式编程141.4 Reactive Extension151.5 RxJS是否是函数响应式编程161.6 函数响应式编程的优势171.7 本章小结18第2章 RxJS入门192.1 RxJS的版本和运行环境192.2 Observable和Observer242.2.1 观察者模式242.2.2 迭代器模式252.2.3 创造Observable262.2.4 跨越时间的Observable282.2.5 永无止境的Observable292.2.6 Observable的完结302.2.7 Observable的出错处理312.2.8 Observer的简单形式322.3 退订Observable332.4 Hot Observable和Cold Observable352.5 操作符简介372.6 弹珠图392.7 本章小结41第3章 操作符基础423.1 为什么要有操作符423.2 操作符的分类443.2.1 功能分类453.2.2 静态和实例分类463.3 如何实现操作符493.3.1 操作符函数的实现493.3.2 关联Observable533.3.3 改进的操作符定义553.3.4 lettable/pipeable 操作符603.4 本章小结68第4章 创建数据流694.1 创建类操作符704.2 创建同步数据流704.2.1 create:毫无神奇之处714.2.2 of:列举数据714.2.3 range:指定范围734.2.4 generate:循环创建744.2.5 repeat:重复数据的数据流754.2.6 三个极简的操作符:empty、never和throw784.3 创建异步数据的Observable对象804.3.1 interval和timer:定时产生数据804.3.2 from:可把一切转化为Observable824.3.3 fromPromise:异步处理的交接844.3.4 fromEvent854.3.5 fromEventPattern874.3.6 ajax884.3.7 repeatWhen894.3.8 defer914.4 本章小结92第5章 合并数据流935.1 合并类操作符945.1.1 concat:首尾相连945.1.2 merge:先到先得快速通过965.1.3 zip:拉链式组合995.1.4 combineLatest:合并最后一个数据1025.1.5 withLatestFrom1095.1.6 解决glitch1125.1.7 race:胜者通吃1155.1.8 startWith1155.1.9 forkJoin1175.2 高阶Observable1185.2.1 高阶Observable的意义1195.2.2 操作高阶Observable的合并类操作符1205.2.3 进化的高阶Observable处理1245.3 本章小结128第6章 辅助类操作符1296.1 数学类操作符1296.1.1 count:统计数据个数1306.1.2 max和min:最小值1306.1.3 reduce:规约统计1316.2 条件布尔类操作符1336.2.1 every1346.2.2 find和findIndex1356.2.3 isEmpty1376.2.4 defaultIfEmpty1386.3 本章小结138第7章 过滤数据流1397.1 过滤类操作符的模式1407.1.1 filter1417.1.2 first1427.1.3 last1447.1.4 take一族操作符1457.1.5 计时的点击计数网页程序1507.1.6 skip1517.1.7 skipWhile和skipUntil1517.2 回压控制1527.2.1 throttle和debounce1547.2.2 auditTime和audit1647.2.3 sampleTime和sample1667.2.4 根据数据序列做回压控制1687.3 其他过滤方式1717.3.1 ignoreElements1727.3.2 elementAt1727.3.3 single1737.4 本章小结173第8章 转化数据流1748.1 转化类操作符1748.2 映射数据1758.2.1 map1768.2.2 mapTo1778.2.3 pluck1788.3 缓存窗口:无损回压控制1798.3.1 windowTime和bufferTime1808.3.2 windowCount和bufferCount1838.3.3 windowWhen和bufferWhen1848.3.4 windowToggle和buffer-Toggle1858.3.5 window和buffer1868.4 高阶的map1888.4.1 concatMap1898.4.2 mergeMap1928.4.3 switchMap1938.4.4 exhaustMap1958.4.5 高阶的MapTo1958.4.6 expand1968.5 数据分组1968.6 累计数据2008.6.1 scan2008.6.2 mergeScan2018.7 本章小结203第9章 异常错误处理2049.1 异常处理不可避免2049.2 异常处理的难点2069.2.1 try/catch只支持同步运算2079.2.2 回调函数的局限2079.2.3 Promise的异常处理2099.3 RxJS的异常处理2129.3.1 catch2149.3.2 retry2169.3.3 retryWhen2179.3.4 finally2209.4 重试的本质2219.5 本章小结2230章 多播22510.1 数据流的多播22510.2 Hot和Cold数据流差异22810.3 Subject23010.3.1 两面神Subject23010.3.2 用Subject实现多播23310.3.3 makeHot 操作符23410.3.4 Subject不能重复使用23510.3.5 Subject可以有多个上游23710.3.6 Subject的错误处理23910.4 支持多播的操作符24110.4.1 multicast24110.4.2 publish25310.4.3 share25510.5 高级多播功能25710.5.1 publishLast和Async-Subject25810.5.2 pubishReplay和Replay-Subject25910.5.3 publishBehavior和BehaviorSubject26210.6 本章小结2631章 掌握时间的Scheduler26511.1 Scheduler的调度作用26511.2 RxJS提供的Scheduler26811.3 Scheduler的工作原理26911.3.1 单线程的JavaScript27011.3.2 调用栈和事件循环27211.3.3 Scheduler如何工作27511.4 支持Scheduler的操作符27911.4.1 创造类和合并类操作符27911.4.2 observeOn28111.4.3 subscribeOn28211.5 本章小结2832章 RxJS的调试和测试28412.1 调试方法28412.1.1 无用武之地的Debugger28512.1.2 利用日志来调试28612.1.3 利用do来插入调试代码28712.1.4 改进的日志调试方法29012.1.5 数据流依赖图29112.1.6 弹珠图29212.2 单元测试29312.2.1 单元测试的作用29412.2.2 RxJS天生适合单元测试29712.2.3 单元测试的结构29812.2.4 RxJS单元测试中的时间30312.2.5 操纵时间的TestScheduler30612.2.6 可测试性代码32512.3 本章小结3403章 用RxJS驱动React34113.1 React简介34113.1.1 为什么选择React34113.1.2 React如何工作34313.2 简单的React应用Counter35013.3 利用RxJS管理React状态35613.3.1 利用Subject作为桥梁35613.3.2 用高阶组件连接RxJS35913.4 本章小结3654章 Redux和RxJS结合36614.1 Redux简介36614.1.1 Redux的工作方式36714.1.2 构建Redux应用36814.2 用RxJS实现Redux37214.3 Redux和RxJS比较37414.4 Redux-Observable:Redux和RxJS的结合37514.5 本章小结3805章 RxJS游戏开发38115.1 breakout的历史38115.2 程序设计38315.3 用RxJS实现breakout38515.4 本章小结397结语398
作者介绍
程墨 架构师,曾任职于摩托罗拉、雅虎和微软,云鸟配送平台联合创始人,目前服务于美国视频服务公司Hulu。
序言
— 没有更多了 —
以下为对购买帮助不大的评价