你会获得什么?
- 夯实基础,深入学习操作系统、网络、V8 知识;
- 全面提升,掌握基础原理与核心模块的实现;
- 动手实操,从 0 实现一个简单的 JS 运行时;
- 触类旁通,能独立研究源码,解决业务问题。
课程简介
Node.js 从诞生到现在,已经走过了十几个年头。随着全栈工程师、微服务、前后端架构分离的火热,从开发工具到 Web 应用,从客户端到服务端,越来越多的使用场景中都能看到 Node.js 的身影。与此同时,各个公司对 Node.js 开发者的要求也越来越高。比如会要求我们对进程 / 线程、网络、流和异步等概念有深刻理解,精通 Node.js,熟悉 TCP、HTTP 等网络协议,学习能力和解决问题的能力强。
作为一名 Node.js 工程师,如果我们只是面向文档 黑盒 编程,显然已经不能满足这些要求了。文档只是 Node.js 的一部分,想要提升自己的核心竞争力,我们一定要深入理解 Node.js 底层原理。理解底层原理不仅可以帮助我们解决日常工作中碰到的各种问题,更好地完成工作中各种需求,还可以帮助我们更快地学习其他技术,因为技术都是相通的。
但是,大部分同学在阅读源码或深入学习 Node.js 时,可能会遇到很多问题。
- 项目逻辑复杂,代码庞大,不知道如何看或者看哪些代码。比如:看完 JS 模块的源码后,不知道如何进一步阅读 C、C++ 层的代码。
- Node.js 涉及知识比较广,很多地方看不懂,比如会涉及 V8、事件驱动、非阻塞 IO、进程间通信等知识。
- 无法建立完整的知识体系,实际工作中运用不好。比如:知道文件操作是基于线程池的,但是不知道具体原理;知道 net 模块如何使用,但是不知道它是如何基于事件驱动模块工作的。
基于此,本小册将围绕以下 3 条原则来设计。
- 庖丁解牛:小册梳理了 Node.js 核心的内容,按照架构、基础、核心模块循序渐进的讲解,让大家对 Node.js 有一个全面、清晰、深入的认识。
- 纸上得来终觉浅,绝知此事要躬行:小册除了讲解 Node.js 的实现原理,还会提供一些实践的代码,最后还会教大家实现一个简单的 JS 运行时,来加深认识。
- 授人以渔:小册还会讲到很多底层通用的基础知识,如:V8、操作系统、网络等等。学无止境,希望你通过小册学会的不仅仅是 Node.js 本身,更是独立阅读源码,深入探索的能力。
具体的课程内容如下:
课程目录
开篇:深入剖析 Node.js 底层原理
Node.js 基础架构
Libuv 数据结构和通用逻辑
Libuv 事件循环
Libuv 线程池和线程间通信
Libuv 的流机制
Libuv 的功能是如何引入 JS 的
Node.js 中 JS 和 C++对象的内存管理机制
Node.js 的启动过程
模块加载的实现
TCP 基础和客户端 / 服务器的实现
TCP 的数据通信的实现和特性
UDP 客户端 / 服务器的实现和特性
详解文件模块的同步、异步、Promise 化、流式操作 API
Node.js 中两套文件监听机制的实现
从 Libuv 和 cares 的角度,理解 DNS 模块的实现
Unix 域和文件描述符传递
进程和进程间通信的实现
服务器技术的演进和 Cluster 模块的实现
Node.js 中 HTTP 模块的实现和使用
多线程和线程间通信的实现
setImmediate、nextTick 和 setTimeout 的实现
从 0 到 1 实现一个简单的 JS 运行时
总结:阅读源码的意义
讲师介绍
theanarkh,字节跳动 Node.js 工程师,目前主要负责 Node.js APM 方向的工作,曾在腾讯云 / IMWeb / WebInfra 等团队工作。Node.js Collaborator 和 Libuv Contributor,业余写过玩具 JS 运行时 No.js 和 Deer,个人公众号《编程杂技》。