当前位置:主页 > 计算机电子书 > 程序设计 > Node.js下载
深入浅出Node.js

深入浅出Node.js PDF 高质量版

  • 更新:2019-10-30
  • 大小:19.3 MB
  • 类别:Node.js
  • 作者:朴灵
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

深入浅出Node.js PDF

这书从不一样的角度介绍了 Node 本质的特性和构造。由首章Node 介绍为数据库索引,涉及到Node的各个方面,主题思想包括控制模块体制的揭示、多线程I/O 保持原理的呈现、多线程编写程序的讨论、运行内存操纵的介绍、二进制统计数据Buffer的关键点、Node 中的网络编程基本、Node 中的Web 开发设计、系统进程间的消息传递、Node 检测及其根据Node搭建商品必须的常见问题。*后的附则介绍了Node 的安裝、调节、编号标准和NPM 库房等事项。

这书合适想深层次掌握 Node 的工作人员阅读文章。

目录

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

资源下载

资源下载地址1:https://pan.baidu.com/s/1isE_xmPpqrdN9jPdSXZmfw

相关资源

网友留言