`

了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

 
阅读更多

了不起的Node.js: JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发

Guillermo Rauch   

赵静 译

ISBN 978-7-121-21769-2

20141月出版

定价:79.00

320

16


 

编辑推荐

Node.js是一个由JavaScript书写而成的强大的web开发框架,它让开发强壮的、伸缩性良好的服务端web应用变得更加简单,容易。本书向你展示了什么是Node以及如何让你在项目中使用它。本书包含大量实际应用中的示例程序,证明了为什么Node.js会快速成为web开发首选工具的原因,通过本书,你能够快速熟悉和掌握达到如下目标所需的Node知识和技能:

了解Node基于事件轮询的架构、无阻塞IO以及事件驱动的编程方式

精通Node.jsAPI

轻松实现开发实时应用相关的技术,如SOCKET.IOHTML5 WEBSOCKETS

编写能够支持跨多台服务器的高并发应用

通过Node来支持多种数据库以及数据存储工具

编写在单台服务器情况下能够处理万级并发量的程序

能够在一个包含更多Node知识和注解示例(含源代码)的网站上和其他开发者进行实时地沟通交流

本书包含大量全彩插图和实用的源代码,绝对是一本革命性web开发工具——Node的实用指南。

内容提要

本书是一本经典的 Learning by Doing的书籍。它由 Node社区著名的 Socket.IO作者—— Guillermo Rauch,通过大量的实践案例撰写,并由 Node社区非常活跃的开发者—— Goddy Zhao翻译而成。

本书内容主要由对五大部分的介绍组成: Node核心设计理念、 Node核心模块 APIWeb开发、数据库以及测试。从前到后、由表及里地对使用 Node进行 Web开发的每一个环节都进行了深入的讲解,并且最大的特点就是通过大量的实际案例、代码展示来剖析技术点,讲解最佳实践。

目录

PART  从安装与概念开始

CHAPTER 1 安装............................................... 3

Windows下安装............................................... 3

OS.X下安装. ................................................ 4

Linux下安装................................................. 5

编译. ............................................................5

确保安装成功. ...............................................5

Node.REPL................................................. 5

执行文件.......................................................... 6

NPM................................................................. 6

安装模块...........................................................7

自定义模块. .......................................................8

安装二进制工具包. ..................................................9

浏览NPM仓库. .......................................................9

小结................................................................. 10

CHAPTER 2 JavaScript概览.........................................11

介绍.......................................................... 11

JavaScript基础..................................................... 12

类型. ......................................................... 12

类型的困惑. ............................................... 12

函数. .......................................................... 13

THISFUNCTION #CALL以及FUNCTION#APPLY.................... 14

函数的参数数量. ........................... 14

闭包. ........................................................ 14

. .............................................................. 15

继承. ..................................................... 16

TRY.{}.CATCH.{}...................................... 17

v8中的JavaScript............................... 17

OBJECT#KEYS....................................................... 18

ARRAY#ISARRAY................................................ 18

数组方法................................................. 18

字符串方法.. .................................................... 19

JSON............................................................. 19

FUNCTION#BIND....................................................... 19

 FUNCTION#NAME.............................................. 19

_PROTO_(继承). ............................................ 20

存取器....................................................... 20

小结.............................................................. 21

CHAPTER 3 阻塞与非阻塞IO................................. 23

能力越强,责任就越大................................................. 23

阻塞. ............................................................. 25

单线程的世界. ............................................... 27

错误处理..................................................... 29

堆栈追踪................................................ 30

小结............................................................... 32

CHAPTER 4 Node中的JavaScript ..................................... 33

global对象....................................................... 33

实用的全局对象. ................................................ 34

模块系统............................................................ 34

绝对和相对模块. .................................................. 35

暴露API. ............................................................... 37

事件......................................................... 38

 buffer............................................................... 40

小结................................................................... 41

 PART  Node重要的API

CHAPTER 5 命令行工具(CLI)以及FS API:首个Node应用................... 45

需求................................................. 45

编写首个Node程序...................................... 46

创建模块.............................................. 46

同步还是异步. ............................ 47

理解什么是流(stream................................... 49

输入和输出. .......................................................... 50

重构. ........................................ 53

fs进行文件操作. .............................. 55

CLI一探究竟. ................................................. 56

argv.................................................... 57

工作目录...................................... 57

环境变量........................................... 58

退出. ............................................... 58

信号. .......................................................... 58

ANSI转义码............................................ 59

fs一探究竟. ................................................. 59

Stream......................................................... 59

监视. .......................................... 60

小结...................................................... 61

CHAPTER 6 TCP ........................................... 63

TCP有哪些特性. ..................................................... 64

面向连接的通信和保证顺序的传递. ........................... 64

面向字节........................................ 65

可靠性............................................... 65

流控制......................................... 65

拥堵控制.............................................. 65

Telnet................................................................ 65

基于TCP的聊天程序............................................... 68

创建模块..................................... 68

理解NET.SERVER.API........................ 68

接收连接....................................... 70

data事件. ...................................................... 71

状态以及记录连接情况. ........................................ 73

圆满完成此程序. ............................................ 75

一个IRC客户端程序.......................................... 77

创建模块.............................................. 77

理解NET#STREAM.API.. ......................................... 78

实现部分IRC协议. .................................................. 78

测试实际的IRC服务器. .................................. 78

小结................................................................. 79

CHAPTER 7 HTTP .................................................. 81

HTTP结构......................................................... 81

头信息. ...................................................... 82

连接.............................................................. 87

一个简单的Web服务器.................................................. 88

创建模块....................................... 88

输出表单.................................................... 88

methodURL. ........................................... 90

数据. .............................................. 92

整合. ................................................ 94

让程序更健壮. ..................................... 95

一个Twitter.Web客户端......................................... 96

创建模块....................................... 96

发送一个简单的HTTP请求. ...................... 97

发送数据......................................... 98

获取推文................................................. 99

superagent来拯救.............................................. 102

使用up重启HTTP服务器..................................... 103

小结............................................. 104

PART Ⅲ Web开发

CHAPTER 8 Connect .............................. 107

使用HTTP构建一个简单的网站. ....................................... 108

通过Connect实现一个简单的网站...................................... 111

中间件. ................................................. 112

书写可重用的中间件. .........................114

static中间件. .............................................119

query中间件. .......................................120

logger中间件................................................... 120

body.parser中间件. .................................122

cookie.........................................................125

会话(session. ......................................126

Redis.session..................................................131

methodOverride中间件. ...........................132

basicAuth中间件. ......................................132

小结.............................................................. 134

CHAPTER 9 Express..................................................135

一个小型Express应用. ...................................... 135

创建模块..............................................136

 HTML...........................................................136

 SETUP..........................................................137

定义路由............................................137

查询. .................................................140

运行. .....................................................141

设置......................................................... 142

模板引擎...................................................... 143

错误处理........................................................ 144

快捷方法................................................. 144

路由................................................ 146

中间件. .................................................... 148

代码组织策略. ......................................... 149

小结................................................. 151

CHAPTER 10 WebSocket .................. 153

Ajax.............................................. 153

HTML5.WebSocket............................................... 156

一个ECHO示例. ......................................................... 157

初始化项目. .............................................157

建立服务器. ..................................................158

建立客户端. ......................................159

运行示例程序. ...................................160

鼠标光标.......................................... 161

初始化示例程序. .........................................161

建立服务器. ............................................161

建立客户端. .....................................164

运行示例程序. .........................................166

面临一个挑战. ............................................. 166

关闭并不意味着断开连接. .............................166

JSON...........................................167

重连. ...................................................167

广播. ................................................167

WebSocket属于HTML5:早期浏览器不支持. ..........................167

解决方案.................................................167

小结............................................................. 167

CHAPTER 11 Socket.IO.............................................169

传输................................................. 170

断开.VS.关闭. ............................................170

事件. ..........................................170

命名空间..............................................171

聊天程序................................................. 172

初始化程序. .......................................172

构建服务器. ..........................................172

构建客户端. .......................................173

事件和广播. ........................................175

消息接收确认. .................................179

一个轮流做DJ的应用................................ 180

扩展聊天应用. ...........................................181

集成Grooveshark.API. ...............................182

播放歌曲...............................................185

小结.................................................... 190

PART Ⅳ 数据库

CHAPTER 12 MongoDB.......................193

安装.................................................. 195

使用MongoDB:一个用户认证的例子. .................................. 195

构建应用程序. .......................................195

创建Express.App.. ..............................196

连接MongoDB. ...................................200

创建文档......................................201

查找文档..................................203

身份验证中间件. ..................................204

校验.. ..............................................205

原子性..............................................206

安全模式................................206

Mongoose介绍......................................... 206

定义模型........................................207

定义嵌套的键. ..........................208

定义嵌套文档. .....................................209

构建索引..........................................209

中间件.................................................209

探测模型状态.. ...............................210

查询. ..............................................210

扩展查询........................................210

排序.. ........................................211

选择. ......................................................211

限制.. .....................................211

跳过. .........................................211

自动产生键. ...............................211

转换. ..............................................212

一个使用Mongoose的例子........................................ 212

构建应用.................................212

重构. ..............................213

建立模型.................................213

小结.......................................... 215

CHAPTER 13 MySQL...........................................217

node-mysql........................................ 217

初始化项目. .......................................217

Express应用. ...................................218

连接MySQL. .....................................219

初始化脚本. .......................................220

创建数据................................................224

获取数据.....................................228

sequelize............................................ 229

初始化sequelize. ................................230

初始化Express应用. ....................................230

连接sequelize. .........................233

定义模型和同步. ........................... 234

创建数据.................................236

获取数据......................................238

删除数据..............................239

完整地完成应用. ...............................240

小结.......................................... 241

CHAPTER 14 Redis......................................... 243

安装Redis............................................... 244

Redis查询语言. ............................................... 245

数据类型............................................. 245

字符串. ...................................246

哈希. .................................................246

列表. ......................................... 248

数据集. .....................................249

有序数据集. .........................................249

RedisNode. .......................................... 249

使用node-redis实现一个社交图谱. .............250

小结......................................... 259

PART Ⅴ 测试

CHAPTER 15 代码共享 ................................. 263

什么样的代码可以共享........................................... 263

书写兼容的JavaScript代码................................ 264

导出模块......................................................264

模拟实现ECMA.API. ................................265

模拟实现Node.API. ......................................267

模拟实现浏览器端API. ...............................267

跨浏览器的继承实现. ...........................268

集成到一起:browserbuild. ...................... 268

基础案例....................................269

小结......................................... 271

CHAPTER 16 测试................................... 273

简单测试........................................ 273

测试目标............................................. 274

测试策略................................... 274

测试程序...................................................275

expect.js................................................. 276

API一览. .........................................276

Mocha................................................. 278

测试异步代码. ..................................279

BDD风格. ................................281

TDD风格. .......................................281

export风格. .................................282

在浏览器端使用Mocha. ...................................282

小结.................................... 284

索引 ...................................... 285

作者简介

Guillermo Rauch(旧金山,加利福尼亚州)是一家位于旧金山,为

当地教育提供相关服务的创业公司LearnBoostCTO和联合创始人。

Rauch还是几个知名Node.js项目的发明者,曾在JSConf和一些

Node.js workshop做过演讲。"

译者介绍:

Goddy Zhao(本名赵静),Successfactors(SAP子公司)软件工程师。毕业于复旦大学,先后在IBM、淘宝工作过,专注于企业级富客户端Web应用的开发,擅长前后端相结合的技术解决方案。曾与人合译过多本前端图书,并曾在沪JSD2前端技术论坛担任过主持人和演讲嘉宾。个人主页http//goddyzhao.me

媒体评论

本书写作精良——Amazon.com读者Shawn Rapp

本书直指要点,且无无用废话,可谓字字珠玑——Amazon.com读者Pragmateek

本书定位精确,用大量简单但鲁棒性强的模式帮助初学者走上用Node.js创建更复杂应用之路。这种简明扼要的写法很招人喜欢,面向教学做得很成功,是一本有效使用Node.js的参考书。——Amazon.com读者Pmjtoca

前言

绝大部分 Web应用都包含客户端和服务器端两部分。服务器端的实现往往比较复杂、麻烦。创建一个简单的服务器都要求对多线程、伸缩性以及服务器部署有专业的技术知识。除此之外,由于客户端软件是用 HTMLJavaScript来实现的,而服务器端核心代码通常都是用静态编程语言实现的,所以,开发 Web应用经常会有错乱的感觉。由于这种前后端开发语言的差异,不得不让开发者使用多种编程语言,同时还要对特定的程序逻辑事先做好设计选型。

几年前,要用 JavaScript来实现服务端软件几乎是想都不敢想的一件事情。糟糕的性能、不成熟的内存管理以及缺乏操作系统层面的集成,不解决这些问题, JavaScript很难成为一门服务器端的语言。作为 Google Chrome浏览器的一部分,新的 V8引擎能够解决前两个问题。 V8是一个开源的项目,通过简单的 API就可以将其集成进去。

Ryan Dahl洞察到了这样一个机会,可以通过将 V8内嵌到操作系统的集成层,来让 JavaScript享受到底层操作系统的异步接口,从而实现将其带到服务器端的目的。这就是 Node.js的设计思路。这么做的好处是显而易见的。程序员们可以在客户端和服务器端使用同样的编程语言了。 JavaScript动态语言的特性使得开发和试验服务器端代码变得很自由,使得程序员们摆脱了传统那种又慢又重的编程模式。

Node.js迅速蹿红,衍生了一个强大的开源社区、支持企业,甚至还拥有属于自己的技术大会。我把这种成功归结于它的简洁,高效,同时提高了编程生产力。我很高兴 V8成为其一小部分。

本书将带着读者学习如何基于 Node.jsWeb应用构建服务器端部分,同时还会带着大家学习如何组织服务器端异步代码以及如何与数据库进行交互。

好好享受这本书带来的乐趣吧!

  • 大小: 247.4 KB
  • 大小: 2 MB
分享到:
评论

相关推荐

    Node.js-Doodoo.js--中文最佳实践Node.jsWeb快速开发框架支持Koa.js中间件

    由于其轻量级和高效性,Node.js 成为了构建实时通信应用、API 服务以及静态资源服务器的首选工具。 **Doodoo.js 框架介绍** Doodoo.js 是专为 Node.js 设计的一款 Web 快速开发框架,旨在简化 Web 应用的开发流程...

    win7,win10,macOS的node.js安装包

    1. 原生支持非阻塞I/O:Node.js采用事件驱动、异步编程模型,使得处理高并发请求变得更加高效。 2. 文件系统操作:Node.js提供了丰富的API,可以直接对文件和目录进行读写操作。 3. HTTP服务器:内置HTTP模块,可以...

    【JavaScript源代码】CentOS 8.2服务器上安装最新版Node.js的方法.docx

    Node.js是一个广泛使用的开源JavaScript运行时环境,允许开发者在服务器端执行JavaScript代码,而不局限于Web浏览器内部。这一特性使得Node.js成为构建后端服务和实时应用程序的理想选择。它基于Chrome V8引擎,实现...

    Node.js-基于Node快速构建WEB应用服务的框架

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。这个技术的出现,极大地推动了Web应用的发展,因为开发者现在可以使用同一门语言进行前后端的开发,大大提高...

    Node.js-[全文]如何正确的学习Node.js

    在IT行业中,Node.js是一个备受关注的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。本文将深入探讨如何正确地学习Node.js,基于提供的标题和描述,我们将围绕这一主题展开,详细介绍Node.js的...

    Node.js.the.Right.Way(2013.11)

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它让开发者可以使用JavaScript在服务器端进行编程。Node.js自2009年诞生以来,凭借其异步非阻塞I/O模型,在Web开发领域中取得了巨大成功,成为构建高性能网络...

    深入浅出node.js 田永强著

    1. **JavaScript 运行环境**:Node.js是基于Google Chrome V8引擎的JavaScript运行环境,允许开发者在服务器端使用JavaScript进行开发,打破了JavaScript只能在浏览器中运行的局限,极大地拓宽了其应用范围。...

    node.js 最新版本

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的流行。最新版本的 Node.js 提供了更好的性能、更多的特性和优化,以及对最新...

    初识 Node.js-3课时 课件 源码.zip

    1. **JavaScript 进入服务器端**:讲解为什么选择 JavaScript 进行服务器端开发,Node.js 如何解决了 JavaScript 并发问题,以及非阻塞 I/O 模型(Event Loop)的概念。 2. **Node.js 的诞生与应用**:介绍 Node.js...

    基于Node.js的部门管理系统的设计与实现

    Node.js使用事件驱动、非阻塞I/O模型,这使得它在处理并发请求时表现出色,尤其适合构建高性能的网络服务。此外,Node.js拥有丰富的NPM(Node Package Manager)包管理器,提供了大量的模块,可以快速搭建项目框架。...

    Node.js-fastify用于Node.js的快速和低开销的Web框架

    **Fastify:Node.js的高性能Web框架** Fastify是一个针对性能设计的Node.js Web和API框架,它以极低的开销提供了强大的功能。在Node.js的生态系统中,Fastify以其速度和效率脱颖而出,成为开发者构建高效服务器的...

    关于typescipt/node.js/javascript/css/html语言的代码.zip

    Node.js以其非阻塞I/O和事件驱动的模型而著名,特别适合构建高性能、高并发的网络应用。在提供的代码中,你可能会看到使用Node.js的fs模块进行文件操作,或者http模块创建服务器的示例。 JavaScript,作为Web开发的...

    node12.16.1.rar

    此外,Node.js 12.16.1还优化了网络I/O,使得数据传输更为高效,这对于构建高并发、低延迟的Web服务至关重要。 在API方面,Node.js 12.16.1对许多内置模块进行了改进,例如`fs`模块。现在,`fs`模块提供了异步读写...

    Node.js-一个graphqlAPI用于gunp2p图形数据库

    1. Node.js:Node.js基于Chrome V8引擎,允许开发者使用JavaScript进行服务器端编程。其非阻塞I/O模型和事件驱动机制使其在处理高并发请求时表现出色,尤其适合构建实时应用。 2. GraphQL:GraphQL由Facebook开源,...

    基于nodejs的博客系统 超小型博客系统

    它采用单线程、异步I/O模型,处理高并发请求时表现出色,特别适合于构建实时通信应用,如聊天服务、实时数据分析和我们关注的博客系统。 该“超小型博客系统”利用了Node.js的这些优点,实现了轻量级、高效能的博客...

    node-v10.16.3-x64.rar

    Node.js的核心特性在于它的非阻塞I/O模型和事件驱动机制,这使得它在处理大量并发请求时表现出色,尤其适合构建高并发、实时通信的应用,如聊天服务器、流媒体服务等。V8引擎的使用使得JavaScript代码能够被快速执行...

    node-v10.10.0-x64.msi

    Node.js通过事件驱动和非阻塞I/O模型,使得处理高并发请求变得高效,尤其适合实时交互的应用场景,如实时聊天、流媒体服务、API服务器等。 二、Node.js v10.10.0 版本特性 1. V8引擎升级:v10.10.0版本采用了V8...

    实战Nginx:取代Apache的高性能Web服务器.

    在互联网行业中,Nginx经常被用来替代传统的Apache服务器,以应对高并发访问和大型网站的需求。本教程将深入探讨Nginx如何实现这一转变,并介绍其核心特性。 一、Nginx的优势 1. 非阻塞I/O模型:与Apache的多进程...

    Node.js-GraphQL微服务GraphQLMicroservice

    在现代Web开发中,Node.js因其高效、可扩展性和灵活性而成为构建后端服务的首选平台之一。GraphQL作为一种新的数据查询和操作语言,为API设计提供了强大的工具,使得客户端能够更精确地获取所需的数据,避免了过度...

Global site tag (gtag.js) - Google Analytics