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

67 阅读2分钟

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

一、本堂课重点内容:

  1. Node.js的应用场景
  2. Node.js运行时的结构
  3. 编写Http Server
  4. 延伸话题

二、详细知识点介绍:

Node.js的应用场景

  1. 前端工程化
  2. Web服务端应用
  3. Electron跨端桌面应用
Node.js的应用场景-前端工程化
  • Bundle:webpacl,vite,esbuild,parcel
  • Uglify:uglifyjs
  • Transpile:bablejs,typescript
  • 其他语言加入竞争:esbuild,parcel,prisma
  • 现状:难以取代
Node.js的应用场景-Web服务端应用
  • 学习曲线平缓,开发效率高
  • 运行效率接近常见的编译语言
  • 社区生态丰富以及工具链成熟
  • 与前端结合场景有优势
  • 现状:竞争激烈,Node.js有自己的独特优势
Node.js的应用场景-Electron跨端桌面应用
  • 商业应用:vscode,slack,discord,zoom
  • 大型公司内的效率工具
  • 现状:大部分场景在选型时都值得考虑

Node.js运行时的结构

Node.js运行时的结构-V8,libuv
  • V8:JavaScript Runtime 诊断调试工具(inspector)
  • libuv:eventoop(事件循环),syscall(系统调试)
  • 举例:用node-fetch 发起请求时...
Node.js运行时的结构-特点
  • 异步:当Node.js执行I/O操作时,会在响应返回后回复操作,而不是阻塞线程并占用而外内存等待。
  • 单线程
  • 跨平台
单线程
  • JS单线程

    实际上JS线程+uv线程池+V8任务池+V8Inspector线程

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

  • 缺点:阻塞会产生更多负面影响

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

编写Http Server

React SSR(服务端渲染)特点
  • 相比传统HTML模板引擎:避免重复编写代码
  • 相比SEA:首屏渲染更快,SEO友好
  • 缺点:通常ops较低,前端代码编写时需要考虑服务端渲染情况
SSR难点
  • 需要打包处理代码

image.png

-需要思考前端代码在服务端运行时的逻辑

image.png

  • 移除对服务端无意义的副作用,或重置环境
编写Http Server-Debug

image.png

编写Http Server-部署

image.png