Node.js设计与模式试读

团队翻译的《node.js设计与模式》推出后得到了大家广泛关注,为了让更多读者了解它,我们特选出部分章节在公众号发出,欢迎各位试读,今天先给出前言部分让大家有一个整体了解。在这里辛苦寸老师与译者们一年多辛苦的付出。

作者签名会:

前言

很多人认为Node.js的出现是web开发领域十年内最大的变化,就像是游戏规则改变者。它之所以被喜爱不仅因为技术上的出众能力,同时也因为它带给web开发新的思维方式。

首先,Node.js程序是使用Javascript语言编写的,而Javascript又是唯一被绝大多数web浏览器原生支持的编程语言。该特性使得单语言应用以及服务端,客户端代码共享成为可能。Node.js本身也促进了JavaScript语言的兴起和演变。人们意识到,在服务端使用JavaScript并不像在浏览器端使用它那样糟糕,并且人们将慢慢喜欢上它的编程思维和它混合的天性,即面向对象和函数式编程的结合。

其次,单线程和异步架构也是Node.js带来的革命性变化。除了从性能和可伸缩性角度来看的明显优势,该特性改变了开发者处理程序并发和并行的方式。队列取代了互斥锁,回调函数和事件机制取代了多线程,因果关系取代了同步性。

最后也是最重要的一点在于,Node.js拥有一套完整的生态系统:npm包管理器,不断增长的模块数量,热情活跃的开发社区,以及它基于简单、实用主义和极端模块化而产生的独特文化。

然而,因为这些特性,Node.js开发给你一种与其他服务端语言开发非常不一样的感受,刚开始接触Node.js的开发者会经常困惑于如何有效地解决一些最常见的设计和代码编写问题。常见的问题有:“如何组织我的代码?”,“设计这个系统的最好方法是什么?”,“怎样使我的程序更加模块化?”,“我该怎样高效实现大量的异步调用?”,“我该如何确定我的程序随着规模增大会一直稳定运行,不会崩溃?”,或者更简单地问,“Node.js开发的正确方式是什么?”。幸运的是,Node.js已经成为一个非常成熟的开发平台,以上大部分问题都能通过设计模式,证明有效的编码技巧或者他人提供的经验来解决。本书的目的就是指导你去学习并掌握Node.js开发中遇到的一些设计模式,编码技巧和实践经验,告诉你解决这些常见问题的有效方法并教会你如何从这些方法出发,去解决你自己遇到的特定问题。

通过阅读本书,你会学习到以下这些内容:

Node.js的开发方式:

如何使用正确的思维方式去解决一个Node.js开发设计问题。比如你会学习到,传统设计模式在Node.js开发中的不同体现,或者如何设计提供单一功能的模块。

一整套解决常见Node.js设计和编码问题的设计模式:

你会学习到一整套像“瑞士军刀”一样功能多样,实用的设计模式,让你能即学即用,解决日常遇到的程序开发和设计问题。

如何编写模块化,高效率的Node.js程序:

你将会理解开发大规模并且结构组织合理的Node.js程序的基本方法,并能运用这些方法去解决不属于现有设计模式范畴的新问题。

在本书中,你会看到一些真实项目中用到的库和技术,比如 LevelDb, Redis, RabbitMQ, ZMQ, Express 等。这些会用来作为示例阐述某个设计模式或者方法,除了让这些例子更加实用,同时会让你对Node.js的生态系统以及它解决问题的一套方法有所了解。

无论你正使用或打算在你的工作,非正式项目或者开源项目中使用Node.js,认识和使用众所周知的设计模式和技术能够让你通过一种通用的语言和他人共享你的代码和设计,不仅如此,这还会帮助你更好地了解Node.js的未来以及知道如何为其发展贡献自己的一份力量。

各章介绍

第一章,欢迎来到Node.js平台,该章通过讲解Node.js本身核心部分的设计模式来介绍Node.js程序的设计。包括Node.js的生态系统,编程思想,以及简单介绍Node.js V6版本,ES2015和反应器模式。

第二章,Node.js基本设计模式,开始介绍Node.js异步编程和设计模式的第一课,讨论和比较回调函数和事件触发器(观察者模式)。本章还介绍了Node.js的模块系统和相关模块的设计模式。

第三章,异步控制流模式之回调函数,介绍了一组模式和技术用于有效处理 Node.js 中的异步控制流。这章将教你怎样使用纯 JavaScript 和异步库来缓解“回调地狱”的问题。

第四章,异步控制流模式之ES2015+,介绍了 Promises, Generators, and Async-Await 的异步控制流探索进展。

第五章,流编程,深度挖掘 Node.js 中最重要的模式之一:流。本章将向你展示如何处理与数据流交换和如何将它们组合成不同的布局。

第六章,设计模式,涉及一个有争议的话题:Node.js 的传统设计模式。它覆盖了最流行的传统设计模式,并向你展示了它们在 Node.js 中的标新立异。它也向读者介绍了一些只有 JavaScript 和 Node.js 特定的新的设计模式。

第七章,接线模块,分析关联多个模块到一个应用程序中的不同解决方案。本章中,你将学习设计模式,例如依赖注入和服务定位器。

第八章,通用JavaScript的Web应用程序,探讨了现代 JavaScript web 应用最有趣的功能之一:前后端代码共享。本章我们学习通用的 JavaScript 基本原则, 通过使用 React,Webpack 和 Babel 来构建一个简单的 Web 应用程序。

第九章,高级异步秘诀,通过解决问题的方法向你展示一些常见的编码和设计挑战怎样被直接可用的解决方案来解决。

第十章,可伸缩性和体系结构模式。教你可伸缩的 Node.js 应用中的基本技术和模式。

第十一章,消息传递和集成模式,提出了最重要的消息传递模式,教你如何构建和集成使用 ZMQ 和 AMQP 复杂的分布式系统。

你需要为本书准备什么

为了实验代码,你需要 Node.js 第 6 版(或更高版本)和 npm3(或更高版本) 的安装工作。一些例子将要求你使用转码器,例如 Babel。你还需要熟悉命令提示符,了解如何安装 npm 包,还要了解怎样运行 Node.js 应用。你还需要一个文本编辑器去写代码和一个现代浏览器。

适用读者

这本书是给那些已经接触过 Node.js 并且现在想在生产力,设计质量和可扩展性方面获得最大收益的开发者。由于本书也将覆盖一些基本概念,你只需要之前通过一些基本例子对相关技术有过接触即可。 中级经验的 Node.js 开发者也会发现本书中提出的技术有益。

一些软件设计理论背景知识也会有助于去理解本书提出的概念。

本书假定你有 Web 应用开发,JavaScript,Web 服务,数据库和数据结构的工作知识。

约定

在本书中,你会发现许多文本样式用于区分不同种类的信息。这里是一些这些样式的例子和他们含义的解释。

在文本中码字,数据库表名,目录名,文件名,文件扩展名,路径,假网址,用户输入,和 Twitter 手柄展示如下:"ES2015 采用 关键字实现遵守块级作用域的的变量声明。"

代码块设置如下:

当我们希望将你的注意力集中在代码块的特定部分时,相关词语或者项目以粗体设置:

任何命令行输入或输出设置如下:

新术语重要词汇会以粗体显示。你在屏幕上看到的词,例如,在菜单或者对话框中,出现如下文字:“为了解释问题,我们将创建小的 web 爬虫,一个可将 Web URL 作为输入并下载内容到本地文件中的命令行应用程序。”

欢迎大家关注公众号:大前端工程师

最后为我家老爷子打call,他老人家在众多学生的邀请下开了历史讲座,欢迎对历史感兴趣的的同学试听已经推出的四节:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180319G0Y21M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券