Node.js与前端开发 | 青训营笔记

111 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

这个暑假我所在的学生平台的方向开始了node.js的学习,趁着次机会,加深一下对nodejs的认识

建议安装nvm包管理器对nodejs的版本进行管理

Node.js 与 前端开发实战

一、Node.js的应用场景(why)

- 前端工程化

Node.js赋予了js开发者在浏览器外运行代码的能力

  • Bundle:webpack,vite,esbild,parcel
  • Uglify:uglifyjs
  • Transpile:bablejs,typescript
  • 其他语言加入竞争:esbuild,parcel,prisma
  • 现状:难以代替

- Web服务端应用

Node.js开发Web服务端应用,也是后端服务。

  • 学习曲线平缓,开发效率高
  • 运行效率接近常见的编译语言
  • 社区生态丰富及工具链成熟(npm,V8 inspector)
  • 与前端结合场景会有优势(SSR)
  • 现状:竞争激烈,Node.js有自己独特的优势

- Electron 跨桌面应用

  • 商业应用:vscode,slack,discord,zoom
  • 大型公司内的效率工具
  • 现状:大部分场景在选型时,都值得考虑

二、Node.js运行时结构(what)

image.png

特点 :

一、异步I/O 当Node.js执行I/O操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内容等待

image.png

二、单线程

  • js单线程

实际:JS线程+UV线程池+V8任务线程池+V8 Inspector线程

  • 优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源
  • 缺点:阻塞会产生更多的负面影响

解决办法:多线程或多进程

三、跨平台

  • 跨平台(大部分功能,api)
  • Node.js跨平台+JS无需编译环境(+Web跨平台+诊断工具跨平台)
    • 开发成本低(大部分场景无需担心跨平台的问题),整体学习成本低