服务器端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
《百年求索:演进与跃迁》内容简介:书稿内容来自2019年春节在北京中法大学旧址举办的中华优秀传统文化进入山东地方必修课程研讨对
《千年贸易战争史:贸易冲突与大国兴衰》内容简介:贸易与冲突是构成世界历史的主要内容之一,经贸利益是世界历史上很多重大战争的
《请孔子当CEO》内容简介:孔子儒家思想的核心是一个“仁”字。在这样一个疯狂追求增长的时代,学习儒家思想使我们得以反思商业的本
《互联网口述历史第1辑·英雄创世记(全8册)》内容简介:“互联网口述历史”项目发起于2007年,专注于全球互联网领域关键人物口述
《冯唐成事心法》内容简介:他是热爱文艺的管理专家,是精通麦肯锡与曾国藩成事学的商业领袖,是医学博士出身的投资人。10年麦肯锡
《贫困的复杂图景与反贫困的多元路径》内容简介:本书在实地田野调研的基础上,通过宏观、微观考察民族地区农村贫困的复杂图景及致
Finally,wearelearningthatsimplicityequalssanity.Wererebellingagainsttechnologyth...
AclearandfocusedguidetocreatingusefuluserexperiencedocumentationAswebsitesandapp...
《移动营销新方法论》内容简介:《移动营销新方法论》系统地讲解了企业在移动媒体上应该如何布局、定位,并且结合移动营销的潮流讲
全书共分8章,分别介绍了基于规则的知识系统,人工神经网络,适应性智能系统,农业专家系统,知识管理与知识服务,智能机器人,人
《全国通信专业技术人员职业水平考试参考用书:通信专业实务(初级)》按照人事部、信息产业部全国通信专业技术人员职业水平考试大纲
《绘画高手这样画·素描静物》内容简介:书中分为3个部分,第1章节为基础知识章节;第二章节为物体质感的绘制章节;第三章节绘画高
《C++程序设计语言》介绍了标准C++以及由C++所支持的关键性编程技术和设计技术。标准C++较以前的版本功能更强大,其中许多新的语
《大型IT系统性能测试入门经典》内容简介:《大型IT系统性能测试入门经典》是一本来自性能测试实战领域的专家作品,主要用来指导性
《做个风格插画家》共有三个单元,第一单元采访5位国际顶尖时尚的插画家,在剖析一位成功插画家的过程经历之余,也可以看见他们如
撬开你脑子里的那些困惑,让你重新认识游戏设计的真谛,人人都可以成为成功的游戏设计者!从更多的角度去审视你的游戏,从不完美的
《英国陶艺设计基础教程》是一本陶艺设计的完全指导手册,融合了理论、实践、技术三方面的重点,你可以通过《英国陶艺设计基础教
《西方哲学精神》内容简介:作者在分析、评价从古代到近代西方哲学史上著名的人物和流派的理论、观点的基础上,由中西比较的视点出
本书是原创Java技术图书领域继《深入理解Java虚拟机》后的又一实力之作,也是全球首本基于最新OSGiR5.0规范的著作。理论方面,既
《简约之美:软件设计之道》将软件设计作为一门严谨的科学,阐述了开发出优雅简洁的代码所应该遵循的基本原则。作者从为什么以前软