服务器端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
《家庭按摩取穴定位速查一本就够》内容简介:经络和穴位的神奇之处在于,它们遍布全身,每条经络、每个穴位都有独特的养生功效,我
《审计学(第三版)》内容简介:《审计学(第三版)》教材以最新执行的审计准则为根本,以审计实务为主,突出理论与实务相结合,重
《蔡澜旅行食记(1)》内容简介:本书收录了蔡澜先生以寻味为目的的旅行游记和杂感随笔。看世界,从莫斯科到布宜诺斯艾利斯,阅尽欧
《城和市的语言:城市规划图解辞典》以文字和图片中的每个单词、名称或概念的字母为顺序进行编撰,同时以简洁的传记体介绍城市场所
本书是第二次世界大战末期美国科学研究发展局主任V•布什提交给总统的科学报告,回答了罗斯福总统提出的有关美国战后科学发展的四
Recentdecadeshaveseenadramaticshiftawayfromsocialformsofgamblingplayedaroundroul...
本书提供了创新的编译器构造方法,通过大量韵示例和练习,描述如何从头至尾设计一个哥用的编译器。书中均衡覆盖了编译器设计中的
《PPT演绎:故事化设计》第1版以其出色的销售成绩位列亚马逊网站畅销书榜,并且凭借其影响力成为《纽约时报》、《华尔街日报》和《
你有可能随时都能找到你想要找的,但这也意味着你随时会被想找你的人找到—用起来很爽却又有一点危险,位置服务就是如此。而绝大多
《经济转型背景下的财富管理与资产配置》内容简介:当前,国际国内经济金融形势复杂多变,投资单一市场、单一资产的不确定性不断加
《大学的理想》内容简介:《大学的理想》一书,精选出作者王冀生自1996年以来,公开发表的众多有关学术论文、报告、演讲和若干本有
学习、构思、创造、让色彩呈现生命,传达一种体验,这便这部书的一个概况。这本书恰恰处在两个世纪历史的一个转折阶段。在这个阶
“软件估算”一直以来笼罩着神秘的光环,就像深遂太空中的一艘宇宙飞船,被视为高深莫测的魔法。作者在这本业界翘首盼望的书中,
PKPM结构软件工程应用及实例剖析 内容简介 本书取自作者多年来在全国各地举办pkpm结构软件应用讲座的演讲幻灯片,内容涵盖*新版pkpm结构软件从建立模型、计...
多智能体系统及应用 本书特色多智能体和多智能体技术是人工智能领域活跃的研究分支。本书在2014年度“中国智能体及多智能体系统”研讨会的基础上结集而成,全书共分1...
《中国民法典释评·物权编(上下卷)》内容简介:制定民法典是我国立法领域的一件大事,也是建设中国特色社会主义法治国家的一项重
《企业级Kubernetes应用》内容简介:Kubernetes从2015年7月21日发布1.0版本,经过三年多的时间不断发展至今,其作为开源的容器应用
《丁玲散文》内容简介:本书系我社中华散文珍藏本系列丛书之一。本集是丁玲之子蒋祖林先生的选编本,也是市面上唯一的丁玲散文选本
本书全面介绍了家具设计的基础知识、设计原理以及设计方法,包括对功能、材料、制作过程和持续性方面等进行了介绍。书中所选案例
《C++并发编程实战(第2版)》内容简介:这是一本介绍C++并发和多线程编程的深度指南。本书从C++标准程序库的各种工具讲起,介绍线