内容简介
服务器端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.4DIRT程序6
- 1.5默认DIRT8
- 1.5.1简单的异步程序9
- 1.5.2Hello 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.1Node功能的组织及重用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.1HTTP服务器的基础知识64
- 4.1.1Node如何向开发者呈现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.1MySQL91
- 5.2.2PostgreSQL99
- 5.3NoSQL数据库100
- 5.3.1Redis101
- 5.3.2MongoDB105
- 5.3.3Mongoose107
- 5.4小结109
- 第6章Connect110
- 6.1搭建一个Connect程序111
- 6.2Connect的工作机制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.1Connect的默认错误处理器124
- 6.6.2自行处理程序错误124
- 6.6.3使用多个错误处理中间件组件125
- 6.7小结129
- 第7章Connect自带的中间件130
- 7.1解析cookie、请求主体和查询字符串的中间件131
- 7.1.1cookieParser():解析HTTP cookie131
- 7.1.2bodyParser():解析请求主体134
- 7.1.3limit():请求主体的限制135
- 7.1.4query():查询字符串解析137
- 7.2实现Web程序核心功能的中间件138
- 7.2.1logger():记录请求138
- 7.2.2favicon():提供favicon140
- 7.2.3methodOverride():伪造HTTP方法141
- 7.2.4vhost():虚拟主机143
- 7.2.5session():会话管理144
- 7.3处理Web程序安全的中间件148
- 7.3.1basicAuth():HTTP基本认证148
- 7.3.2csrf():跨站请求伪造防护150
- 7.3.3errorHandler():开发错误处理150
- 7.4提供静态文件服务的中间件152
- 7.4.1static():静态文件服务152
- 7.4.2compress():压缩静态文件154
- 7.4.3directory():目录列表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.1assert模块222
- 10.1.2Nodeunit225
- 10.1.3Mocha227
- 10.1.4Vows232
- 10.1.5should.js234
- 10.2验收测试235
- 10.2.1Tobi236
- 10.2.2Soda237
- 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.2Mustache标签252
- 11.3.3微调Hogan254
- 11.4用Jade做模板255
- 11.4.1Jade基础知识256
- 11.4.2Jade模板中的逻辑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.1Socket.IO278
- 13.1.1创建一个最小的Socket.IO程序279
- 13.1.2用Socket.IO触发页面和CSS的重新加载281
- 13.1.3Socket.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.1Node和模块的参考资料308
- 14.1.2Google群组309
- 14.1.3IRC309
- 14.1.4GitHub问题列表310
- 14.2GitHub310
- 14.2.1GitHub入门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
- 附录CExpress的扩展及配置336
这本书还没出版的时候,我已经通读过了,是试读版的。对于你所说的这些东西,我理解为都是末枝末节。这本书的重点不是教你语法,学JS语法可以看《权威指南》,学nodeAPI可以看官方文档,学express也可以去看文档,网上例子还很多。这本书最大的价值就在于它介绍了NODE WEB APPLICATION 的生态体系。
它提出了一个大概的思路,给你一个方向,你可以顺着这个方向去学习去深化。
众所周知的事情,像这种新鲜事物,要学习它,最重要的就是有一个明确的方向。
这才是其价值所在。
实在是有深入浅出的感觉。虽然前面几章节把node.js的主要原理讲完就差不多了,但后面关于connect, express的还不错。