基本信息
名称: 了不起的Node.js:将JavaScript进行到底(英文)
作者信息: 作者: Guillermo Rauch [ 英文 pdf ]
简单介绍
Node.js是一个由JavaScript书写而成的强大的web开发框架,它让开发强壮的、伸缩性良好的服务端web应用变得更加简单,容易。本书向你展示了什么是Node以及如何让你在项目中使用它。本书包含大量实际应用中的示例程序,证明了为什么Node.js会快速成为web开发首选工具的原因,通过本书,你能够快速熟悉和掌握达到如下目标所需的Node知识和技能:
了解Node基于事件轮询的架构、无阻塞IO以及事件驱动的编程方式
精通Node.js的API
轻松实现开发实时应用相关的技术,如SOCKET.IO和HTML5 WEBSOCKETS
编写能够支持跨多台服务器的高并发应用
通过Node来支持多种数据库以及数据存储工具
编写在单台服务器情况下能够处理万级并发量的程序
能够在一个包含更多Node知识和注解示例(含源代码)的网站上和其他开发者进行实时地沟通交流
本书包含大量全彩插图和实用的源代码,绝对是一本革命性web开发工具——Node的实用指南。
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
| PART Ⅰ 从安装与概念开始 CHAPTER 1 安装……………………………………….. 3 在Windows下安装……………………………………….. 3 在OS.X下安装. ………………………………………… 4 在Linux下安装…………………………………………. 5 编译. ……………………………………………………5 确保安装成功. ………………………………………..5 Node.REPL…………………………………………. 5 执行文件…………………………………………………. 6 NPM……………………………………………………….. 6 安装模块…………………………………………………..7 自定义模块. ……………………………………………….8 安装二进制工具包. …………………………………………..9 浏览NPM仓库. ……………………………………………….9 小结……………………………………………………….. 10 CHAPTER 2 JavaScript概览…………………………………..11 介绍…………………………………………………. 11 JavaScript基础…………………………………………….. 12 类型. ………………………………………………… 12 类型的困惑. ……………………………………….. 12 函数. …………………………………………………. 13 THIS、FUNCTION #CALL以及FUNCTION#APPLY……………….. 14 函数的参数数量. ……………………… 14 闭包. ……………………………………………….. 14 类. …………………………………………………….. 15 继承. …………………………………………….. 16 TRY.{}.CATCH.{}……………………………….. 17 v8中的JavaScript…………………………. 17 OBJECT#KEYS………………………………………………. 18 ARRAY#ISARRAY………………………………………… 18 数组方法…………………………………………. 18 字符串方法.. ……………………………………………. 19 JSON……………………………………………………. 19 FUNCTION#BIND………………………………………………. 19 FUNCTION#NAME………………………………………. 19 PROTO(继承). …………………………………….. 20 存取器………………………………………………. 20 小结…………………………………………………….. 21 CHAPTER 3 阻塞与非阻塞IO…………………………… 23 能力越强,责任就越大…………………………………………. 23 阻塞. ……………………………………………………. 25 单线程的世界. ……………………………………….. 27 错误处理…………………………………………….. 29 堆栈追踪………………………………………… 30 小结……………………………………………………… 32 CHAPTER 4 Node中的JavaScript ………………………………. 33 global对象………………………………………………. 33 实用的全局对象. ………………………………………… 34 模块系统…………………………………………………… 34 绝对和相对模块. ………………………………………….. 35 暴露API. ……………………………………………………… 37 事件………………………………………………… 38 buffer……………………………………………………… 40 小结…………………………………………………………. 41 PART Ⅱ Node重要的API CHAPTER 5 命令行工具(CLI)以及FS API:首个Node应用………………. 45 需求…………………………………………. 45 编写首个Node程序……………………………….. 46 创建模块………………………………………. 46 同步还是异步. ………………………. 47 理解什么是流(stream)…………………………….. 49 输入和输出. …………………………………………………. 50 重构. …………………………………. 53 用fs进行文件操作. ………………………… 55 对CLI一探究竟. …………………………………………. 56 argv……………………………………………. 57 工作目录……………………………….. 57 环境变量……………………………………. 58 退出. ……………………………………….. 58 信号. …………………………………………………. 58 ANSI转义码…………………………………….. 59 对fs一探究竟. …………………………………………. 59 Stream………………………………………………… 59 监视. …………………………………… 60 小结……………………………………………… 61 CHAPTER 6 TCP ……………………………………. 63 TCP有哪些特性. …………………………………………….. 64 面向连接的通信和保证顺序的传递. ……………………… 64 面向字节…………………………………. 65 可靠性……………………………………….. 65 流控制………………………………….. 65 拥堵控制………………………………………. 65 Telnet………………………………………………………. 65 基于TCP的聊天程序……………………………………….. 68 创建模块………………………………. 68 理解NET.SERVER.API…………………… 68 接收连接………………………………… 70 data事件. ……………………………………………… 71 状态以及记录连接情况. …………………………………. 73 圆满完成此程序. …………………………………….. 75 一个IRC客户端程序…………………………………… 77 创建模块………………………………………. 77 理解NET#STREAM.API.. ………………………………….. 78 实现部分IRC协议. ………………………………………….. 78 测试实际的IRC服务器. ……………………………. 78 小结……………………………………………………….. 79 CHAPTER 7 HTTP ………………………………………….. 81 HTTP结构………………………………………………… 81 头信息. ……………………………………………… 82 连接…………………………………………………….. 87 一个简单的Web服务器………………………………………….. 88 创建模块………………………………… 88 输出表单……………………………………………. 88 method和URL. ……………………………………. 90 数据. ………………………………………. 92 整合. ………………………………………… 94 让程序更健壮. ………………………………. 95 一个Twitter.Web客户端………………………………….. 96 创建模块………………………………… 96 发送一个简单的HTTP请求. …………………. 97 发送数据………………………………….. 98 获取推文…………………………………………. 99 superagent来拯救………………………………………. 102 使用up重启HTTP服务器………………………………. 103 小结……………………………………… 104 PART Ⅲ Web开发 CHAPTER 8 Connect ………………………… 107 使用HTTP构建一个简单的网站. ………………………………… 108 通过Connect实现一个简单的网站……………………………….. 111 中间件. …………………………………………. 112 书写可重用的中间件. …………………….114 static中间件. ………………………………………119 query中间件. …………………………………120 logger中间件…………………………………………… 120 body.parser中间件. ……………………………122 cookie…………………………………………………125 会话(session). ………………………………..126 Redis.session…………………………………………..131 methodOverride中间件. ………………………132 basicAuth中间件. ………………………………..132 小结…………………………………………………….. 134 CHAPTER 9 Express…………………………………………..135 一个小型Express应用. ……………………………….. 135 创建模块……………………………………….136 HTML…………………………………………………..136 SETUP………………………………………………….137 定义路由……………………………………..137 查询. ………………………………………….140 运行. ……………………………………………..141 设置………………………………………………… 142 模板引擎……………………………………………… 143 错误处理……………………………………………….. 144 快捷方法…………………………………………. 144 路由………………………………………… 146 中间件. ……………………………………………. 148 代码组织策略. ………………………………….. 149 小结…………………………………………. 151 CHAPTER 10 WebSocket ……………… 153 Ajax………………………………………. 153 HTML5.WebSocket……………………………………….. 156 一个ECHO示例. ………………………………………………… 157 初始化项目. ………………………………………157 建立服务器. …………………………………………..158 建立客户端. ………………………………..159 运行示例程序. ……………………………..160 鼠标光标…………………………………… 161 初始化示例程序. …………………………………..161 建立服务器. ……………………………………..161 建立客户端. ……………………………….164 运行示例程序. …………………………………..166 面临一个挑战. ……………………………………… 166 关闭并不意味着断开连接. ………………………..166 JSON…………………………………….167 重连. ……………………………………………167 广播. …………………………………………167 WebSocket属于HTML5:早期浏览器不支持. ……………………..167 解决方案………………………………………….167 小结……………………………………………………. 167 CHAPTER 11 Socket.IO………………………………………169 传输…………………………………………. 170 断开.VS.关闭. ……………………………………..170 事件. ……………………………………170 命名空间……………………………………….171 聊天程序…………………………………………. 172 初始化程序. …………………………………172 构建服务器. ……………………………………172 构建客户端. …………………………………173 事件和广播. ………………………………….175 消息接收确认. ……………………………179 一个轮流做DJ的应用………………………….. 180 扩展聊天应用. …………………………………….181 集成Grooveshark.API. ………………………….182 播放歌曲………………………………………..185 小结……………………………………………. 190 PART Ⅳ 数据库 CHAPTER 12 MongoDB…………………..193 安装………………………………………….. 195 使用MongoDB:一个用户认证的例子. ……………………………. 195 构建应用程序. …………………………………195 创建Express.App.. …………………………196 连接MongoDB. ……………………………..200 创建文档………………………………..201 查找文档…………………………….203 身份验证中间件. …………………………….204 校验.. ……………………………………….205 原子性……………………………………….206 安全模式…………………………..206 Mongoose介绍………………………………….. 206 定义模型………………………………….207 定义嵌套的键. ……………………..208 定义嵌套文档. ……………………………….209 构建索引……………………………………209 中间件………………………………………….209 探测模型状态.. ………………………….210 查询. ……………………………………….210 扩展查询………………………………….210 排序.. ………………………………….211 选择. ………………………………………………211 限制.. ……………………………….211 跳过. …………………………………..211 自动产生键. ………………………….211 转换. ……………………………………….212 一个使用Mongoose的例子…………………………………. 212 构建应用……………………………212 重构. …………………………213 建立模型……………………………213 小结…………………………………… 215 CHAPTER 13 MySQL…………………………………….217 node-mysql…………………………………. 217 初始化项目. …………………………………217 Express应用. ……………………………..218 连接MySQL. ……………………………….219 初始化脚本. …………………………………220 创建数据…………………………………………224 获取数据……………………………….228 sequelize…………………………………….. 229 初始化sequelize. …………………………..230 初始化Express应用. ………………………………230 连接sequelize. …………………….233 定义模型和同步. ……………………… 234 创建数据……………………………236 获取数据………………………………..238 删除数据…………………………239 完整地完成应用. ………………………….240 小结…………………………………… 241 CHAPTER 14 Redis………………………………….. 243 安装Redis……………………………………….. 244 Redis查询语言. ……………………………………….. 245 数据类型……………………………………… 245 字符串. ……………………………..246 哈希. ………………………………………….246 列表. ………………………………….. 248 数据集. ……………………………….249 有序数据集. …………………………………..249 Redis和Node. …………………………………… 249 使用node-redis实现一个社交图谱. ………….250 小结………………………………….. 259 PART Ⅴ 测试 CHAPTER 15 代码共享 …………………………… 263 什么样的代码可以共享……………………………………. 263 书写兼容的JavaScript代码………………………….. 264 导出模块………………………………………………264 模拟实现ECMA.API. …………………………..265 模拟实现Node.API. ………………………………..267 模拟实现浏览器端API. ………………………….267 跨浏览器的继承实现. ………………………268 集成到一起:browserbuild. …………………. 268 基础案例………………………………269 小结………………………………….. 271 CHAPTER 16 测试…………………………….. 273 简单测试…………………………………. 273 测试目标……………………………………… 274 测试策略…………………………….. 274 测试程序……………………………………………275 expect.js…………………………………………. 276 API一览. …………………………………..276 Mocha…………………………………………. 278 测试异步代码. …………………………….279 BDD风格. …………………………..281 TDD风格. …………………………………281 export风格. ……………………………282 在浏览器端使用Mocha. ……………………………..282 小结……………………………… 284 索引 ……………………………….. 285
|
亚马逊链接