豆瓣阅读

    深入浅出Node.js

    阅读
    ¥39.99¥27.99
    图灵计算机3月春季7折促销 了解详情
    • 导言
    • 目录
    • 作品信息

    本书从不同的视角介绍了 Node 内在的特点和结构。由首章Node 介绍为索引,涉及Node 的各个方面,主要内容包含模块机制的揭示、异步I/O 实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer 的细节、Node 中的网络编程基础、Node 中的Web 开发、进程间的消息传递、Node 测试以及通过Node 构建产品需要的注意事项。最后的附录介绍了Node 的安装、调试、编码规范和NPM 仓库等事宜。

    本书适合想深入了解 Node 的人员阅读。

    朴灵

    真名田永强,文艺型码农,就职于阿里巴巴数据平台,资深工程师,Node.js布道者,写了多篇文章介绍Node.js的细节。活跃于CNode社区,是线下会议NodeParty的组织者和JSConf China(沪JS和京JS)的组织者之一。热爱开源,多个Node.js模块的作者。个人GitHub地址:http://github.com/JacksonTian。叩首问路,码梦为生。

    1. 序一
    2. 序二
    3. 前言
    4. 本书目的
    5. 阅读建议
    6. 致谢
    7. 第 1 章 Node简介
    8. 1.1 Node的诞生历程
    9. 1.2 Node的命名与起源
    10. 1.2.1 为什么是JavaScript
    11. 1.2.2 为什么叫Node
    12. 1.3 Node给JavaScript带来的意义
    13. 1.4 Node的特点
    14. 1.4.1 异步I/O
    15. 1.4.2 事件与回调函数
    16. 1.4.3 单线程
    17. 1.4.4 跨平台
    18. 1.5 Node的应用场景
    19. 1.5.1 I/O密集型
    20. 1.5.2 是否不擅长CPU密集型业务
    21. 1.5.3 与遗留系统和平共处
    22. 1.5.4 分布式应用
    23. 1.6 Node的使用者
    24. 1.7 参考资源
    25. 第 2 章 模块机制
    26. 2.1 CommonJS规范
    27. 2.1.1 CommonJS的出发点
    28. 2.1.2 CommonJS的模块规范
    29. 2.2 Node的模块实现
    30. 2.2.1 优先从缓存加载
    31. 2.2.2 路径分析和文件定位
    32. 2.2.3 模块编译
    33. 2.3 核心模块
    34. 2.3.1 JavaScript核心模块的编译过程
    35. 2.3.2 C/C++核心模块的编译过程
    36. 2.3.3 核心模块的引入流程
    37. 2.3.4 编写核心模块
    38. 2.4 C/C++扩展模块
    39. 2.4.1 前提条件
    40. 2.4.2 C/C++扩展模块的编写
    41. 2.4.3 C/C++扩展模块的编译
    42. 2.4.4 C/C++扩展模块的加载
    43. 2.5 模块调用栈
    44. 2.6 包与NPM
    45. 2.6.1 包结构
    46. 2.6.2 包描述文件与NPM
    47. 2.6.3 NPM常用功能
    48. 2.6.4 局域NPM
    49. 2.6.5 NPM潜在问题
    50. 2.7 前后端共用模块
    51. 2.7.1 模块的侧重点
    52. 2.7.2 AMD规范
    53. 2.7.3 CMD规范
    54. 2.7.4 兼容多种模块规范
    55. 2.8 总结
    56. 2.9 参考资源
    57. 第 3 章 异步I/O
    58. 3.1 为什么要异步I/O
    59. 3.1.1 用户体验
    60. 3.1.2 资源分配
    61. 3.2 异步I/O实现现状
    62. 3.2.1 异步I/O与非阻塞I/O
    63. 3.2.2 理想的非阻塞异步I/O
    64. 3.2.3 现实的异步I/O
    65. 3.3 Node的异步I/O
    66. 3.3.1 事件循环
    67. 3.3.2 观察者
    68. 3.3.3 请求对象
    69. 3.3.4 执行回调
    70. 3.3.5 小结
    71. 3.4 非I/O的异步API
    72. 3.4.1 定时器
    73. 3.4.2  process.nextTick()
    74. 3.4.3  setImmediate()
    75. 3.5 事件驱动与高性能服务器
    76. 3.6 总结
    77. 3.7 参考资源
    78. 第 4 章 异步编程
    79. 4.1 函数式编程
    80. 4.1.1 高阶函数
    81. 4.1.2 偏函数用法
    82. 4.2 异步编程的优势与难点
    83. 4.2.1 优势
    84. 4.2.2 难点
    85. 4.3 异步编程解决方案
    86. 4.3.1 事件发布/订阅模式
    87. 4.3.2 Promise/Deferred模式
    88. 4.3.3 流程控制库
    89. 4.4 异步并发控制
    90. 4.4.1 bagpipe的解决方案
    91. 4.4.2 async的解决方案
    92. 4.5 总结
    93. 4.6 参考资源
    94. 第 5 章 内存控制
    95. 5.1 V8的垃圾回收机制与内存限制
    96. 5.1.1 Node与V8
    97. 5.1.2 V8的内存限制
    98. 5.1.3 V8的对象分配
    99. 5.1.4 V8的垃圾回收机制
    100. 5.1.5 查看垃圾回收日志
    101. 5.2 高效使用内存
    102. 5.2.1 作用域
    103. 5.2.2 闭包
    104. 5.2.3 小结
    105. 5.3 内存指标
    106. 5.3.1 查看内存使用情况
    107. 5.3.2 堆外内存
    108. 5.3.3 小结
    109. 5.4 内存泄漏
    110. 5.4.1 慎将内存当做缓存
    111. 5.4.2 关注队列状态
    112. 5.5 内存泄漏排查
    113. 5.5.1 node-heapdump
    114. 5.5.2 node-memwatch
    115. 5.5.3 小结
    116. 5.6 大内存应用
    117. 5.7 总结
    118. 5.8 参考资源
    119. 第 6 章 理解Buffer
    120. 6.1 Buffer结构
    121. 6.1.1 模块结构
    122. 6.1.2 Buffer对象
    123. 6.1.3 Buffer内存分配
    124. 6.2 Buffer的转换
    125. 6.2.1 字符串转Buffer
    126. 6.2.2 Buffer转字符串
    127. 6.2.3 Buffer不支持的编码类型
    128. 6.3 Buffer的拼接
    129. 6.3.1 乱码是如何产生的
    130. 6.3.2  setEncoding() 与 string_decoder()
    131. 6.3.3 正确拼接Buffer
    132. 6.4 Buffer与性能
    133. 6.5 总结
    134. 6.6 参考资源
    135. 第 7 章 网络编程
    136. 7.1 构建TCP服务
    137. 7.1.1 TCP
    138. 7.1.2 创建TCP服务器端
    139. 7.1.3 TCP服务的事件
    140. 7.2 构建UDP服务
    141. 7.2.1 创建UDP套接字
    142. 7.2.2 创建UDP服务器端
    143. 7.2.3 创建UDP客户端
    144. 7.2.4 UDP套接字事件
    145. 7.3 构建HTTP服务
    146. 7.3.1 HTTP
    147. 7.3.2 http模块
    148. 7.3.3 HTTP客户端
    149. 7.4 构建WebSocket服务
    150. 7.4.1 WebSocket握手
    151. 7.4.2 WebSocket数据传输
    152. 7.4.3 小结
    153. 7.5 网络服务与安全
    154. 7.5.1 TLS/SSL
    155. 7.5.2 TLS服务
    156. 7.5.3 HTTPS服务
    157. 7.6 总结
    158. 7.7 参考资源
    159. 第 8 章 构建Web应用
    160. 8.1 基础功能
    161. 8.1.1 请求方法
    162. 8.1.2 路径解析
    163. 8.1.3 查询字符串
    164. 8.1.4 Cookie
    165. 8.1.5 Session
    166. 8.1.6 缓存
    167. 8.1.7 Basic认证
    168. 8.2 数据上传
    169. 8.2.1 表单数据
    170. 8.2.2 其他格式
    171. 8.2.3 附件上传
    172. 8.2.4 数据上传与安全
    173. 8.3 路由解析
    174. 8.3.1 文件路径型
    175. 8.3.2 MVC
    176. 8.3.3 RESTful
    177. 8.4 中间件
    178. 8.4.1 异常处理
    179. 8.4.2 中间件与性能
    180. 8.4.3 小结
    181. 8.5 页面渲染
    182. 8.5.1 内容响应
    183. 8.5.2 视图渲染
    184. 8.5.3 模板
    185. 8.5.4 Bigpipe
    186. 8.6 总结
    187. 8.7 参考资源
    188. 第 9 章 玩转进程
    189. 9.1 服务模型的变迁
    190. 9.1.1 石器时代:同步
    191. 9.1.2 青铜时代:复制进程
    192. 9.1.3 白银时代:多线程
    193. 9.1.4 黄金时代:事件驱动
    194. 9.2 多进程架构
    195. 9.2.1 创建子进程
    196. 9.2.2 进程间通信
    197. 9.2.3 句柄传递
    198. 9.2.4 小结
    199. 9.3 集群稳定之路
    200. 9.3.1 进程事件
    201. 9.3.2 自动重启
    202. 9.3.3 负载均衡
    203. 9.3.4 状态共享
    204. 9.4 Cluster模块
    205. 9.4.1 Cluster工作原理
    206. 9.4.2 Cluster事件
    207. 9.5 总结
    208. 9.6 参考资源
    209. 第 10 章 测试
    210. 10.1 单元测试
    211. 10.1.1 单元测试的意义
    212. 10.1.2 单元测试介绍
    213. 10.1.3 工程化与自动化
    214. 10.1.4 小结
    215. 10.2 性能测试
    216. 10.2.1 基准测试
    217. 10.2.2 压力测试
    218. 10.2.3 基准测试驱动开发
    219. 10.2.4 测试数据与业务数据的转换
    220. 10.3 总结
    221. 10.4 参考资源
    222. 第 11 章 产品化
    223. 11.1 项目工程化
    224. 11.1.1 目录结构
    225. 11.1.2 构建工具
    226. 11.1.3 编码规范
    227. 11.1.4 代码审查
    228. 11.2 部署流程
    229. 11.2.1 部署环境
    230. 11.2.2 部署操作
    231. 11.3 性能
    232. 11.3.1 动静分离
    233. 11.3.2 启用缓存
    234. 11.3.3 多进程架构
    235. 11.3.4 读写分离
    236. 11.4 日志
    237. 11.4.1 访问日志
    238. 11.4.2 异常日志
    239. 11.4.3 日志与数据库
    240. 11.4.4 分割日志
    241. 11.4.5 小结
    242. 11.5 监控报警
    243. 11.5.1 监控
    244. 11.5.2 报警的实现
    245. 11.5.3 监控系统的稳定性
    246. 11.6 稳定性
    247. 11.7 异构共存
    248. 11.8 总结
    249. 11.9 参考资源
    250. 附录 A 安装Node
    251. A.1 Windows系统下的Node安装
    252. A.2 Mac系统下Node的安装
    253. A.3 Linux系统下Node的安装
    254. A.4 总结
    255. A.5 参考资源
    256. 附录 B 调试Node
    257. B.1 Debugger
    258. B.2 Node Inspector
    259. B.2.1 安装Node Inspector
    260. B.2.2 错误堆栈
    261. B.3 总结
    262. 附录 C Node编码规范
    263. C.1 根源
    264. C.2 编码规范
    265. C.2.1 空格与格式
    266. C.2.2 命名规范
    267. C.2.3 比较操作
    268. C.2.4 字面量
    269. C.2.5 作用域
    270. C.2.6 数组与对象
    271. C.2.7 异步
    272. C.2.8 类与模块
    273. C.2.9 注解规范
    274. C.3 最佳实践
    275. C.3.1 冲突的解决原则
    276. C.3.2 给编辑器设置检测工具
    277. C.3.3 版本控制中的hook
    278. C.3.4 持续集成
    279. C.4 总结
    280. C.5 参考资源
    281. 附录 D 搭建局域NPM仓库
    282. D.1 NPM仓库的安装
    283. D.1.1 安装Erlang和CouchDB
    284. D.1.2 搭建NPM仓库
    285. D.2 高阶应用
    286. D.2.1 镜像仓库
    287. D.2.2 私有模块应用
    288. D.2.3 纯私有仓库
    289. D.3 总结
    290. D.4 参考资源

    作者朴灵

    类别 图书 / 非虚构

    提供方图灵社区

    喜欢这本书的人也喜欢

    来自豆瓣读书的评论23