第1章 Node异步编程范式 1
1.1 同步与异步的比较 2
1.2 Node异步的实现 7
1.2.1 HTTP请求——完全异步的例子 8
1.2.2 本地磁盘I/O——多线程模拟 17
1.3 事件驱动 18
参考资料 19
第2章 搭建自己的开发环境 21
2.1 Node的编译与安装 22
2.2 开发与调试 23
2.3 单元测试 29
2.3.1 Mocha测试框架 29
2.3.2 TDD风格 32
2.3.3 BDD风格 34
2.3.4 生成不同形式的测试报告 35
2.3.5 代码覆盖率工具Istanbul 36
参考资料 40
第3章 使用Docker部署Node服务 43
3.1 Docker基础 44
3.2 在Docker中运行Node 45
3.3 导出配置好的容器 47
参考资料 48
第4章 Node模块 49
4.1 程序入口 50
4.2 VM模块 50
4.3 模块加载与缓存 52
4.4 模块分类 54
4.5 正确导出模块 55
4.6 小心使用全局变量 56
第5章 V8引擎 57
5.1 Java Script代码的编译与优化 58
5.1.1 即时编译 58
5.1.2 隐藏类 59
5.1.3 内联缓存 60
5.1.4 优化回退 61
5.1.5 写出更具亲和性的代码 62
5.1.6 借助TypeScript 63
5.2 垃圾回收与内存控制 65
5.2.1 V8的垃圾回收算法 65
5.2.2 使用Buffer 67
5.2.3 避免内存泄漏 70
参考资料 77
第6章 Promise对象 79
6.1 Promise的含义 80
6.2 基本用法 80
6.3 then的链式写法 82
6.4 bluebird库 85
参考资料 86
第7章 用ES6 Generator解决回调金字塔 87
7.1 Node异步实现流程 88
7.2 用Generator实现异步调用与多并发 89
7.3 严格模式下运行 99
7.4 理解执行过程 100
7.5 本章结语 106
第8章 LoopBack开源框架 107
8.1 安装与运行 108
8.2 路由与权限控制 113
8.3 添加新模型 121
8.4 初始化数据库 131
8.5 钩子机制 134
8.6 中间件 137
8.7 模型关系 139
8.8 使用cluster模式运行服务 141
参考资料 144
第9章 编写C++扩展 145
9.1 使用C++编写扩展模块 146
9.1.1 导出对象 146
9.1.2 导出函数 149
9.1.3 导出构造函数 151
9.2 线程模型与CPU密集型任务 164
9.3 线程对象 164
9.4 本章结语 170
参考资料 170
附录 171
附录A JavaScript严格模式 172
附录B JavaScript编码规范 182
参考资料 195