Node.js设计模式(第三版)

Node.js设计模式(第三版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [爱尔兰] , [意]
2021-08
版次: 1
ISBN: 9787519855970
定价: 148.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 616页
字数: 810.000千字
10人买过
  • 本书中使用好的办法来实现各种设计模式以创造高效且健壮的Node.js应用程序。本书首先介绍Node.js的基础知识,包括异步事件驱动架构以及基本的设计模式。然后,介绍怎样用callback (回调)、Promise以及async/await机制来构建异步的控制流模式。其次,介绍Node.js的stream (流)并演示stream的强大功能,使读者能充分地利用这些功能。本书分析了三大类设计模式,即创建型的设计模式、结构型的设计模式以及行为型的设计模式,并介绍了怎样在JavaScript语言及Node.js平台中充分运用这些模式。后,书中研究了一些比较高端的概念,例如UniversalJavaScript、Node.js程序的扩展问题以及消息传递模式等,以帮助读者打造企业级的分布式应用程序。
      本书适合已了解Node.js技术,同时希望在程序的效率、设计及可扩展程度方面有所提高的开发者。阅读本书需要读者掌握Web应用程序、WebService、数据库与数据结构方面的开发技术。 Mario Casciaro是一位软件工程师和企业家,对技术,科学和开源知识充满热情。Mario毕业于软件工程硕士学位,并开始了他在IBM的职业生涯。目前,Mario是Sponsorama.com的联合创始人兼首席执行官,该平台通过企业赞助来帮助在线项目筹集资金,还是版Node.js设计模式的作者。Luciano Mammino是一位软件工程师,出生于1987年。他从12岁开始使用父亲的旧Intel 386(仅提供DOS操作系统和qBasic解释器)进行编码。在获得计算机科学硕士学位之后,他主要是作为网络开发人员发展了自己的编程技能,主要是为意大利各地的公司和初创公司担任自由职业者。在担任CTO和Sbaam.com在意大利和爱尔兰的联合创始人长达三年的创业后,在Smartbox担任高级PHP工程师。他喜欢开发开源库并喜欢使用Symfony和Express这样的框架。 目录

    前言

    第1章 Node.js平台 1

    1.1 Node.js开发理念  1

    1.1.1 小核心  2

    1.1.2 小模块  2

    1.1.3 小接触面 (小暴露面)  3

    1.1.4 简单实用  3

    1.2 Node.js的工作原理  4

    1.2.1 I/O是慢速操作  4

    1.2.2 阻塞式I/O  4

    1.2.3 非阻塞式的I/O  5

    1.2.4 事件多路分离  6

    1.2.5 reactor模式  8

    1.2.6 Node.js的I/O引擎———Libuv 10

    1.2.7 Node.js的全套结构  10

    1.3 Node.js平台之中的JavaScript  11

    1.3.1 放心地使用版的JavaScript  11

    1.3.2 模块系统  12

    1.3.3 访问操作系统中的各项服务  12

    1.3.4 运行原生代码 13

    1.4 小结  14

    第2章 模块系统 15

    2.1 为什么需要模块  15

    2.2 JavaScript与Node.js的模块系统 16

    2.3 模块系统及其模式  17

    2.4 CommonJS模块  19

    2.4.1 自制的模块加载器 19

    2.4.2 定义模块  21

    2.4.3 module.exports与exports  22

    2.4.4 require函数是同步函数 23

    2.4.5 模块解析算法 23

    2.4.6 模块缓存  25

    2.4.7 循环依赖  26

    2.5 定义模块所用的模式  30

    2.5.1 命名导出模式 30

    2.5.2 函数导出模式 31

    2.5.3 类导出模式  32

    2.5.4 实例导出模式 33

    2.5.5 通过monkeypatching模式修改其他模块或全局作用域  34

    2.6 ECMAScript模块 (ESM)  35

    2.6.1 在Node.js平台中使用ESM  36

    2.6.2 命名导出模式与命名引入  36

    2.6.3 默认导出与默认引入 39

    2.6.4 混用命名导出与默认导出  40

    2.6.5 模块标识符  41

    2.6.6 异步引入  42

    2.6.7 详细解释模块的加载过程  44

    2.6.8 修改其他模块 51

    2.7 ESM与CommonJS之间的区别以及交互使用技巧  55

    2.7.1 ESM是在严格模式下运行的 55

    2.7.2 ESM不支持CommonJS提供的某些引用 55

    2.7.3 在其中一种模块系统里面使用另一种模块  56

    2.8 小结  57

    第3章 回调与事件 58

    3.1 Callback (回调)模式  58

    3.1.1 continuation-passing风格 (CPS)  59

    3.1.2 某个函数究竟是同步函数,还是异步函数?  62

    3.1.3 在Node.js里面定义回调的惯例  68

    3.2 Observer(观察者)模式  72

    3.2.1 EventEmitter 73

    3.2.2 创建并使用EventEmitter 74

    3.2.3 播报错误信息 75

    3.2.4 让任何一个对象都能为监听器所观察  75

    3.2.5 EventEmitter与内存泄露  77

    3.2.6 同步事件与异步事件 78

    3.2.7 EventEmitter与callback(回调)之间的对比  80

    3.2.8 把回调与事件结合起来 81

    3.3 小结  82

    3.4 习题  82

    第4章 利用回调实现异步控制流模式 84

    4.1 异步编程所遇到的困难  84

    4.1.1 创建简单的网页爬虫 85

    4.1.2 callbackhell  87

    4.2 涉及回调的编程技巧与控制流模式  88

    4.2.1 编写回调逻辑时所应遵循的原则  89

    4.2.2 运用相关的原则编写回调  89

    4.2.3 顺序执行  92

    4.2.4 平行执行  98

    4.2.5 限制任务数量的平行执行  104

    4.3 async库  112

    4.4 小结 113

    4.5 习题 113

    第5章 利用Promise与async/await实现异步控制流模式  115

    5.1 Promise  116

    5.1.1 什么是Promise?  116

    5.1.2 Promises/A 与thenable  119

    5.1.3 PromiseAPI  119

    5.1.4 创建Promise  121

    5.1.5 把回调方案改写成Promise方案 122

    5.1.6 顺序执行与迭代  124

    5.1.7 平行执行  128

    5.1.8 限制任务数量的平行执行  129

    5.2 async/await  132

    5.2.1 async函数与await表达式  133

    5.2.2 用async/await处理错误  134

    5.2.3 顺序执行与迭代  137

    5.2.4 平行执行  139

    5.2.5 限制任务数量的平行执行  141

    5.3 无限递归的Promise解析链所引发的问题 145

    5.4 小结 148

    5.5 习题 149

    第6章 用Stream编程 150

    6.1 理解stream在Node.js平台中的重要作用  150

    6.1.1 缓冲模式与流模式  151

    6.1.2 流模式在空间占用方面的优势  152

    6.1.3 流模式在处理时间方面的优势  154

    6.1.4 stream之间的组合  157

    6.2 开始学习Stream  160

    6.2.1 流对象的体系结构  161

    6.2.2 Readable流 (可读流)  161

    6.2.3 Writable流 (可写流)  169

    6.2.4 Duplex流 (双工流/读写流) 175

    6.2.5 Transform流 (传输流) 176

    6.2.6 PassThrough流  183

    6.2.7 lazystream (惰性流)  188

    6.2.8 用管道连接流对象  189

    6.3 用stream实现异步控制流模式  193

    6.3.1 顺序执行  194

    6.3.2 无序的平行执行  196

    6.3.3 无序且带有并发上限的平行执行模式  201

    6.3.4 有序的平行执行  203

    6.4 管道模式 205

    6.4.1 组合stream  205

    6.4.2 拆分stream (fork模式)  210

    6.4.3 合并stream (merge模式)  211

    6.4.4 多路复用与解多路复用 (mux/demux模式)  213

    6.5 小结 220

    6.6 习题 221

    第7章 创建型的设计模式  222

    7.1 Factory(工厂)模式  223

    7.1.1 把对象的创建流程与该流程的实现方式解耦 223

    7.1.2 强化封装效果  225

    7.1.3 构建一款简单的codeprofiler(代码测评工具)  226

    7.1.4 Node.js大环境之中的工厂模式  229

    7.2 Builder(生成器/建造者)模式  229

    7.2.1 实现URL对象生成器           233

    7.2.2 Node.js大环境之中的Builder模式  237

    7.3 RevealingConstructor模式 238

    7.3.1 构建不可变的缓冲区  239

    7.3.2 Node.js大环境之中的RevealingConstructor模式  242

    7.4 Singleton (单例/单件)模式  243

    7.5 管理模块之间的依赖关系 247

    7.5.1 用Singleton模式管理模块之间的依赖关系  247

    7.5.2 用DI(依赖注入)管理模块之间的依赖关系  250

    7.6 小结 255

    7.7 习题 256

    第8章 结构型的设计模式  258

    8.1 Proxy(代理)模式  258

    8.1.1 怎样实现Proxy模式  259

    8.1.2 创建带有日志功能的 Writable流  270

    8.1.3 用Proxy实现ChangeObserver模式  271

    8.1.4 Node.js大环境之中的Proxy模式  274

    8.2 Decorator(修饰器)模式  274

    8.2.1 实现Decorator模式的几种办法  275

    8.2.2 用Decorator模式来修饰LevelUP数据库  279

    8.2.3 Node.js大环境之中的Decorator模式  282

    8.3 Proxy模式与Decorator模式之间的区别  283

    8.4 Adapter(适配器)模式  284

    8.4.1 通过fs式的API来使用LevelUP  284

    8.4.2 Node.js大环境之中的Adapter模式  288

    8.5 小结 289

    8.6 习题 290

    第9章 行为型的设计模式  291

    9.1 Strategy(策略)模式  292

    9.1.1 处理各种格式的配置信息  293

    9.1.2 Node.js大环境之中的Strategy模式  297

    9.2 State(状态)模式  297

    9.3 Template(模板)模式 304

    9.3.1 用Template模式重新实现配置管理器  305

    9.3.2 Node.js大环境之中的Template模式 308

    9.4 Iterator(迭代器)模式  308

    9.4.1 iterator协议 309

    9.4.2 iterable协议 311

    9.4.3 在JavaScript语言内建的机制之中使用iterator与iterable  314

    9.4.4 Generator(生成器)  316

    9.4.5 asynciterator(异步迭代器) 321

    9.4.6 asyncgenerator(异步生成器)  324

    9.4.7 asynciterator(异步迭代器)与Node.js平台的stream (流)  325

    9.4.8 Node.js大环境中的Iterator模式  326

    9.5 Middleware(中间件)模式 327

    9.5.1 Express里面的中间件 327

    9.5.2 从模式的角度谈中间件  328

    9.5.3 创建针对ZeroMQ的中间件框架  330

    9.5.4 Node.js大环境之中的 Middleware模式 337

    9.6 Command(命令)模式  337

    9.6.1 Task模式 339

    9.6.2 用复杂一些的办法实现Command  340

    9.7 小结 344

    9.8 习题 344

    第10章 用UniversalJavaScript开发 Web应用程序  347

    10.1 让Node.js与浏览器共用同一套代码  348

    10.2 跨平台开发的基础知识  360

    10.2.1 在运行程序的时候做代码分支  360

    10.2.2 在构建程序的时候做代码分支  362

    10.2.3 模块交换 (模块替换)  365

    10.2.4 适用于跨平台开发的设计模式  366

    10.3 React简介  367

    10.3.1 React编程入门  369

    10.3.2 用其他写法取代react.createElement  371

    10.3.3 有状态的Reactcomponent  373

    10.4 创建UniversalJavaScript应用程序  379

    10.4.1 先构建一款只有前端逻辑的应用程序  380

    10.4.2 给程序添加服务器端的渲染逻辑  388

    10.4.3 让程序用异步的方式获取数据  394

    10.4.4 在服务器端与浏览器端采用同一套方案获取数据  400

    10.5 小结  415

    10.6 习题  416

    第11章 高级技巧 417

    11.1 如何应对初始化过程中需要执行异步任务的组件  417

    11.1.1 初始化过程中含有异步任务的组件所面对的问题  418

    11.1.2 预初始化队列 (pre-initializationqueue)  420

    11.1.3 Node.js大环境之中的解决方案  425

    11.2 批量处理异步请求并缓存处理结果  426

    11.2.1 什么叫作批量处理异步请求?  426

    11.2.2 用更好的办法来缓存异步请求的处理结果  427

    11.2.3 不带缓存或批处理机制的API服务器  428

    11.2.4 利用Promise实现批处理与缓存  430

    11.3 取消异步操作  435

    11.3.1 采用基本方案创建可叫停的函数  435

    11.3.2 把可叫停的异步函数所要执行的异步调用包装起来  437

    11.3.3 利用生成器实现可叫停的异步函数  439

    11.4 运行CPU密集型任务 443

    11.4.1 解决subsetsum (子集合加总)问题  443

    11.4.2 通过setImmediate分步执行  447

    11.4.3 使用外部进程执行任务  450

    11.4.4 用工作线程执行任务 458

    11.4.5 在实际工作中处理CPU密集型任务 462

    11.5 小结  463

    11.6 习题  463

    第12章 用架构模式实现扩展 465

    12.1 浅谈如何扩展应用程序  466

    12.1.1 扩展Node.js应用程序  466

    12.1.2 从三个方面考虑可扩展能力  467

    12.2 克隆与负载均衡  469

    12.2.1 cluster模块  470

    12.2.2 如何处理需要根据状态来执行的通信请求  480

    12.2.3 用反向代理扩展应用程序  483

    12.2.4 动态的水平扩展 489

    12.2.5 端对端的负载均衡 497

    12.2.6 用容器扩展应用程序 501

    12.3 分解复杂的应用程序  511

    12.3.1 单体式的架构 511

    12.3.2 微服务架构 513

    12.3.3 适用于微服务架构的集成模式  516

    12.4 小结  522

    12.5 习题  523

    第13章 消息传递与集成模式 524

    13.1 消息传递系统的基础知识  525

    13.1.1 是单向通信,还是采用请求/响应模式来通信 525

    13.1.2 消息的类型 526

    13.1.3 异步消息传递机制、队列、流 (stream)  527

    13.1.4 端对端的消息传递与基于中介的消息传递  529

    13.2 Publish/Subscribe(发布/订阅)模式 530

    13.2.1 构建一款极简的实时聊天程序  531

    13.2.2 用Redis充当简单的messagebroker(消息中介)  535

    13.2.3 用ZeroMQ实现端对端的Publish/Subscribe  538

    13.2.4 用队列确保消息可靠地得到投递  542

    13.2.5 用Stream (流)可靠地传递消息  552

    13.3 任务分配模式  557

    13.3.1 用ZeroMQ实现Fanout/Fanin模式  558

    13.3.2 根据AMQP协议制作管道并实现CompetingConsumers

    (互相竞争的消费者)模式  567

    13.3.3 用Redis流实现任务分配模式  571

    13.4 Request/Reply(请求/响应)模式  577

    13.4.1 关联标识符 577

    13.4.2 ReturnAddress(返回地址)模式  584

    13.5 小结  591

    13.6 习题  591
  • 内容简介:
    本书中使用好的办法来实现各种设计模式以创造高效且健壮的Node.js应用程序。本书首先介绍Node.js的基础知识,包括异步事件驱动架构以及基本的设计模式。然后,介绍怎样用callback (回调)、Promise以及async/await机制来构建异步的控制流模式。其次,介绍Node.js的stream (流)并演示stream的强大功能,使读者能充分地利用这些功能。本书分析了三大类设计模式,即创建型的设计模式、结构型的设计模式以及行为型的设计模式,并介绍了怎样在JavaScript语言及Node.js平台中充分运用这些模式。后,书中研究了一些比较高端的概念,例如UniversalJavaScript、Node.js程序的扩展问题以及消息传递模式等,以帮助读者打造企业级的分布式应用程序。
      本书适合已了解Node.js技术,同时希望在程序的效率、设计及可扩展程度方面有所提高的开发者。阅读本书需要读者掌握Web应用程序、WebService、数据库与数据结构方面的开发技术。
  • 作者简介:
    Mario Casciaro是一位软件工程师和企业家,对技术,科学和开源知识充满热情。Mario毕业于软件工程硕士学位,并开始了他在IBM的职业生涯。目前,Mario是Sponsorama.com的联合创始人兼首席执行官,该平台通过企业赞助来帮助在线项目筹集资金,还是版Node.js设计模式的作者。Luciano Mammino是一位软件工程师,出生于1987年。他从12岁开始使用父亲的旧Intel 386(仅提供DOS操作系统和qBasic解释器)进行编码。在获得计算机科学硕士学位之后,他主要是作为网络开发人员发展了自己的编程技能,主要是为意大利各地的公司和初创公司担任自由职业者。在担任CTO和Sbaam.com在意大利和爱尔兰的联合创始人长达三年的创业后,在Smartbox担任高级PHP工程师。他喜欢开发开源库并喜欢使用Symfony和Express这样的框架。
  • 目录:
    目录

    前言

    第1章 Node.js平台 1

    1.1 Node.js开发理念  1

    1.1.1 小核心  2

    1.1.2 小模块  2

    1.1.3 小接触面 (小暴露面)  3

    1.1.4 简单实用  3

    1.2 Node.js的工作原理  4

    1.2.1 I/O是慢速操作  4

    1.2.2 阻塞式I/O  4

    1.2.3 非阻塞式的I/O  5

    1.2.4 事件多路分离  6

    1.2.5 reactor模式  8

    1.2.6 Node.js的I/O引擎———Libuv 10

    1.2.7 Node.js的全套结构  10

    1.3 Node.js平台之中的JavaScript  11

    1.3.1 放心地使用版的JavaScript  11

    1.3.2 模块系统  12

    1.3.3 访问操作系统中的各项服务  12

    1.3.4 运行原生代码 13

    1.4 小结  14

    第2章 模块系统 15

    2.1 为什么需要模块  15

    2.2 JavaScript与Node.js的模块系统 16

    2.3 模块系统及其模式  17

    2.4 CommonJS模块  19

    2.4.1 自制的模块加载器 19

    2.4.2 定义模块  21

    2.4.3 module.exports与exports  22

    2.4.4 require函数是同步函数 23

    2.4.5 模块解析算法 23

    2.4.6 模块缓存  25

    2.4.7 循环依赖  26

    2.5 定义模块所用的模式  30

    2.5.1 命名导出模式 30

    2.5.2 函数导出模式 31

    2.5.3 类导出模式  32

    2.5.4 实例导出模式 33

    2.5.5 通过monkeypatching模式修改其他模块或全局作用域  34

    2.6 ECMAScript模块 (ESM)  35

    2.6.1 在Node.js平台中使用ESM  36

    2.6.2 命名导出模式与命名引入  36

    2.6.3 默认导出与默认引入 39

    2.6.4 混用命名导出与默认导出  40

    2.6.5 模块标识符  41

    2.6.6 异步引入  42

    2.6.7 详细解释模块的加载过程  44

    2.6.8 修改其他模块 51

    2.7 ESM与CommonJS之间的区别以及交互使用技巧  55

    2.7.1 ESM是在严格模式下运行的 55

    2.7.2 ESM不支持CommonJS提供的某些引用 55

    2.7.3 在其中一种模块系统里面使用另一种模块  56

    2.8 小结  57

    第3章 回调与事件 58

    3.1 Callback (回调)模式  58

    3.1.1 continuation-passing风格 (CPS)  59

    3.1.2 某个函数究竟是同步函数,还是异步函数?  62

    3.1.3 在Node.js里面定义回调的惯例  68

    3.2 Observer(观察者)模式  72

    3.2.1 EventEmitter 73

    3.2.2 创建并使用EventEmitter 74

    3.2.3 播报错误信息 75

    3.2.4 让任何一个对象都能为监听器所观察  75

    3.2.5 EventEmitter与内存泄露  77

    3.2.6 同步事件与异步事件 78

    3.2.7 EventEmitter与callback(回调)之间的对比  80

    3.2.8 把回调与事件结合起来 81

    3.3 小结  82

    3.4 习题  82

    第4章 利用回调实现异步控制流模式 84

    4.1 异步编程所遇到的困难  84

    4.1.1 创建简单的网页爬虫 85

    4.1.2 callbackhell  87

    4.2 涉及回调的编程技巧与控制流模式  88

    4.2.1 编写回调逻辑时所应遵循的原则  89

    4.2.2 运用相关的原则编写回调  89

    4.2.3 顺序执行  92

    4.2.4 平行执行  98

    4.2.5 限制任务数量的平行执行  104

    4.3 async库  112

    4.4 小结 113

    4.5 习题 113

    第5章 利用Promise与async/await实现异步控制流模式  115

    5.1 Promise  116

    5.1.1 什么是Promise?  116

    5.1.2 Promises/A 与thenable  119

    5.1.3 PromiseAPI  119

    5.1.4 创建Promise  121

    5.1.5 把回调方案改写成Promise方案 122

    5.1.6 顺序执行与迭代  124

    5.1.7 平行执行  128

    5.1.8 限制任务数量的平行执行  129

    5.2 async/await  132

    5.2.1 async函数与await表达式  133

    5.2.2 用async/await处理错误  134

    5.2.3 顺序执行与迭代  137

    5.2.4 平行执行  139

    5.2.5 限制任务数量的平行执行  141

    5.3 无限递归的Promise解析链所引发的问题 145

    5.4 小结 148

    5.5 习题 149

    第6章 用Stream编程 150

    6.1 理解stream在Node.js平台中的重要作用  150

    6.1.1 缓冲模式与流模式  151

    6.1.2 流模式在空间占用方面的优势  152

    6.1.3 流模式在处理时间方面的优势  154

    6.1.4 stream之间的组合  157

    6.2 开始学习Stream  160

    6.2.1 流对象的体系结构  161

    6.2.2 Readable流 (可读流)  161

    6.2.3 Writable流 (可写流)  169

    6.2.4 Duplex流 (双工流/读写流) 175

    6.2.5 Transform流 (传输流) 176

    6.2.6 PassThrough流  183

    6.2.7 lazystream (惰性流)  188

    6.2.8 用管道连接流对象  189

    6.3 用stream实现异步控制流模式  193

    6.3.1 顺序执行  194

    6.3.2 无序的平行执行  196

    6.3.3 无序且带有并发上限的平行执行模式  201

    6.3.4 有序的平行执行  203

    6.4 管道模式 205

    6.4.1 组合stream  205

    6.4.2 拆分stream (fork模式)  210

    6.4.3 合并stream (merge模式)  211

    6.4.4 多路复用与解多路复用 (mux/demux模式)  213

    6.5 小结 220

    6.6 习题 221

    第7章 创建型的设计模式  222

    7.1 Factory(工厂)模式  223

    7.1.1 把对象的创建流程与该流程的实现方式解耦 223

    7.1.2 强化封装效果  225

    7.1.3 构建一款简单的codeprofiler(代码测评工具)  226

    7.1.4 Node.js大环境之中的工厂模式  229

    7.2 Builder(生成器/建造者)模式  229

    7.2.1 实现URL对象生成器           233

    7.2.2 Node.js大环境之中的Builder模式  237

    7.3 RevealingConstructor模式 238

    7.3.1 构建不可变的缓冲区  239

    7.3.2 Node.js大环境之中的RevealingConstructor模式  242

    7.4 Singleton (单例/单件)模式  243

    7.5 管理模块之间的依赖关系 247

    7.5.1 用Singleton模式管理模块之间的依赖关系  247

    7.5.2 用DI(依赖注入)管理模块之间的依赖关系  250

    7.6 小结 255

    7.7 习题 256

    第8章 结构型的设计模式  258

    8.1 Proxy(代理)模式  258

    8.1.1 怎样实现Proxy模式  259

    8.1.2 创建带有日志功能的 Writable流  270

    8.1.3 用Proxy实现ChangeObserver模式  271

    8.1.4 Node.js大环境之中的Proxy模式  274

    8.2 Decorator(修饰器)模式  274

    8.2.1 实现Decorator模式的几种办法  275

    8.2.2 用Decorator模式来修饰LevelUP数据库  279

    8.2.3 Node.js大环境之中的Decorator模式  282

    8.3 Proxy模式与Decorator模式之间的区别  283

    8.4 Adapter(适配器)模式  284

    8.4.1 通过fs式的API来使用LevelUP  284

    8.4.2 Node.js大环境之中的Adapter模式  288

    8.5 小结 289

    8.6 习题 290

    第9章 行为型的设计模式  291

    9.1 Strategy(策略)模式  292

    9.1.1 处理各种格式的配置信息  293

    9.1.2 Node.js大环境之中的Strategy模式  297

    9.2 State(状态)模式  297

    9.3 Template(模板)模式 304

    9.3.1 用Template模式重新实现配置管理器  305

    9.3.2 Node.js大环境之中的Template模式 308

    9.4 Iterator(迭代器)模式  308

    9.4.1 iterator协议 309

    9.4.2 iterable协议 311

    9.4.3 在JavaScript语言内建的机制之中使用iterator与iterable  314

    9.4.4 Generator(生成器)  316

    9.4.5 asynciterator(异步迭代器) 321

    9.4.6 asyncgenerator(异步生成器)  324

    9.4.7 asynciterator(异步迭代器)与Node.js平台的stream (流)  325

    9.4.8 Node.js大环境中的Iterator模式  326

    9.5 Middleware(中间件)模式 327

    9.5.1 Express里面的中间件 327

    9.5.2 从模式的角度谈中间件  328

    9.5.3 创建针对ZeroMQ的中间件框架  330

    9.5.4 Node.js大环境之中的 Middleware模式 337

    9.6 Command(命令)模式  337

    9.6.1 Task模式 339

    9.6.2 用复杂一些的办法实现Command  340

    9.7 小结 344

    9.8 习题 344

    第10章 用UniversalJavaScript开发 Web应用程序  347

    10.1 让Node.js与浏览器共用同一套代码  348

    10.2 跨平台开发的基础知识  360

    10.2.1 在运行程序的时候做代码分支  360

    10.2.2 在构建程序的时候做代码分支  362

    10.2.3 模块交换 (模块替换)  365

    10.2.4 适用于跨平台开发的设计模式  366

    10.3 React简介  367

    10.3.1 React编程入门  369

    10.3.2 用其他写法取代react.createElement  371

    10.3.3 有状态的Reactcomponent  373

    10.4 创建UniversalJavaScript应用程序  379

    10.4.1 先构建一款只有前端逻辑的应用程序  380

    10.4.2 给程序添加服务器端的渲染逻辑  388

    10.4.3 让程序用异步的方式获取数据  394

    10.4.4 在服务器端与浏览器端采用同一套方案获取数据  400

    10.5 小结  415

    10.6 习题  416

    第11章 高级技巧 417

    11.1 如何应对初始化过程中需要执行异步任务的组件  417

    11.1.1 初始化过程中含有异步任务的组件所面对的问题  418

    11.1.2 预初始化队列 (pre-initializationqueue)  420

    11.1.3 Node.js大环境之中的解决方案  425

    11.2 批量处理异步请求并缓存处理结果  426

    11.2.1 什么叫作批量处理异步请求?  426

    11.2.2 用更好的办法来缓存异步请求的处理结果  427

    11.2.3 不带缓存或批处理机制的API服务器  428

    11.2.4 利用Promise实现批处理与缓存  430

    11.3 取消异步操作  435

    11.3.1 采用基本方案创建可叫停的函数  435

    11.3.2 把可叫停的异步函数所要执行的异步调用包装起来  437

    11.3.3 利用生成器实现可叫停的异步函数  439

    11.4 运行CPU密集型任务 443

    11.4.1 解决subsetsum (子集合加总)问题  443

    11.4.2 通过setImmediate分步执行  447

    11.4.3 使用外部进程执行任务  450

    11.4.4 用工作线程执行任务 458

    11.4.5 在实际工作中处理CPU密集型任务 462

    11.5 小结  463

    11.6 习题  463

    第12章 用架构模式实现扩展 465

    12.1 浅谈如何扩展应用程序  466

    12.1.1 扩展Node.js应用程序  466

    12.1.2 从三个方面考虑可扩展能力  467

    12.2 克隆与负载均衡  469

    12.2.1 cluster模块  470

    12.2.2 如何处理需要根据状态来执行的通信请求  480

    12.2.3 用反向代理扩展应用程序  483

    12.2.4 动态的水平扩展 489

    12.2.5 端对端的负载均衡 497

    12.2.6 用容器扩展应用程序 501

    12.3 分解复杂的应用程序  511

    12.3.1 单体式的架构 511

    12.3.2 微服务架构 513

    12.3.3 适用于微服务架构的集成模式  516

    12.4 小结  522

    12.5 习题  523

    第13章 消息传递与集成模式 524

    13.1 消息传递系统的基础知识  525

    13.1.1 是单向通信,还是采用请求/响应模式来通信 525

    13.1.2 消息的类型 526

    13.1.3 异步消息传递机制、队列、流 (stream)  527

    13.1.4 端对端的消息传递与基于中介的消息传递  529

    13.2 Publish/Subscribe(发布/订阅)模式 530

    13.2.1 构建一款极简的实时聊天程序  531

    13.2.2 用Redis充当简单的messagebroker(消息中介)  535

    13.2.3 用ZeroMQ实现端对端的Publish/Subscribe  538

    13.2.4 用队列确保消息可靠地得到投递  542

    13.2.5 用Stream (流)可靠地传递消息  552

    13.3 任务分配模式  557

    13.3.1 用ZeroMQ实现Fanout/Fanin模式  558

    13.3.2 根据AMQP协议制作管道并实现CompetingConsumers

    (互相竞争的消费者)模式  567

    13.3.3 用Redis流实现任务分配模式  571

    13.4 Request/Reply(请求/响应)模式  577

    13.4.1 关联标识符 577

    13.4.2 ReturnAddress(返回地址)模式  584

    13.5 小结  591

    13.6 习题  591
查看详情
12
相关图书 / 更多
Node.js设计模式(第三版)
NoSQL数据库入门与实践(基于MongoDB、Redis)(第2版)
刘瑜 安义 王晓智
Node.js设计模式(第三版)
NoSQL数据库从入门到实战(微课视频版)
吕云翔 郭婉茹 余志浩 贺祺 郭宇光
Node.js设计模式(第三版)
Node.js 后端全程实战
凌杰
Node.js设计模式(第三版)
Node.js从基础到项目实践(视频教学版)
袁龙
Node.js设计模式(第三版)
Node.js实战:分布式系统中的后端服务开发
[美]托马斯·亨特二世(Thomas Hunter II)
Node.js设计模式(第三版)
Node.js+Express+MongoDB+Vue.js全栈开发实战
柳伟卫
Node.js设计模式(第三版)
NoSQL数据库原理(第2版)(微课版)
北京邮电大学智能信息技术课题组
Node.js设计模式(第三版)
Node.js从入门到精通
明日科技
Node.js设计模式(第三版)
NoSQL数据库实战派:Redis+MongoDB+HBase
赵渝强 著
Node.js设计模式(第三版)
NoSQL数据库技术及应用
郭建磊 王嫱
Node.js设计模式(第三版)
Node.js Web全栈开发实战
千锋教育高教产品研发部
Node.js设计模式(第三版)
NoSQL数据库技术
张元鸣
您可能感兴趣 / 更多
Node.js设计模式(第三版)
梅芙·宾奇治愈三部曲(套装全3册)
[爱尔兰]梅芙·宾奇 著
Node.js设计模式(第三版)
去野吧,小家伙
[爱尔兰]奥利维娅·霍普
Node.js设计模式(第三版)
焦虑的孩子:关于儿童青少年焦虑问题的心理研究
[爱尔兰]夏洛特·威尔逊(Charlotte Wilson)
Node.js设计模式(第三版)
新民说·普罗提诺《九章集》导论
[爱尔兰]多米尼克·奥米拉 著;新民说 出品
Node.js设计模式(第三版)
贝克特书信集:贝克特书信集:第二卷(1941—1956)(全两册)
[爱尔兰]萨缪尔·贝克特 著;[英]乔治·克雷格【美】玛莎·道·费森菲尔德【英】丹·冈恩【美】洛伊丝·摩尔·奥维贝克 主编
Node.js设计模式(第三版)
都柏林人(书虫.牛津英语文学名著简写本)
[爱尔兰]詹姆斯·乔伊斯(James Joyce) 著;[英]克莱尔·韦斯特(Clare West) 改写
Node.js设计模式(第三版)
水最深的地方(村上春树、理查德·福特、希拉里·曼特尔等作家盛赞,希区柯克式悬念和欧·亨利式意外结局)
[爱尔兰]克莱尔·吉根 著;路旦俊 译
Node.js设计模式(第三版)
托菲
[爱尔兰]莎拉·克罗森 后浪
Node.js设计模式(第三版)
垂钓黑河上(美国国家图书奖得主科伦·麦凯恩经典短篇小说集)
[爱尔兰]科伦·麦凯恩
Node.js设计模式(第三版)
歌犬(美国国家图书奖得主科伦·麦凯恩讲述一个儿子与父亲如何和解的故事)
[爱尔兰]科伦·麦凯恩
Node.js设计模式(第三版)
德古拉的客人——勃拉姆·斯托克奇异故事集
[爱尔兰]勃拉姆·斯托克 著;王逢振 编;欧阳耀地 译
Node.js设计模式(第三版)
古代晚期的世界:150—750
[爱尔兰]彼得·布朗 后浪