这是我参与「第四届青训营 」笔记创作活动的第11天
这节青训营的课程老师讲解了一下Node.js,以下是我的一些课堂笔记
课程大致内容
- Node.js的应用场景
- Node.js运行时的结构
- 编写Http Server
Node.js的应用场景
- 前端工程化
- Bundle:webpack,vite,esbuild,parcel
- Uglify:uglifyjs
- 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推荐nvm4w或者是官方安装包,mac推荐使用nvm多版本管理