注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)工業(yè)技術(shù)建筑科學(xué)建筑設(shè)計(jì)深入淺出RxJS

深入淺出RxJS

深入淺出RxJS

定 價(jià):¥89.00

作 者: 程墨
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111596646 出版時(shí)間: 2018-04-01 包裝:
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)系統(tǒng)講解RxJS響應(yīng)式編程的技術(shù)原理與應(yīng)用。第1章剖析函數(shù)響應(yīng)式編程的基本概念,通過(guò)簡(jiǎn)單RxJS代碼引入函數(shù)響應(yīng)式編程,并與傳統(tǒng)編程方式對(duì)比,解釋這種編程范式的優(yōu)勢(shì),以及這種范式形成的歷史。第2章介紹學(xué)習(xí)RxJS必須掌握的基本概念,包括數(shù)據(jù)流、操作符和觀察者模式。第3~9章介紹RxJS的各種操作符,以及如何選擇恰當(dāng)?shù)牟僮鞣麃?lái)完成不同的任務(wù)。第10章介紹RxJS如何實(shí)現(xiàn)多播的方式。第11章介紹實(shí)現(xiàn)調(diào)度Scheduler的作用、原理與使用。第12章介紹如何調(diào)試和測(cè)試RxJS相關(guān)代碼,寫(xiě)出高可測(cè)試性代碼。第13章介紹如何在React應(yīng)用中使用RxJS,提高代碼質(zhì)量。第14章介紹Redux與RxJS的組合應(yīng)用,發(fā)揮兩者的共同優(yōu)勢(shì)。第15章介紹一個(gè)綜合案例,用RxJS實(shí)現(xiàn)網(wǎng)頁(yè)游戲Breakout,并剖析RxJS如何實(shí)現(xiàn)動(dòng)畫(huà)和繪圖。 隨著互聯(lián)網(wǎng)行業(yè)的飛速發(fā)展,Web開(kāi)發(fā)者面臨的挑戰(zhàn)也越來(lái)越大,伴隨著功能的增多,Web應(yīng)用的復(fù)雜度也快速膨脹。對(duì)于Web應(yīng)用,復(fù)雜的問(wèn)題就是異步操作的處理, 無(wú)論用戶(hù)操作、AJAX請(qǐng)求、動(dòng)畫(huà)、WebSocket推送都涉及到異步操作,傳統(tǒng)的異步處理方法越來(lái)越不適應(yīng)復(fù)雜應(yīng)用的需要,RxJS的產(chǎn)生,就是為了解決日益復(fù)雜的前端異步處理問(wèn)題。RxJS是一門(mén)進(jìn)入門(mén)檻比較高的技術(shù),本書(shū)的目的就是降低學(xué)習(xí)成本,由淺入深地介紹RxJS,逐步解析這門(mén)技術(shù)的各個(gè)方面,讓讀者能夠以一個(gè)平緩的學(xué)習(xí)曲線來(lái)掌握這一潛力無(wú)限的技術(shù)。主要內(nèi)容包括:·函數(shù)響應(yīng)式編程·數(shù)據(jù)流的工作原理·RxJS操作符的創(chuàng)建方法·RxJS所有操作符的詳細(xì)分類(lèi)介紹·多播的應(yīng)用·Scheduler的應(yīng)用· RxJS的調(diào)試和測(cè)試方法·React、Redux和RxJS的組合使用方法·RxJS開(kāi)發(fā)游戲的實(shí)踐

作者簡(jiǎn)介

  程墨資深架構(gòu)師,曾任職于摩托羅拉、雅虎和微軟,云鳥(niǎo)配送平臺(tái)聯(lián)合創(chuàng)始人,目前服務(wù)于美國(guó)視頻服務(wù)公司Hulu。

圖書(shū)目錄

目錄  Contents

前言

第1章 函數(shù)響應(yīng)式編程1

1.1 一個(gè)簡(jiǎn)單的RxJS例子1

1.2 函數(shù)式編程5

1.2.1 什么是函數(shù)式編程5

1.2.2 為什么函數(shù)式編程最近才崛起11

1.2.3 函數(shù)式編程和面向?qū)ο缶幊痰谋容^13

1.3 響應(yīng)式編程14

1.4 Reactive Extension15

1.5 RxJS是否是函數(shù)響應(yīng)式編程16

1.6 函數(shù)響應(yīng)式編程的優(yōu)勢(shì)17

1.7 本章小結(jié)18

第2章 RxJS入門(mén)19

2.1 RxJS的版本和運(yùn)行環(huán)境19

2.2 Observable和Observer24

2.2.1 觀察者模式24

2.2.2 迭代器模式25

2.2.3 創(chuàng)造Observable26

2.2.4 跨越時(shí)間的Observable28

2.2.5 永無(wú)止境的Observable29

2.2.6 Observable的完結(jié)30

2.2.7 Observable的出錯(cuò)處理31

2.2.8 Observer的簡(jiǎn)單形式32

2.3 退訂Observable33

2.4 Hot Observable和Cold Observable35

2.5 操作符簡(jiǎn)介37

2.6 彈珠圖39

2.7 本章小結(jié)41

第3章 操作符基礎(chǔ)42

3.1 為什么要有操作符42

3.2 操作符的分類(lèi)44

3.2.1 功能分類(lèi)45

3.2.2 靜態(tài)和實(shí)例分類(lèi)46

3.3 如何實(shí)現(xiàn)操作符49

3.3.1 操作符函數(shù)的實(shí)現(xiàn)49

3.3.2 關(guān)聯(lián)Observable53

3.3.3 改進(jìn)的操作符定義55

3.3.4 lettable/pipeable 操作符60

3.4 本章小結(jié)68

第4章 創(chuàng)建數(shù)據(jù)流69

4.1 創(chuàng)建類(lèi)操作符70

4.2 創(chuàng)建同步數(shù)據(jù)流70

4.2.1 create:毫無(wú)神奇之處71

4.2.2 of:列舉數(shù)據(jù)71

4.2.3 range:指定范圍73

4.2.4 generate:循環(huán)創(chuàng)建74

4.2.5 repeat:重復(fù)數(shù)據(jù)的數(shù)據(jù)流75

4.2.6 三個(gè)極簡(jiǎn)的操作符:empty、never和throw78

4.3 創(chuàng)建異步數(shù)據(jù)的Observable對(duì)象80

4.3.1 interval和timer:定時(shí)產(chǎn)生數(shù)據(jù)80

4.3.2 from:可把一切轉(zhuǎn)化為Observable82

4.3.3 fromPromise:異步處理的交接84

4.3.4 fromEvent85

4.3.5 fromEventPattern87

4.3.6 ajax88

4.3.7 repeatWhen89

4.3.8 defer91

4.4 本章小結(jié)92

第5章 合并數(shù)據(jù)流93

5.1 合并類(lèi)操作符94

5.1.1 concat:首尾相連94

5.1.2 merge:先到先得快速通過(guò)96

5.1.3 zip:拉鏈?zhǔn)浇M合99

5.1.4 combineLatest:合并最后一個(gè)數(shù)據(jù)102

5.1.5 withLatestFrom109

5.1.6 解決glitch112

5.1.7 race:勝者通吃115

5.1.8 startWith115

5.1.9 forkJoin117

5.2 高階Observable118

5.2.1 高階Observable的意義119

5.2.2 操作高階Observable的合并類(lèi)操作符120

5.2.3 進(jìn)化的高階Observable處理124

5.3 本章小結(jié)128

第6章 輔助類(lèi)操作符129

6.1 數(shù)學(xué)類(lèi)操作符129

6.1.1 count:統(tǒng)計(jì)數(shù)據(jù)個(gè)數(shù)130

6.1.2 max和min:最大最小值130

6.1.3 reduce:規(guī)約統(tǒng)計(jì)131

6.2 條件布爾類(lèi)操作符133

6.2.1 every134

6.2.2 find和findIndex135

6.2.3 isEmpty137

6.2.4 defaultIfEmpty138

6.3 本章小結(jié)138

第7章 過(guò)濾數(shù)據(jù)流139

7.1 過(guò)濾類(lèi)操作符的模式140

7.1.1 filter141

7.1.2 first142

7.1.3 last144

7.1.4 take一族操作符145

7.1.5 計(jì)時(shí)的點(diǎn)擊計(jì)數(shù)網(wǎng)頁(yè)程序150

7.1.6 skip151

7.1.7 skipWhile和skipUntil151

7.2 回壓控制152

7.2.1 throttle和debounce154

7.2.2 auditTime和audit164

7.2.3 sampleTime和sample166

7.2.4 根據(jù)數(shù)據(jù)序列做回壓控制168

7.3 其他過(guò)濾方式171

7.3.1 ignoreElements172

7.3.2 elementAt172

7.3.3 single173

7.4 本章小結(jié)173

第8章 轉(zhuǎn)化數(shù)據(jù)流174

8.1 轉(zhuǎn)化類(lèi)操作符174

8.2 映射數(shù)據(jù)175

8.2.1 map176

8.2.2 mapTo177

8.2.3 pluck178

8.3 緩存窗口:無(wú)損回壓控制179

8.3.1 windowTime和bufferTime180

8.3.2 windowCount和bufferCount183

8.3.3 windowWhen和bufferWhen184

8.3.4 windowToggle和buffer-Toggle185

8.3.5 window和buffer186

8.4 高階的map188

8.4.1 concatMap189

8.4.2 mergeMap192

8.4.3 switchMap193

8.4.4 exhaustMap195

8.4.5 高階的MapTo195

8.4.6 expand196

8.5 數(shù)據(jù)分組196

8.6 累計(jì)數(shù)據(jù)200

8.6.1 scan200

8.6.2 mergeScan201

8.7 本章小結(jié)203

第9章 異常錯(cuò)誤處理204

9.1 異常處理不可避免204

9.2 異常處理的難點(diǎn)206

9.2.1 try/catch只支持同步運(yùn)算207

9.2.2 回調(diào)函數(shù)的局限207

9.2.3 Promise的異常處理209

9.3 RxJS的異常處理212

9.3.1 catch214

9.3.2 retry216

9.3.3 retryWhen217

9.3.4 finally220

9.4 重試的本質(zhì)221

9.5 本章小結(jié)223

第10章 多播225

10.1 數(shù)據(jù)流的多播225

10.2 Hot和Cold數(shù)據(jù)流差異228

10.3 Subject230

10.3.1 兩面神Subject230

10.3.2 用Subject實(shí)現(xiàn)多播233

10.3.3 makeHot 操作符234

10.3.4 Subject不能重復(fù)使用235

10.3.5 Subject可以有多個(gè)上游237

10.3.6 Subject的錯(cuò)誤處理239

10.4 支持多播的操作符241

10.4.1 multicast241

10.4.2 publish253

10.4.3 share255

10.5 高級(jí)多播功能257

10.5.1 publishLast和Async-Subject258

10.5.2 pubishReplay和Replay-Subject259

10.5.3 publishBehavior和BehaviorSubject262

10.6 本章小結(jié)263

第11章 掌握時(shí)間的Scheduler265

11.1 Scheduler的調(diào)度作用265

11.2 RxJS提供的Scheduler268

11.3 Scheduler的工作原理269

11.3.1 單線程的JavaScript270

11.3.2 調(diào)用棧和事件循環(huán)272

11.3.3 Scheduler如何工作275

11.4 支持Scheduler的操作符279

11.4.1 創(chuàng)造類(lèi)和合并類(lèi)操作符279

11.4.2 observeOn281

11.4.3 subscribeOn282

11.5 本章小結(jié)283

第12章 RxJS的調(diào)試和測(cè)試284

12.1 調(diào)試方法284

12.1.1 無(wú)用武之地的Debugger285

12.1.2 利用日志來(lái)調(diào)試286

12.1.3 利用do來(lái)插入調(diào)試代碼287

12.1.4 改進(jìn)的日志調(diào)試方法290

12.1.5 數(shù)據(jù)流依賴(lài)圖291

12.1.6 彈珠圖292

12.2 單元測(cè)試293

12.2.1 單元測(cè)試的作用294

12.2.2 RxJS天生適合單元測(cè)試297

12.2.3 單元測(cè)試的結(jié)構(gòu)298

12.2.4 RxJS單元測(cè)試中的時(shí)間303

12.2.5 操縱時(shí)間的TestScheduler306

12.2.6 可測(cè)試性代碼325

12.3 本章小結(jié)340

第13章 用RxJS驅(qū)動(dòng)React341

13.1 React簡(jiǎn)介341

13.1.1 為什么選擇React341

13.1.2 React如何工作343

13.2 簡(jiǎn)單的React應(yīng)用Counter350

13.3 利用RxJS管理React狀態(tài)356

13.3.1 利用Subject作為橋梁356

13.3.2 用高階組件連接RxJS359

13.4 本章小結(jié)365

第14章 Redux和RxJS結(jié)合366

14.1 Redux簡(jiǎn)介366

14.1.1 Redux的工作方式367

14.1.2 構(gòu)建Redux應(yīng)用368

14.2 用RxJS實(shí)現(xiàn)Redux372

14.3 Redux和RxJS比較374

14.4 Redux-Observable:Redux和RxJS的結(jié)合375

14.5 本章小結(jié)380

第15章 RxJS游戲開(kāi)發(fā)381

15.1 breakout的歷史381

15.2 程序設(shè)計(jì)383

15.3 用RxJS實(shí)現(xiàn)breakout385

15.4 本章小結(jié)397

結(jié)語(yǔ)398

 

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)