• Node.js设计模式(第三版)
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

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

品相核验准确、体验好,不符包售后;下午5点前订单,当日发货

60.75 4.1折 148 九五品

仅1件

四川成都
认证卖家担保交易快速发货售后保障

作者[爱尔兰]马里奥·卡西罗;[意]卢西安诺·马米诺

出版社中国电力出版社

出版时间2021-08

版次1

装帧其他

货号9787519855970503

上书时间2024-10-28

捞书怪

四年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九五品
图书标准信息
  • 作者 [爱尔兰]马里奥·卡西罗;[意]卢西安诺·马米诺
  • 出版社 中国电力出版社
  • 出版时间 2021-08
  • 版次 1
  • ISBN 9787519855970
  • 定价 148.00元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 616页
  • 字数 810.000千字
【内容简介】
本书中使用好的办法来实现各种设计模式以创造高效且健壮的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
点击展开 点击收起

—  没有更多了  —

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

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