深入浅出 Node.js PDF 文档
本书从不同的视角介绍了 Node 内在的特点和结构。由首章 Node 介绍为索引,涉及 Node 的各个方面,主要内容包含模块机制的揭示、异步 I/O 实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据 Buffer 的细节、Node 中的网络编程基础、Node 中的 Web 开发、进程间的消息传递、Node 测试以及通过Node 构建产品需要的注意事项。最后的附录介绍了 Node 的安装、调试、编码规范和 NPM 仓库等事宜。本书适合想深入了解 Node 的人员阅读。
在线阅读: https://www.wenjiangs.com/docs/undertand-node
没有用过 Node 的人,是不会相信仅凭 JavaScript 这门活跃于网页编程的脚本语言就可以驱动后端复杂的应用程序,也不会相信 Node 在开发高并发、高性能后端服务程序上也有着极大的优势。
我们在 2010 年接触 Node 的时候,国内外了解 Node 的人寥寥可数,2011 年我们已经决定在淘宝的部分生产系统中开始使用 Node。由于招募熟悉 Node 的人才是个大问题,为了树立技术品牌,我们在 2011 年年初创办 CNode 开源技术社区(CNodeJS.org),没有想到一发不可收拾。从2011 年 4 月开始,我们走遍北京、上海、广州、深圳、杭州,甚至还到了香港,发起并且组织了多次 NodeParty 线下技术分享。为了弥补初学者没有 Node 托管环境学习测试的问题,我们还自己研发了 Node App Engine。Node 在国内深入人心,我相信与 CNode 社区有着不小的关系。
最初,Node 的爱好者大都是些喜欢探索新技术的极客。在社区,我们也认识了很多天南海北的朋友,包括朴灵。在一次上海 Node 技术分享会后,我邀请他加入了淘宝。他在淘宝工作之余继续为社区作贡献,自发为 Node 的推广做了很多事情,包括今天他呕心写了这本书,我相信这是目前质量最高的一本 Node 图书。因为中国没有几个人像朴灵一样,有机会在很多高并发的应用场景中反复实践。这绝对是一本实践性极强的技术书,不管是否学习过 Node,只要你爱好技术,都推荐你阅读它。
目录
第 1 章 Node 简介
1.1 Node 的诞生历程
1.2 Node 的命名与起源
1.2.1 为什么是 JavaScript
1.2.2 为什么叫 Node
1.3 Node 给 JavaScript 带来的意义
1.4 Node 的特点
1.4.1 异步 I/O
1.4.2 事件与回调函数
1.4.3 单线程
1.4.4 跨平台
1.5 Node 的应用场景
1.5.1 I/O 密集型
1.5.2 是否不擅长 CPU 密集型业务
1.5.3 与遗留系统和平共处
1.5.4 分布式应用
1.6 Node 的使用者
1.7 参考资源
第 2 章 模块机制
2.1 CommonJS 规范
2.1.1 CommonJS 的出发点
2.1.2 CommonJS 的模块规范
2.2 Node 的模块实现
2.2.1 优先从缓存加载
2.2.2 路径分析和文件定位
2.2.3 模块编译
2.3 核心模块
2.3.1 JavaScript 核心模块的编译过程
2.3.2 C/C++核心模块的编译过程
2.3.3 核心模块的引入流程
2.3.4 编写核心模块
2.4 C/C++扩展模块
2.4.1 前提条件
2.4.2 C/C++扩展模块的编写
2.4.3 C/C++扩展模块的编译
2.4.4 C/C++扩展模块的加载
2.5 模块调用栈
2.6 包与 NPM
2.6.1 包结构
2.6.2 包描述文件与 NPM
2.6.3 NPM 常用功能
2.6.4 局域 NPM
2.6.5 NPM 潜在问题
2.7 前后端共用模块
2.7.1 模块的侧重点
2.7.2 AMD 规范
2.7.3 CMD 规范
2.7.4 兼容多种模块规范
2.8 总结
2.9 参考资源
第 3 章 异步 I/O
3.1 为什么要异步 I/O
3.1.1 用户体验
3.1.2 资源分配
3.2 异步 I/O 实现现状
3.2.1 异步 I/O 与非阻塞 I/O
3.2.2 理想的非阻塞异步 I/O
3.2.3 现实的异步 I/O
3.3 Node 的异步 I/O
3.3.1 事件循环
3.3.2 观察者
3.3.3 请求对象
3.3.4 执行回调
3.3.5 小结
3.4 非 I/O 的异步 API
3.4.1 定时器
3.4.2 process.nextTick()
3.4.3 setImmediate()
3.5 事件驱动与高性能服务器
3.6 总结
3.7 参考资源
第 4 章 异步编程
4.1 函数式编程
4.1.1 高阶函数
4.1.2 偏函数用法
4.2 异步编程的优势与难点
4.2.1 优势
4.2.2 难点
4.3 异步编程解决方案
4.3.1 事件发布/订阅模式
4.3.2 Promise/Deferred 模式
4.3.3 流程控制库
4.4 异步并发控制
4.4.1 bagpipe 的解决方案
4.4.2 async 的解决方案
4.5 总结
4.6 参考资源
第 5 章 内存控制
5.1 V8 的垃圾回收机制与内存限制
5.1.1 Node 与 V8
5.1.2 V8 的内存限制
5.1.3 V8 的对象分配
5.1.4 V8 的垃圾回收机制
5.1.5 查看垃圾回收日志
5.2 高效使用内存
5.2.1 作用域
5.2.2 闭包
5.2.3 小结
5.3 内存指标
5.3.1 查看内存使用情况
5.3.2 堆外内存
5.3.3 小结
5.4 内存泄漏
5.4.1 慎将内存当做缓存
5.4.2 关注队列状态
5.5 内存泄漏排查
5.5.1 node-heapdump
5.5.2 node-memwatch
5.5.3 小结
5.6 大内存应用
5.7 总结
5.8 参考资源
第 6 章 理解 Buffer
6.1 Buffer 结构
6.1.1 模块结构
6.1.2 Buffer 对象
6.1.3 Buffer 内存分配
6.2 Buffer 的转换
6.2.1 字符串转 Buffer
6.2.2 Buffer 转字符串
6.2.3 Buffer 不支持的编码类型
6.3 Buffer 的拼接
6.3.1 乱码是如何产生的
6.3.2 setEncoding() 与 string_decoder()
6.3.3 正确拼接 Buffer
6.4 Buffer 与性能
6.5 总结
6.6 参考资源
第 7 章 网络编程
7.1 构建 TCP 服务
7.1.1 TCP
7.1.2 创建 TCP 服务器端
7.1.3 TCP 服务的事件
7.2 构建 UDP 服务
7.2.1 创建 UDP 套接字
7.2.2 创建 UDP 服务器端
7.2.3 创建 UDP 客户端
7.2.4 UDP 套接字事件
7.3 构建 HTTP 服务
7.3.1 HTTP
7.3.2 http 模块
7.3.3 HTTP 客户端
7.4 构建 WebSocket 服务
7.4.1 WebSocket 握手
7.4.2 WebSocket 数据传输
7.4.3 小结
7.5 网络服务与安全
7.5.1 TLS/SSL
7.5.2 TLS 服务
7.5.3 HTTPS 服务
7.6 总结
7.7 参考资源
第 8 章 构建 Web 应用
8.1 基础功能
8.1.1 请求方法
8.1.2 路径解析
8.1.3 查询字符串
8.1.4 Cookie
8.1.5 Session
8.1.6 缓存
8.1.7 Basic 认证
8.2 数据上传
8.2.1 表单数据
8.2.2 其他格式
8.2.3 附件上传
8.2.4 数据上传与安全
8.3 路由解析
8.3.1 文件路径型
8.3.2 MVC
8.3.3 RESTful
8.4 中间件
8.4.1 异常处理
8.4.2 中间件与性能
8.4.3 小结
8.5 页面渲染
8.5.1 内容响应
8.5.2 视图渲染
8.5.3 模板
8.5.4 Bigpipe
8.6 总结
8.7 参考资源
第 9 章 玩转进程
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.2.4 小结
9.3 集群稳定之路
9.3.1 进程事件
9.3.2 自动重启
9.3.3 负载均衡
9.3.4 状态共享
9.4 Cluster 模块
9.4.1 Cluster 工作原理
9.4.2 Cluster 事件
9.5 总结
9.6 参考资源
第 10 章 测试
10.1 单元测试
10.1.1 单元测试的意义
10.1.2 单元测试介绍
10.1.3 工程化与自动化
10.1.4 小结
10.2 性能测试
10.2.1 基准测试
10.2.2 压力测试
10.2.3 基准测试驱动开发
10.2.4 测试数据与业务数据的转换
10.3 总结
10.4 参考资源
第 11 章 产品化
11.1 项目工程化
11.1.1 目录结构
11.1.2 构建工具
11.1.3 编码规范
11.1.4 代码审查
11.2 部署流程
11.2.1 部署环境
11.2.2 部署操作
11.3 性能
11.3.1 动静分离
11.3.2 启用缓存
11.3.3 多进程架构
11.3.4 读写分离
11.4 日志
11.4.1 访问日志
11.4.2 异常日志
11.4.3 日志与数据库
11.4.4 分割日志
11.4.5 小结
11.5 监控报警
11.5.1 监控
11.5.2 报警的实现
11.5.3 监控系统的稳定性
11.6 稳定性
11.7 异构共存
11.8 总结
11.9 参考资源
附录 A 安装 Node
A.1 Windows 系统下的 Node 安装
A.2 Mac 系统下 Node 的安装
A.3 Linux 系统下 Node 的安装
A.4 总结
A.5 参考资源
附录 B 调试 Node
B.1 Debugger
B.2 Node Inspector
B.2.1 安装 Node Inspector
B.2.2 错误堆栈
B.3 总结
附录 C Node 编码规范
C.1 根源
C.2 编码规范
C.2.1 空格与格式
C.2.2 命名规范
C.2.3 比较操作
C.2.4 字面量
C.2.5 作用域
C.2.6 数组与对象
C.2.7 异步
C.2.8 类与模块
C.2.9 注解规范
C.3 最佳实践
C.3.1 冲突的解决原则
C.3.2 给编辑器设置检测工具
C.3.3 版本控制中的 hook
C.3.4 持续集成
C.4 总结
C.5 参考资源
附录 D 搭建局域 NPM 仓库
D.1 NPM 仓库的安装
D.1.1 安装 Erlang 和 CouchDB
D.1.2 搭建 NPM 仓库
D.2 高阶应用
D.2.1 镜像仓库
D.2.2 私有模块应用
D.2.3 纯私有仓库
D.3 总结
D.4 参考资源
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/AOCnCuVJBWuRgjWM.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 深入理解 SVG PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论