这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天。
本篇笔记是对今天青训营的直播课程Node.js与前端开发实战课程的归纳总结及个人感悟。
一、Node.js的应用场景
- 前端工程化
- 早期ajax、jquery比较流行,直接在页面中引入lib即可
- 后续模块化、transpile逐渐成熟、需求逐渐增多,对后端能力需求逐渐强烈(在浏览器外运行代码的需求)
- Web服务端应用
- 也就是后端服务
- 关于vercel这家公司
- Electron跨端桌面应用
- 包括electron、nw.js
二、Node.js运行时结构
- V8: JS Runtime, 诊断调试工具(inspector)
- libuv:eventloop(事件循环)syscall(系统调用)
特点
- 异步I/O:当Node.js执行I/O操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待
- 单线程:
-
- 优点:不用考虑多线程状态同步问题,也就不需要锁;同时比较高效地利用系统资源
-
- 缺点:阻塞会产生更多负面影响
- 跨平台:Node.js跨平台+JS无需编译环境
三、实战:编写Http Server