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

83 阅读2分钟

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

Node.js 的应用场景

前端工程化

Node.js 的应用场景(why)

  • 前端工程化
  • web服务端应用
  • Electron跨端桌面应用

前端工程化

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

Web 服务端应用

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

Node.js 开发服务端应用的优势:

  • 学习曲线平缓,开发效率高
  • 运行效率接近常见的编译语言
  • 社区生态丰富以及成熟的工具链
  • 与前端结合的场景如 SSR 会更有优势

Web 服务端应用的市场仍然竞争激烈,而 Node.js 因为可以与前端共用代码而具有独特的优势。

Electron 跨端桌面应用

在一些商业应用如 VSCode、Slack、Discord 中有使用。

Electron 类的工具由于开发效率高,也会被作为大型公司内协作工具的开发技术。

大部分场景在选型时都值得考虑。

Node.js 运行时结构

异步 I/O

当 Node.js 执行 I/O 操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存。

单线程

JavaScript 是单线程的,但实际上是指 JavaScript 的主线程是单线程的,运行环境中还会有其他的线程存在。

优点:不用考虑多线程的状态同步问题,也就不需要锁,同时还能比较高效地利用系统资源。

缺点:阻塞会产生更多负面影响。解决方法:多进程或多线程。

跨平台

Node.js 的大部分 API 都是跨平台的。

除了 Node.js 本身跨平台以外,还有许多特性可以使得开发成本降低,如:JavaScript 无需编译环境、Web 跨平台等。