服务器端JavaScript?没错。Node.js是一个JavaScript服务器,支持可伸缩的高性能Web应用。借助异步I/O,这个服务器可以同时做很多事情,能满足聊天、游戏和实时统计等应用的需求。并且既然是JavaScript,那你就可以全栈使用一种语言。
本书向读者展示了如何构建产品级应用,对关键概念的介绍清晰明了,贴近实际的例子,涵盖从安装到部署的各个环节,是一部讲解与实践并重的优秀著作。通过学习本书,读者将深入异步编程、数据存储、输出模板、读写文件系统,掌握创建TCP/IP服务器和命令行工具等非HTTP程序的技术。本书同样非常适合熟悉Rails、Django或PHP开发的读者阅读学习。
本书主要内容:
Node.js及其扩展的安装配置;
全面理解异步编程和事件循环;
学会开发微博、聊天和游戏等热门应用。
第一部分 Node基础
第1章 欢迎进入Node.js世界2
1.1 构建于JavaScript之上3
1.2 异步和事件触发:浏览器4
1.3 异步和事件触发:服务器5
1.4 DIRT程序6
1.5 默认DIRT8
1.5.1 简单的异步程序9
1.5.2 Hello World HTTP服务器10
1.5.3 流数据10
1.6 小结11
第2章 构建有多个房间的聊天室程序12
2.1 程序概览12
2.2 程序需求及初始设置15
2.2.1 提供HTTP和WebSocket服务15
2.2.2 创建程序的文件结构16
2.2.3 指明依赖项16
2.2.4 安装依赖项17
2.3 提供HTML、CSS和客户端JavaScript的服务18
2.3.1 创建静态文件服务器19
2.3.2 添加HTML和CSS文件21
2.4 用Socket.IO处理与聊天相关的消息23
2.4.1 设置Socket.IO服务器24
2.4.2 处理程序场景及事件25
2.5 在程序的用户界面上使用客户端JavaScript29
2.5.1 将消息和昵称/房间变更请求传给服务器29
2.5.2 在用户界面中显示消息及可用房间30
2.6 小结34
第3章 Node编程基础35
3.1 Node功能的组织及重用36
3.1.1 创建模块37
3.1.2 用module.exports微调模块的创建39
3.1.3 用node_modules重用模块40
3.1.4 注意事项41
3.2 异步编程技术42
3.2.1 用回调处理一次性事件43
3.2.2 用事件发射器处理重复性事件46
3.2.3 异步开发的难题53
3.3 异步逻辑的顺序化54
3.3.1 什么时候使用串行流程控制55
3.3.2 实现串行化流程控制56
3.3.3 实现并行化流程控制58
3.3.4 利用社区里的工具60
3.4 小结61
第二部分 用Node开发Web程序
第4章 构建Node Web程序64
4.1 HTTP服务器的基础知识64
4.1.1 Node如何向开发者呈现HTTP请求65
4.1.2 一个用“Hello World”做响应的HTTP服务器67
4.1.3 读取请求头及设定响应头67
4.1.4 设定HTTP响应的状态码67
4.2 构建RESTful Web服务68
4.2.1 用POST请求创建资源69
4.2.2 用GET请求获取资源71
4.2.3 用DELETE请求移除资源72
4.3 提供静态文件服务73
4.3.1 创建一个静态文件服务器73
4.3.2 处理服务器错误77
4.3.3 用fs.stat()实现先发制人的错误处理77
4.4 从表单中接受用户输入78
4.4.1 处理提交的表单域78
4.4.2 用formidable处理上传的文件81
4.4.3 计算上传进度84
4.5 用HTTPS加强程序的安全性85
4.6 小结86
第5章 存储Node程序中的数据87
5.1 无服务器的数据存储88
5.1.1 内存存储88
5.1.2 基于文件的存储88
5.2 关系型数据库管理系统91
5.2.1 MySQL91
5.2.2 PostgreSQL99
5.3 NoSQL数据库100
5.3.1 Redis101
5.3.2 MongoDB105
5.3.3 Mongoose107
5.4 小结109
第6章 Connect110
6.1 搭建一个Connect程序111
6.2 Connect的工作机制112
6.2.1 做日志的中间件112
6.2.2 响应“hello world”的中间件113
6.3 为什么中间件的顺序很重要114
6.3.1 中间件什么时候不调用next()114
6.3.2 用中间件的顺序执行认证115
6.4 挂载中间件和服务器115
6.4.1 认证中间件116
6.4.2 显示管理面板的中间件117
6.5 创建可配置中间件118
6.5.1 创建可配置的logger中间件组件119
6.5.2 构建路由中间件组件120
6.5.3 构建一个重写URL的中间件组件122
6.6 使用错误处理中间件123
6.6.1 Connect的默认错误处理器124
6.6.2 自行处理程序错误124
6.6.3 使用多个错误处理中间件组件125
6.7 小结129
第7章 Connect自带的中间件130
7.1 解析cookie、请求主体和查询字符串的中间件131
7.1.1 cookieParser():解析HTTP cookie131
7.1.2 bodyParser():解析请求主体134
7.1.3 limit():请求主体的限制135
7.1.4 query():查询字符串解析137
7.2 实现Web程序核心功能的中间件138
7.2.1 logger():记录请求138
7.2.2 favicon():提供favicon140
7.2.3 methodOverride():伪造HTTP方法141
7.2.4 vhost():虚拟主机143
7.2.5 session():会话管理144
7.3 处理Web程序安全的中间件148
7.3.1 basicAuth():HTTP基本认证148
7.3.2 csrf():跨站请求伪造防护150
7.3.3 errorHandler():开发错误处理150
7.4 提供静态文件服务的中间件152
7.4.1 static():静态文件服务152
7.4.2 compress():压缩静态文件154
7.4.3 directory():目录列表156
7.5 小结157
第8章 Express158
8.1 生成程序骨架160
8.1.1 安装Express的可执行程序161
8.1.2 生成程序162
8.1.3 探索程序162
8.2 配置Express和你的程序164
8.3 渲染视图166
8.3.1 视图系统配置167
8.3.2 视图查找169
8.3.3 把数据输出到视图中171
8.4 处理表单和文件上传175
8.4.1 实现照片模型175
8.4.2 创建照片上传表单176
8.4.3 显示上传照片列表178
8.5 创建资源下载179
8.5.1 创建照片下载路由179
8.5.2 实现照片下载路由180
8.6 小结182
第9章 Express进阶183
9.1 认证用户184
9.1.1 保存和加载用户184
9.1.2 注册新用户189
9.1.3 已注册用户登录194
9.1.4 用户加载中间件197
9.2 先进的路由技术199
9.2.1 校验用户内容提交199
9.2.2 特定路由中间件202
9.2.3 实现分页205
9.3 创建一个公开的REST API208
9.3.1 设计API208
9.3.2 添加基本的认证209
9.3.3 实现路由209
9.3.4 启用内容协商212
9.4 错误处理214
9.4.1 处理404错误215
9.4.2 处理错误217
9.5 小结220
第10章 测试Node程序221
10.1 单元测试222
10.1.1 assert模块222
10.1.2 Nodeunit225
10.1.3 Mocha227
10.1.4 Vows232
10.1.5 should.js234
10.2 验收测试235
10.2.1 Tobi236
10.2.2 Soda237
10.3 小结239
第11章 Web程序模板240
11.1 用模板保持代码的整洁性240
11.2 嵌入JavaScript的模板244
11.2.1 创建模板245
11.2.2 用EJS过滤器处理模板数据246
11.2.3 将EJS集成到你的程序中249
11.2.4 在客户端程序中使用EJS250
11.3 使用Mustache模板语言与Hogan251
11.3.1 创建模板251
11.3.2 Mustache标签252
11.3.3 微调Hogan254
11.4 用Jade做模板255
11.4.1 Jade基础知识256
11.4.2 Jade模板中的逻辑258
11.4.3 组织Jade模板260
11.5 小结264
第三部分 在Node中更进一步
第12章 部署Node程序并维持正常运行时间266
12.1 安置Node程序266
12.1.1 专用的和虚拟私有服务器267
12.1.2 云主机268
12.2 部署的基础知识269
12.2.1 从Git存储库部署270
12.2.2 让Node保持运行270
12.3 让正常运行时间和性能达到最优271
12.3.1 用Upstart维护正常运行时间272
12.3.2 集群API:利用多核的优势273
12.3.3 静态文件及代理275
12.4 小结277
第13章 超越Web服务器278
13.1 Socket.IO278
13.1.1 创建一个最小的Socket.IO程序279
13.1.2 用Socket.IO触发页面和CSS的重新加载281
13.1.3 Socket.IO的其他用法283
13.2 深入TCP/IP网络284
13.2.1 处理缓冲区和二进制数据284
13.2.2 创建TCP服务器286
13.2.3 创建TCP客户端289
13.3 跟操作系统交互的工具290
13.3.1 单例的全局process对象291
13.3.2 使用文件系统模块293
13.3.3 繁衍外部进程296
13.4 开发命令行工具301
13.4.1 解析命令行参数301
13.4.2 处理stdin和stdout302
13.4.3 添加彩色的输出304
13.5 小结306
第14章 Node生态系统307
14.1 给Node开发人员的在线资源308
14.1.1 Node和模块的参考资料308
14.1.2 Google群组309
14.1.3 IRC309
14.1.4 GitHub问题列表310
14.2 GitHub310
14.2.1 GitHub入门311
14.2.2 添加一个项目到GitHub中312
14.2.3 用GitHub协作314
14.3 为npm库做贡献316
14.3.1 准备包317
14.3.2 编写包规范317
14.3.3 测试和发布包318
14.4 小结320
附录A 安装Node和社区附加组件321
附录B 调试Node329
附录C Express的扩展及配置336
从日常生活中孕育出独到的设计风格,日本知名服装品牌minaperhonen设计总监皆川明,一直努力制作着无法以“流行”来概括形容的特
本体建模与语义Web知识发现 本书特色 本书是作者多年来科研工作的梳理和升华,内容包括: xml文档管理和分类技术、知识资源描述语言和发布技术、本体建模和知识推...
《名院名医孕产育儿全程指导方案:40周幸福怀孕》内容简介:在40周的孕期生活中,孕妈妈的身体会发生怎样的变化?胎宝宝会按照怎样
Afreshapproachtosucceedingwithinnovation,groundedininsightsaboutrapidlychangingc...
《使用GitOps实现Kubernetes的持续部署:模式、流程及工具》内容简介:本书提供了通过GitOps使用Kubernetes的实用教程,内容涵盖Gi
《梁小民的极简经济课》内容简介:·世界公认经济学入门教材《经济学原理》(曼昆版)译者、知名经济学家、“经济学界流行歌手”梁
《精益企业之现场管理实战(图解版)》内容简介:随着工业4.0时代的到来,以及“中国制造2025”行动计划的不断推进,许多企业开始更
第一本大数据供应链落地之道的权威著作,全球顶级供应链管理专家娜达·桑德斯博士聚焦传统供应链模式向大数据转型,助力工业4.0时
《用户界面设计:有效的人机交互策略(第5版)(英文版)》为了适应因特网和各种移动设备迅猛发展的形势,在第四版的基础上始终以基于
《学术论文写作与发表指南》内容简介:本书内容涵盖论文选题、论文写作、投稿技巧、期刊审稿等,适用于人文社会科学高校教师、硕博
本书是《俄罗斯航空发动机制造史》丛书的下册,涵盖了以M.B.伏龙芝命名的第24号工厂——库兹涅佐夫开放式股份公司的创立和发展历
《安得堂咏草》内容简介:《安得堂咏草》为施小炜诗集,共收录其所创作的旧体诗词一百三十八首,分为悔其集、面壁斋集篇、暗疏乡集
《时尚秀场:时装画手绘技法攻略》内容简介:绘制时装效果图是时装设计过程中的一个重要环节,掌握它是从事时装设计应具备的专业素
电波传播的特性是研究移动通信系统首先要遇到问题,称动传播环境的特性不仅是所有移动通信理论研究的基础,也更直接关系到工程设
《原来宋词可以这样读》内容简介:所谓词者,句有长短,然情意绵绵,翻开来,爱情、亲情、思乡情,众情毕备;王公、文人、妓女,世
现代通信原理分上、下两册,本书是上册,主要介绍通信的基本原理、分析方法及信号传输系统。本书共7章,内容包括绪论、预备基础知
本书是一本专门介绍IMS的著作,讲述了为什么需要IMS及其发展的历史,并详细介绍了IMS的控制平面、媒体流平面,以及基于IMS的业务
嘉格伦(GlennR.Jones)先生是杰士知识公司和杰士国际大学的创始人和首席执行官。杰士知识公司和杰土国际大学的下属机构自1961年
《反本能:如何对抗你的习以为常》内容简介:为什么改变很难发生?为什么我们经常重蹈覆辙?到底是什么阻碍了我们走向卓越?答案是
《一本书读懂互联网思维》内容简介:每个人都看得懂的互联网思维入门书。本书从互联网思维的定义到互联网思维应用的具体案例表现。