Node.js 设计模式

🌙
手机阅读
本文目录结构

Node.js 设计模式

编辑推荐

适读人群 :开发人员和有一些 JavaScript 基本知识且有兴趣去深入了解如何开发和设计企业级的 Node.js 应用的软件架构师

  • Node.js 的开发方式:如何使用正确的思维方式去解决一个 Node.js 开发设计问题。比如你会学习到,传统设计模式在 Node.js 开发中的不同体现,或者如何设计提供单一功能的模块。
  • 一整套解决常见 Node.js 设计和编码问题的设计模式:你会学习到一整套像“瑞士军刀”一样功能多样、实用的设计模式,让你能即学即用,解决日常遇到的程序开发和设计问题。
  • 如何编写模块化、高效率的 Node.js 程序:你将会理解开发大规模并且结构组织合理的 Node.js 程序的基本方法,并能运用这些方法去解决不属于现有设计模式范畴的新问题。
  • 真实项目中用到的库和技术:LevelDb、Redis、RabbitMQ、ZMQ 及 Express 等用来作为示例阐述某个设计模式或者方法,让例子更加实用,对生态系统及它解决问题的方法有所了解。

内容简介

本书通过大量示例形象地阐述了 Node.js 的哲学思想和设计模式。内容主要由六部分组成:Node 核心思想、基础设计模式、异步控制流模式、流编程、Node.js 的传统设计模式和特有设计模式、通用编程的 Web 应用以及处理复杂实际问题的高级编程技巧。这是一本值得深入品读的书籍,读者若具备一些软件设计的理论知识会有助于理解书中提出的概念,中级 Node.js 开发者也会从本书有所收获。本书尤其适用于已经接触过 Node.js 并且想在效率、设计质量和可扩展性方面获得提升的开发者。

作者简介

Mario Casciaro,软件工程硕士学位,软件工程师,企业家,对技术、科学和开源知识充满了热情。他在 IBM 开始了职业生涯,数年间先后参与很多不同产品的开发,例如 Tivoli EndpointManager、Cognos Insight 及 SalesConnect。后来,他加入了一个成长中的 SaaS 公司――D4HTechnologies,负责开发一款实时应急管理的前沿产品。现在,Mario 是 Sponsorama.com 的联合创始人兼 CEO,这是一个帮助在线项目募集企业赞助资金的平台。Mario 也是 Node.js Design Patterns(Node.js 设计模式)第一版的作者。 翻译成员全部来自陆金所大前端团队,也是公众号大前端工程师的翻译小组成员,他们在公众号与知乎专栏里面也有很多新的技术文章的翻译,此次由寸志老师带队,大家一边在公司进行 nodejs 项目的推广实践,一边将实践的心得注入到本书翻译的理解,这是非常难得的结合,相信大家在读的过程中能体会到这一点。

目录

第 1 章欢迎来到 Node.js 平台

  • Node.js 的哲学思想
  • 小核心
  • 小模块
  • 小接触面
  • 简单和实用
  • 认识 Node.js 6 和 ES2015
  • let 和 const 关键字
  • 箭头函数
  • 类语法
  • 增强的对象字面量
  • Map 和 Set 集合
  • WeakMap 和 WeakSet 集合
  • 模板字面量
  • 其他 ES2015 特性
  • Reactor 模式
  • I/O 是缓慢的
  • 阻塞 I/O
  • 非阻塞 I/O
  • 事件多路分解器
  • Reactor 模式简介
  • Node.js-libuv 的非阻塞 I/O 引擎
  • Node.js 的秘诀
  • 总结

第 2 章 Node.js 基础设计模式

  • 回调模式
  • CPS(Continuation Passing Style
  • 同步或异步
  • Node.js 回调约定
  • 模块系统及其模式
  • 揭示模块模式
  • Node.js 模块解释
  • 模块定义模式
  • 观察者模式
  • EventEmitter 类
  • 创建和使用 EventEmitter
  • 传播错误
  • 使任何对象可观察
  • 同步和异步事件
  • EventEmitter 与回调
  • 组合回调和 EventEmitter
  • 总结

第 3 章异步控制流模式之回调函数

  • 异步编程的困难
  • 创建一个简单的网络蜘蛛
  • 回调地狱
  • 使用纯 JavaScript
  • 回调规则
  • 应用回调规则
  • 顺序执行
  • 并行执行
  • 有限制的并行执行
  • async 库
  • 顺序执行
  • 并行执行
  • 有限制的并行执行
  • 总结
  • xiv

第 4 章异步控制流模式之 ES2015+

  • promise
  • 什么是 promise
  • Promises/A+ 实现
  • Node.js 风格函数的 promise 化
  • 顺序执行
  • 并行执行
  • 有限制的并行执行
  • 在公共 API 中暴露 callback 和 promise
  • generator
  • generator 基础
  • generator 的异步控制流
  • 顺序执行
  • 并行执行
  • 有限制的并行执行
  • 使用 Babel 的 async await
  • 安装和运行 Babel
  • 比较
  • 总结

第 5 章流编程

  • 流的重要性
  • 缓冲和流
  • 空间效率
  • 时间效率
  • 组合性
  • 开始学习流
  • 流的分类
  • 可读流
  • 可写流
  • 双向流 (Duplex stream)
  • 变换流
  • 使用管道拼接流
  • 使用流处理异步流程
  • 顺序执行
  • 无序并行执行
  • 无序有限制的并行执行
  • 顺序并行执行
  • xv
  • 管道模式
  • 组合流
  • 复制流
  • 合并流
  • 复用和分解
  • 总结

第 6 章设计模式

  • 工厂模式
  • 创建对象的通用接口
  • 一种封装的机制
  • 构建一个简单的代码分析器
  • 可组合的工厂函数
  • 扩展
  • 揭示构造函数
  • 只读事件触发器
  • 扩展
  • 代理模式
  • 实现代理模式的方法
  • 不同方法的比较
  • 创建日志记录的写入流
  • 生态系统中的代理模式――函数钩子与面向行为编程 (AOP)
  • ES2015 中的 Proxy 对象
  • 扩展
  • 装饰者模式 (Decorator)
  • 实现装饰者模式的方法
  • 装饰一个 LevelUP 数据库
  • 扩展
  • 适配器模式 (Adapter)
  • 通过文件系统 API 来使用 LevelUP 数据库
  • 扩展
  • 策略模式 (Strategy)
  • 支持多种格式的配置对象
  • 扩展
  • 状态模式
  • 实现一个基本的自动防故障套接字
  • 模板模式 (Template)
  • 配置管理器模板
  • xvi
  • 扩展
  • 中间件 (Middleware)
  • Express 中的中间件
  • 设计模式中的中间件
  • 为?MQ 创建中间件框架
  • 在 Koa 中使用生成器的中间件
  • 命令模式 (Command)
  • 灵活的设计模式
  • 总结

第 7 章连接模块

  • 模块和依赖
  • Node.js 中最常见的依赖
  • 内聚和耦合
  • 有状态的模块
  • 连接模块模式
  • 硬编码依赖
  • 依赖注入
  • 服务定位器
  • 依赖注入容器
  • 连接插件
  • 插件作为包
  • 扩展点
  • 插件控制与应用程序控制的扩展
  • 实现注销插件
  • 总结

第 8 章通用 JavaScript 的 Web 应用程序

  • 与浏览器端共享代码
  • 共享模块
  • Webpack 简介
  • Webpack 的魔力
  • Webpack 的优点
  • 使用 ES2015 和 Webpack
  • 跨平台开发基础
  • 运行时代码分支
  • 构建时代码分支
  • 模块交换
  • xvii
  • 用于跨平台开发的设计模式
  • React 介绍

第一个 React 组件

  • JSX 是什么
  • 配置 Webpack 以实现 JSX 转换
  • 在浏览器中渲染
  • React 路由库
  • 创建通用 JavaScript 应用程序
  • 创建可用的组件
  • 服务端渲染
  • 通用渲染和路由
  • 通用数据检索
  • 总结

第 9 章高级异步编程技巧

  • 需要异步初始化的模块
  • 规范解决方案
  • 预初始化队列
  • 题外话
  • 异步批处理和缓存
  • 实现没有缓存或批处理的服务器
  • 异步请求批处理
  • 异步请求缓存
  • 使用 promise 进行批处理和缓存
  • 运行 CPU 绑定的任务
  • 解决子集和问题
  • 交叉使用 setImmediate
  • 使用多进程
  • 总结

第 10 章扩展与架构模式

  • 应用程序扩展介绍
  • 扩展 Node.js 应用程序
  • 可扩展性的三个维度
  • 克隆和负载均衡
  • 集群模块
  • 处理有状态通信
  • 使用反向代理进行扩展
  • xviii
  • 使用服务注册表
  • 对等负载均衡
  • 分解复杂的应用程序
  • 单体式架构
  • 微服务架构
  • 微服务架构中的集成模式
  • 总结

第 11 章消息传递与集成模式

  • 消息系统的基础
  • 单向和请求 / 应答模式
  • 消息类型
  • 异步消息和队列
  • 对等或基于代理的消息
  • 发布 / 订阅模式
  • 构建简约的实时聊天应用程序
  • 使用 Redis 作为消息代理
  • 使用?MQ 对等发布 / 订阅
  • 持久订阅者
  • 管道和任务分配模式
  • MQ 扇出 / 扇入模式
  • 使用 AMQP 实现管道和竞争消费者模式
  • 请求 / 应答模式
  • 关联标识符
  • 返回地址
  • 总结

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了