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

77 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第5天,关于Node.js与前端开发实战的知识点总结,包括:Node.js的应用场景、Node.js运行时结构和编写Http Server。

———Zy_Thomas

Node.js的应用场景

1.前端工程化

前端工程化可以分成四个方面来说,分别为模块化组件化规范化自动化

狭义上理解: 将开发阶段的代码发布到生产环境,包含:构建,分支管理,自动化测试,部署。

广义上理解: 前端工程化应该包含从编码开始到发布,运行和维护阶段。

  • Bundle:webpack、vite、esbuild、parcel
  • Uglify:uglifyjs。
  • Transpile:bablejs、typescript。
  • 其他语言加入竞争:esbuild、rarcel、prisma。

现状:node.js难以替代

2. Web服务端应用

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

3. Electron跨端桌面应用

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

Node.js运行时结构

43D955CF597D315A114FCDD7F7B8E5C6.png

特点

  1. 异步I/O: 当Node.js执行I/O操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待。
  2. 单线程:
  • JS单线程:实际:JS线程+uv线程池+V任务线程池+V8 Inspector线程
  • 优点:不需要考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源;
  • 缺点:阻塞会产生更多负面影响;
  • 解决方法:多进程或者多线程
  1. 跨平台
  • 跨平台(大部分功能、api)
  • Node.js跨平台+JS无需编译环境(+Web跨平台+诊断工具跨平台)
  • 因此,开发成本和学习成本比较低。

编写Http Server