服务器端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
《原来历史可以这样好玩2》内容简介:超涨知识!爆笑趣味学历史!超生动、超立体、超有趣再现历史场景! 百万美食播主小缸和阿灿首
《尘埃博物馆》内容简介:本书是诗人、作家刘立杆的全新诗集。诗人秉持他一贯的沉静风格,带着冷峻的、观察者式的眼光进入层叠的二
《中国法治发展:成效与展望(2002~2016)》内容简介:本书是对中国历年法治发展状况的总结,全面记录了15年来中国的法治发展道路
《网络与通信技术百科全书》是一本关于网络技术和通信技术的百科全书,内容涉及了到目前为止网络与通信方面的各种技术和应用。《
《本草纲目使用手册》内容简介:《本草纲目使用手册》试图通过对《本草纲目》一书的内容进行重新梳理和诠释解读,就是希望能够为广
《黑客攻防与网络安全从新手到高手(实战篇)》内容简介:本书在剖析用户进行黑客防御中迫切需要或想要用到的技术时,力求对其进行
《OpenGL编程指南(原书第7版)》对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉。《OpenGL编程
《社会心理作业治疗》内容简介:本书是《作业治疗系列丛书》中的一本。本套丛书是国内首套系统论述作业治疗的丛书,将对规范和提升
本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了Windows操作系统的基本原理、NT
本书由国际著名设计大师EllenLupton出品,是一本以产品案例的展示和分析为主的图文并茂的工业设计类图书。全书篇幅虽然不长,但却
《养活教育》内容简介:长江平民教育基金会主席聂圣哲先生创立了“养活教育思想”。2到3岁是孩子开始养活教育的好时机。带领孩子做
科学计算自由软件SCILAB基础教程 内容简介 本书是关于科学计算自由软件SCILAB的入门教材。本书前三章分别介绍了SCILAB环境,SCILAB数据类型、运...
《新媒体艺术之互动影像装置艺术》内容简介:互动影像装置艺术是国际上新兴起的一门艺术形式,它属于包含范围更广的新媒体艺术。
《人工智能的未来》内容简介:库兹韦尔认为,2045年,人工智能将超越人类智能,储存在云端的“仿生大脑新皮质”与人类的大脑新皮质
《使用GitOps实现Kubernetes的持续部署:模式、流程及工具》内容简介:本书提供了通过GitOps使用Kubernetes的实用教程,内容涵盖Gi
BookDescriptionTextpatternisapowerful,PHP-basedcontentmanagementsystemthatallows...
本书是一本注重实践的教程,作者为我们揭示了47个鲜为人知的CSS技巧,主要内容包括背景与边框、形状、视觉效果、字体排印、用户体
《2014高技术发展报告》是中国科学院面向公众、面向决策人员的系列年度报告——《高技术发展报告》的第十五本。《2014高技术发展
本书通过分析ReactOS的源代码介绍了Windows内核各个方面的结构、功能、算法与具体实现。全书从“内存管理”、“进程”、“进程间
具时滞的神经网络模型的分支问题研究 本书特色 本书是作者参与完成国家高技术研究发展计划(863计划)课题、国家自然科学基金项目、吉林省教育厅科学研究规划项目研究...