小苏子
小苏子PDF在线图书

Node.js实战 内容简介

Node.js实战 内容简介

Node.js实战 目录

Node.js实战 精彩文摘

《Node.js实战》是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程。书中还介绍了HTTP API的应用技巧等。 《Node.js实战》适合Web开发人员阅读。第一部分 Node基础第1章 欢迎进入Node.js世界1.1 构建于JavaScript之上1.2 异步和事件触发:浏览器1.3 异步和事件触发:服务器1.4 DIRT程序1.5 默认DIRT1.5.1 简单的异步程序1.5.2 Hello World HTTP服务器1.5.3 流数据1.6 小结第2章 构建有多个房间的聊天室程序2.1 程序概览2.2 程序需求及初始设置2.2.1 提供HTTP和WebSocket服务2.2.2 创建程序的文件结构2.2.3 指明依赖项2.2.4 安装依赖项2.3 提供HTML、CSS和客户端JavaScript的服务2.3.1 创建静态文件服务器2.3.2 添加HTML和CSS文件2.4 用Socket.IO处理与聊天相关的消息2.4.1 设置Socket.IO服务器2.4.2 处理程序场景及事件2.5 在程序的用户界面上使用客户端JavaScript2.5.1 将消息和昵称/房间变更请求传给服务器2.5.2 在用户界面中显示消息及可用房间2.6 小结第3章 Node编程基础3.1 Node功能的组织及重用3.1.1 创建模块3.1.2 用module.exports微调模块的创建3.1.3 用node_modules重用模块3.1.4 注意事项3.2 异步编程技术3.2.1 用回调处理一次性事件3.2.2 用事件发射器处理重复性事件3.2.3 异步开发的难题3.3 异步逻辑的顺序化3.3.1 什么时候使用串行流程控制3.3.2 实现串行化流程控制3.3.3 实现并行化流程控制3.3.4 利用社区里的工具3.4 小结第二部分 用Node开发Web程序第4章 构建Node Web程序4.1 HTTP服务器的基础知识4.1.1 Node如何向开发者呈现HTTP请求4.1.2 一个用“Hello World”做响应的HTTP服务器4.1.3 读取请求头及设定响应头4.1.4 设定HTTP响应的状态码4.2 构建RESTful Web服务4.2.1 用POST请求创建资源4.2.2 用GET请求获取资源4.2.3 用DELETE请求移除资源4.3 提供静态文件服务4.3.1 创建一个静态文件服务器4.3.2 处理服务器错误4.3.3 用fs.stat()实现先发制人的错误处理4.4 从表单中接受用户输入4.4.1 处理提交的表单域4.4.2 用formidable处理上传的文件4.4.3 计算上传进度4.5 用HTTPS加强程序的安全性4.6 小结第5章 存储Node程序中的数据5.1 无服务器的数据存储5.1.1 内存存储5.1.2 基于文件的存储5.2 关系型数据库管理系统5.2.1 MySQL5.2.2 PostgreSQL5.3 NoSQL数据库5.3.1 Redis5.3.2 MongoDB5.3.3 Mongoose5.4 小结第6章 Connect6.1 搭建一个Connect程序6.2 Connect的工作机制6.2.1 做日志的中间件6.2.2 响应“hello world”的中间件6.3 为什么中间件的顺序很重要6.3.1 中间件什么时候不调用next()6.3.2 用中间件的顺序执行认证6.4 挂载中间件和服务器6.4.1 认证中间件6.4.2 显示管理面板的中间件6.5 创建可配置中间件6.5.1 创建可配置的logger中间件组件6.5.2 构建路由中间件组件6.5.3 构建一个重写URL的中间件组件6.6 使用错误处理中间件6.6.1 Connect的默认错误处理器6.6.2 自行处理程序错误6.6.3 使用多个错误处理中间件组件6.7 小结第7章 Connect自带的中间件7.1 解析cookie、请求主体和查询字符串的中间件7.1.1 cookieParser():解析HTTP cookie7.1.2 bodyParser():解析请求主体7.1.3 limit():请求主体的限制7.1.4 query():查询字符串解析7.2 实现Web程序核心功能的中间件7.2.1 logger():记录请求7.2.2 favicon():提供favicon7.2.3 methodOverride():伪造HTTP方法7.2.4 vhost():虚拟主机7.2.5 session():会话管理7.3 处理Web程序安全的中间件7.3.1 basicAuth():HTTP基本认证7.3.2 csrf():跨站请求伪造防护7.3.3 errorHandler():开发错误处理7.4 提供静态文件服务的中间件7.4.1 static():静态文件服务7.4.2 compress():压缩静态文件7.4.3 directory():目录列表7.5 小结第8章 Express8.1 生成程序骨架8.1.1 安装Express的可执行程序8.1.2 生成程序8.1.3 探索程序8.2 配置Express和你的程序8.3 渲染视图8.3.1 视图系统配置8.3.2 视图查找8.3.3 把数据输出到视图中8.4 处理表单和文件上传8.4.1 实现照片模型8.4.2 创建照片上传表单8.4.3 显示上传照片列表8.5 创建资源下载8.5.1 创建照片下载路由8.5.2 实现照片下载路由8.6 小结第9章 Express进阶9.1 认证用户9.1.1 保存和加载用户9.1.2 注册新用户9.1.3 已注册用户登录9.1.4 用户加载中间件9.2 先进的路由技术9.2.1 校验用户内容提交9.2.2 特定路由中间件9.2.3 实现分页9.3 创建一个公开的REST API9.3.1 设计API9.3.2 添加基本的认证9.3.3 实现路由9.3.4 启用内容协商9.4 错误处理9.4.1 处理404错误9.4.2 处理错误9.5 小结第10章 测试Node程序10.1 单元测试10.1.1 assert模块10.1.2 Nodeunit10.1.3 Mocha10.1.4 Vows10.1.5 should.js10.2 验收测试10.2.1 Tobi10.2.2 Soda10.3 小结第11章 Web程序模板11.1 用模板保持代码的整洁性11.2 嵌入JavaScript的模板11.2.1 创建模板11.2.2 用EJS过滤器处理模板数据11.2.3 将EJS集成到你的程序中11.2.4 在客户端程序中使用EJS11.3 使用Mustache模板语言与Hogan11.3.1 创建模板11.3.2 Mustache标签11.3.3 微调Hogan11.4 用Jade做模板11.4.1 Jade基础知识11.4.2 Jade模板中的逻辑11.4.3 组织Jade模板11.5 小结第三部分 在Node中更进一步第12章 部署Node程序并维持正常运行时间12.1 安置Node程序12.1.1 专用的和虚拟私有服务器12.1.2 云主机12.2 部署的基础知识12.2.1 从Git存储库部署12.2.2 让Node保持运行12.3 让正常运行时间和性能达到最优12.3.1 用Upstart维护正常运行时间12.3.2 集群API:利用多核的优势12.3.3 静态文件及代理12.4 小结第13章 超越Web服务器13.1 Socket.IO13.1.1 创建一个最小的Socket.IO程序13.1.2 用Socket.IO触发页面和CSS的重新加载13.1.3 Socket.IO的其他用法13.2 深入TCP/IP网络13.2.1 处理缓冲区和二进制数据13.2.2 创建TCP服务器13.2.3 创建TCP客户端13.3 跟操作系统交互的工具13.3.1 单例的全局process对象13.3.2 使用文件系统模块13.3.3 繁衍外部进程13.4 开发命令行工具13.4.1 解析命令行参数13.4.2 处理stdin和stdout13.4.3 添加彩色的输出13.5 小结第14章 Node生态系统14.1 给Node开发人员的在线资源14.1.1 Node和模块的参考资料14.1.2 Google群组14.1.3 IRC14.1.4 GitHub问题列表14.2 GitHub14.2.1 GitHub入门14.2.2 添加一个项目到GitHub中14.2.3 用GitHub协作14.3 为npm库做贡献14.3.1 准备包14.3.2 编写包规范14.3.3 测试和发布包14.4 小结附录A 安装Node和社区附加组件附录B 调试Node附录C Express的扩展及配置1.3 异步和事件触发:服务器可能大多数人都了解传统的服务端编程的I/O模型,就像1.2节那个“阻塞”的jQuery例子一样。下面是一个PHP的例子:$result = mysql_query(‘SELECT * FROM myTable’); //在数据库查询完成之前程序不会继续执行 print_r($result);这段代码做了些I/O操作,并且在所有数据回来之前,这个进程会被阻塞。对于很多程序而言,这个模型没什么问题,并且很容易理解。但有一点可能会被忽略:这个进程也有状态,或者说内存空间,并且在I/O完成之前基本上什么也不会做。根据I/O操作的延迟情况,那可能会有10ms到几分钟的时间。延迟也可能是由下列意外情况引发的:硬盘正在执行维护操作,读/写都暂停了;因为负载增加,数据库查询变得更慢了;由于某种原因,今天从sitexyz.com拉取资源非常迟缓。如果程序在I/O上阻塞了,当有更多请求过来时,服务器会怎么处理呢?在这种情景中通常会用多线程的方式。一种常见的实现是给每个连接分配一个线程,并为那些连接设置一个线程池。你可以把线程想象成一个计算工作区,处理器在这个工作区中完成指定的任务。线程通常都是处于进程之内的,并且会维护它自己的工作内存。每个线程会处理一到多个服务器连接。尽管这听起来是个很自然的委派服务器劳动力的方式(最起码对那些曾经长期采用这种方式的开发人员来说是这样的)但程序内的线程管理会非常复杂。此外,当需要大量的线程处理很多并发的服务器连接时,线程会消耗额外的操作系统资源。线程需要CPU和额外的RAM来做上下文切换。

赞(0)
未经允许不得转载:小苏子图书 » Node.js实战 内容简介