这是我参与「第四届青训营 」笔记创作活动的第4天
课程大致内容
- Node.js的应用场景
- Node.js运行时的结构
- 编写Http Server
Node.js的应用场景
- 前端工程化
- Bundle: webpack, vite, esbuild, parcel
- Uglify: uglify.js
- Transplie: bablejs, Typescript
- 其他语言加入竞争:esbuild, parcel, prisma
- 现状:难以替代
- Web服务端应用
- 学习曲线平缓,开发效率较高
- 运行效率接近常见的编译语言
- 社区生态丰富以及工具链成熟
- 与前端结合的场景会有优势
- 现状:竞争激烈,Node.js有自己独特的优势
- Eletron跨端桌面应用
- 商务应用:vscode,slack,discord,zoom
- 大型公司内的效率工具
- 现状:大部分的场景在选型的时候,都值得考虑
- Node.js在字节
- BFF应用,SSR应用
- 服务端应用,比如说:头条搜索,西瓜视频,懂车帝
- Electron应用:飞书
- 每年新增:1000+Node.js应用
- Node.js运行的时候的结构--V8,libuv
- V8:JavaScript Runtime,诊断调试工具
- libuv:eventloop(事件循环),syscall(系统调用)
- 举例:用node-fetch发起请求的时候
- Node.js运行的时候的结构--特点
- 异步:当Node.js在执行异步操作的时候,会在响应返回后恢复操作,而不是阻塞线程并且占用额外的内存等待
- 单线程:js单线程,实际上是js线程+uv线程池+v8任务线程池+v8 Inspector线程 优点:不用考虑多线程状态同步的问题,也就不需要锁,同时还能比较高效的利用系统资源,缺点:阻塞会产生更多负面影响,解决方法:多进程或者多线程
- 跨平台:Node.js跨平台+js无需编译环境=开发成本低
编写Http server --安装Node.js
windows推荐nvm for windows或者是官方安装包,mac推荐使用nvm多版本管理