封面
版权信息
内容提要
前言
第1章 概述
1.1 了解Node.js
1.2 安装
1.2.1 源代码安装
1.2.2 验证安装
1.3 hello world
1.4 其他准备工作
1.4.1 准备一个开发环境
1.4.2 准备一份源代码
1.4.3 准备一个类Linux环境
1.4.4 熟悉控制台
1.4.5 准备一份文档
第2章 了解npm
2.1 package.json
2.1.1 生成package.json
2.1.2 第三方模块
2.2 使用npm install
2.3 node_modules
2.4 控制模块版本
2.4.1 子模块的版本
2.4.2 package-lock.json
2.5 使用npm构建项目
2.6 关于版本升级
小结
思考与问题
第3章 JavaScript核心
3.1 基本类型
3.1.1 布尔值
3.1.2 数字
3.1.3 字符串
3.1.4 正则表达式
3.1.5 比较相等
3.2 数据结构
3.2.1 数组
3.2.2 TypedArray
3.2.3 栈
3.2.4 链表
3.2.5 二叉树
3.2.6 Set
3.2.7 Map
3.3 变量与作用域
3.3.1 声明变量
3.3.2 变量提升
3.3.3 作用域
3.3.4 this
3.4 函数
3.4.1 箭头函数
3.4.2 覆盖原生函数
3.4.3 闭包
3.4.4 函数式编程
3.5 对象
3.5.1 创建对象
3.5.2 Symbol属性
3.5.3 对象遍历器
3.6 类与继承
3.6.1 定义一个类
3.6.2 继承
3.7 实战:编写字节码执行器
3.7.1 指令集
3.7.2 编写执行器
小结
思考与问题
第4章 编写结构化程序
4.1 module
4.1.1 哪些模块需要引入
4.1.2 require()及其运行机制
4.1.3 ES6 module
4.2 process
4.2.1 属性和方法
4.2.2 预定义事件
4.3 Events
4.3.1 使用
4.3.2 事件监听的实现原理
4.3.3 继承Events模块
4.4 文件系统
4.4.1 源码实现
4.4.2 文件系统API
4.4.3 同步和异步
4.4.4 关于文件路径
4.5 Stream
4.5.1 流式数据
4.5.2 Stream API
4.5.3 可读流
4.5.4 可写流
4.5.5 和文件系统API的比较
4.6 Child Process
4.6.1 spawn()
4.6.2 fork()
4.7 处理CPU密集型任务
4.8 实战:控制CPU占用曲线
4.8.1 单核环境
4.8.2 适应多核
4.8.3 精准控制
4.8.4 获取CPU占用率
4.9 C++扩展
4.9.1 V8 API
4.9.2 N-API
4.9.3 封装bitset
4.9.4 封装sleep函数
小结
思考与问题
第5章 组织异步代码
5.1 回调函数
5.1.1 回调函数的执行过程
5.1.2 回调的返回值
5.2 Promise
5.2.1 什么是Promise
5.2.2 then
5.2.3 使用Promise处理异步任务
5.2.4 使用Promise封装现有方法
5.2.5 运行多个Promise
5.2.6 更多API
5.3 async/await
5.3.1 背景
5.3.2 async函数
5.3.3 await关键字
5.3.4 错误处理
5.3.5 循环中的async
5.3.6 事件循环与async
5.4 动手实现Promise
5.4.1 从外到内
5.4.2 适应异步过程
5.4.3 实现链式调用
5.4.4 连续异步操作
小结
思考与问题
第6章 Web应用
6.1 Web服务器
6.1.1 使用HTTP模块
6.1.2 server/request/response
6.1.3 处理HTTP请求
6.1.4 模板引擎与页面渲染
6.1.5 数据库的交互
6.2 使用express
6.2.1 基本概念
6.2.2 静态文件服务
6.2.3 路由服务
6.2.4 中间件系统
6.2.5 迷你express
6.2.6 cookie
6.2.7 session
6.2.8 OAuth
6.2.9 与前端应用的整合
6.2.10 提高服务器性能
6.3 集群和进程管理
6.3.1 使用Cluster模块
6.3.2 负载均衡
6.3.3 服务器安全
6.4 HTTPS
6.4.1 对称加密和非对称加密
6.4.2 升级HTTPS服务器
6.5 全双工通信
6.5.1 轮询和长连接
6.5.2 使用WebSocket
6.5.3 WebSocket握手
6.5.4 HTTP/2
6.6 HTTP客户端
6.7 API文档
6.7.1 Swagger UI
6.7.2 API描述文件
小结
思考与问题
第7章 图形化应用
7.1 桌面应用
7.1.1 Java Swing
7.1.2 WPF
7.1.3 Qt
7.2 Electron
7.2.1 快速开始
7.2.2 页面和后台的交互
7.2.3 实现菜单栏
7.2.4 多窗口管理
小结
思考与问题
第8章 测试与调试
8.1 测试框架
8.1.1 断言系统
8.1.2 使用jasmine
8.1.3 覆盖率测试
8.1.4 压力测试
8.2 调试
8.2.1 调试Node代码
8.2.2 调试C++源代码
8.2.3 CPU profile
小结
思考与问题
附录A 基础概念
A.1 编程语言和运行时
A.1.1 编程语言的产生
A.1.2 什么是运行时
A.1.3 为什么是JavaScript
A.1.4 编译Node源码
A.1.5 Node架构
A.1.6 js2c
A.2 关于操作系统
A.2.1 进程和线程
A.2.2 理解高并发
A.2.3 理解非阻塞
A.3 事件循环
A.3.1 各阶段概述
A.3.2 阻塞事件循环
A.3.3 process.nextTick
A.3.4 模拟事件循环
A.3.5 microTask和macroTask/task
附录B 网络通信基础
B.1 发生了什么
B.1.1 寻址
B.1.2 建立连接
B.1.3 通信
B.2 socket接口
B.2.1 创建socket
B.2.2 建立连接
B.2.3 接收消息
B.3 socket与并发
B.3.1 select和poll
B.3.2 epoll
附录C Node和其他语言的比较
C.1 面向对象
C.2 C语言中的Stream
C.3 关于I/O的处理
C.4 C# Task
附录D Docker
D.1 容器技术
D.1.1 镜像
D.1.2 容器与镜像
D.1.3 运行
D.2 运行MySQL
D.3 使用MongoDB
D.4 Dockerfile
更新时间:2025-01-07 16:27:00