Appearance
Node.js 课程计划
课程概述
本课程分为 8 节课,每节课 20-40 分钟,总时长约 45-60 分钟。通过理论讲解和实践操作,深入理解 Node.js 的核心功能。
第 1 课:课程介绍与环境准备(5 分钟)
学习目标
- 了解课程内容和目标
- 搭建开发环境
- 项目初始化
- 运行第一个测试
课程内容
课程介绍
- Node.js 的核心概念
- 本课程的学习目标
- 课程结构安排
环境准备
- 安装 Node.js
- 克隆项目代码
- 安装依赖:
npm install
运行测试
- 执行测试命令:
npm test - 查看测试结果
- 理解测试框架
- 执行测试命令:
实践操作
bash
# 安装依赖
npm install
# 运行测试
npm test预期输出
✅ 所有事件发射器测试通过
✅ 所有事件循环测试通过
✅ 所有模块系统测试通过
✅ 所有流处理测试通过
✅ 所有 HTTP 服务器测试通过第 2 课:事件发射器实现(10 分钟)
学习目标
- 理解事件驱动编程模型
- 掌握 EventEmitter 的实现原理
- 学习事件监听和触发机制
课程内容
事件驱动编程
- 什么是事件驱动
- 事件循环的概念
- 异步编程模型
EventEmitter 实现
- on() 方法:监听事件
- emit() 方法:触发事件
- off() 方法:移除监听器
- once() 方法:一次性监听
代码实现
- 查看
src/events.js - 理解核心实现
- 运行相关测试
- 查看
实践操作
javascript
const { EventEmitter } = require('./src/events');
const emitter = new EventEmitter();
// 监听事件
emitter.on('data', (data) => {
console.log('Received:', data);
});
// 触发事件
emitter.emit('data', { message: 'Hello' });测试验证
bash
node test/events.test.js预期输出
✅ 所有事件发射器测试通过第 3 课:事件循环实现(10 分钟)
学习目标
- 理解事件循环的工作原理
- 掌握定时器和异步回调的实现
- 学习 nextTick 和 setImmediate 的区别
课程内容
事件循环原理
- 事件循环的阶段
- 宏任务和微任务
- 执行顺序
定时器实现
- setTimeout:延迟执行
- setImmediate:立即执行
- process.nextTick:下一个 tick 执行
代码实现
- 查看
src/event-loop.js - 理解事件循环逻辑
- 运行相关测试
- 查看
实践操作
javascript
const { eventLoop } = require('./src/event-loop');
// 使用 setTimeout
setTimeout(() => {
console.log('Timer fired');
}, 1000);
// 使用 setImmediate
setImmediate(() => {
console.log('Immediate fired');
});
// 使用 nextTick
process.nextTick(() => {
console.log('NextTick fired');
});测试验证
bash
node test/event-loop.test.js预期输出
✅ 所有事件循环测试通过第 4 课:模块系统实现(10 分钟)
学习目标
- 理解 CommonJS 模块系统
- 掌握模块加载和缓存机制
- 学习模块解析算法
课程内容
模块系统概述
- CommonJS 规范
- 模块加载流程
- 模块缓存机制
模块解析
- 相对路径解析
- 绝对路径解析
- node_modules 查找
代码实现
- 查看
src/module.js - 理解模块加载逻辑
- 运行相关测试
- 查看
实践操作
javascript
// 创建模块文件
// my-module.js
module.exports.value = 42;
// 使用模块
const myModule = require('./my-module');
console.log(myModule.value);测试验证
bash
node test/module.test.js预期输出
✅ 所有模块系统测试通过第 5 课:流处理实现(10 分钟)
学习目标
- 理解流的概念和优势
- 掌握可读流和可写流的实现
- 学习流管道和转换流
课程内容
流的概念
- 什么是流
- 流的优势
- 流的类型
流实现
- Readable:可读流
- Writable:可写流
- Duplex:双向流
- Transform:转换流
代码实现
- 查看
src/stream.js - 理解流处理逻辑
- 运行相关测试
- 查看
实践操作
javascript
const { Readable, Writable } = require('./src/stream');
// 创建可读流
const readable = new Readable();
readable.push('data1');
readable.push('data2');
readable.push(null);
// 创建可写流
const writable = new Writable();
writable._write = (chunk, encoding, callback) => {
console.log('Received:', chunk);
callback();
};
// 使用管道
readable.pipe(writable);测试验证
bash
node test/stream.test.js预期输出
✅ 所有流处理测试通过第 6 课:HTTP 服务器实现(10 分钟)
学习目标
- 理解 HTTP 协议基础
- 掌握 HTTP 服务器的实现
- 学习请求和响应的处理
课程内容
HTTP 协议
- HTTP 请求格式
- HTTP 响应格式
- 状态码和响应头
HTTP 服务器
- 创建服务器
- 处理请求
- 发送响应
代码实现
- 查看
src/http.js - 理解 HTTP 处理逻辑
- 运行相关测试
- 查看
实践操作
javascript
const { createServer } = require('./src/http');
const server = createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});测试验证
bash
node test/http.test.js预期输出
✅ 所有 HTTP 服务器测试通过第 7 课:完整应用构建(10 分钟)
学习目标
- 将所有组件整合
- 构建完整的 Web 应用
- 实现路由和中间件
课程内容
应用架构
- 整合所有组件
- 设计应用结构
- 实现路由系统
中间件
- 中间件概念
- 中间件链
- 错误处理
实践操作
- 构建示例应用
- 测试应用功能
- 性能优化
实践操作
javascript
const { createServer } = require('./src/http');
const app = createServer((req, res) => {
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Hello World!</h1>');
} else if (req.url === '/api') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Hello API' }));
} else {
res.writeHead(404);
res.end('Not Found');
}
});
app.listen(3000);预期输出
访问 http://localhost:3000 查看 Hello World 访问 http://localhost:3000/api 查看 JSON 响应
第 8 课:总结与扩展(10 分钟)
学习目标
- 回顾课程内容
- 总结核心概念
- 探索扩展方向
课程内容
课程回顾
- 事件发射器
- 事件循环
- 模块系统
- 流处理
- HTTP 服务器
核心概念总结
- 单线程模型
- 异步 I/O
- 事件驱动
- 非阻塞操作
扩展方向
- 添加更多 HTTP 功能
- 实现 WebSocket 支持
- 添加数据库集成
- 性能优化技巧
实践操作
bash
# 运行所有测试
npm test
# 构建自己的应用
# 思考如何扩展功能预期输出
✅ 所有事件发射器测试通过
✅ 所有事件循环测试通过
✅ 所有模块系统测试通过
✅ 所有流处理测试通过
✅ 所有 HTTP 服务器测试通过学习成果
完成本课程后,你将能够:
- ✅ 理解 Node.js 的核心架构
- ✅ 掌握事件循环的工作原理
- ✅ 实现事件发射器
- ✅ 构建模块系统
- ✅ 实现流处理
- ✅ 创建 HTTP 服务器
- ✅ 构建完整的 Web 应用
参考资源
下一步
完成本课程后,你可以继续学习:
- Express 框架
- Koa 框架
- NestJS 框架
- 数据库集成
- WebSocket 实现
- 微服务架构
所有教学材料已保存。准备录制。

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态
