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

96 阅读2分钟

这是我参加「第五届青训营 」伴学笔记创作活动的第6天。今天的笔记内容是Node.js与前端开发实战。课程内容概要分为Node.js相关概念,其应用场景;Node.js运行时结构;编写Http Server。

相关概念

  • BFF,即 Backend For Frontend(服务于前端的后端),可以理解为一个中间层,Node.js 非常适合用来做 BFF 层,可以减少大量的业务沟通成本,对后台也更加安全并且可以降低主服务器的复杂度
  • CSR,客户端渲染,前端通过一大堆接口请求数据,然后通过 JS 动态处理和生成页面结构和展示。优点是前后端分离、减小服务器压力、局部刷新。缺点是不利于SEO,首屏渲染慢。
  • SSR,服务端渲染,服务器返回的不是接口数据,而是一整个页面(或整个楼层)的 HTML 字符串,浏览器直接显示即可。也就是说,在服务器端直接就渲染好了,然后一次性打包返回给前端。优点是有利于 SEO、首屏渲染很快。

Node.js 的应用场景

  • Node.js开发Web服务端应用的特点

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

    • vscode,slack,discord,zoom,飞书,飞连
    • 大型公司内的效率工具(跨端,开发效率高)

Node.js 运行时结构

V8:JavaScript,Runtime,诊断调试工具 (inspector) libuv: eventloop (事件循环),syscall (系统调用)

JS单线程:
实际: JS 线程 + uv 线程池 + V8 任务线程池 +V8 Inspector 线程
优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源
缺点:阻塞会产生更多负面影响解决办法:多进程或多线程

Node.js 的性能和效率非常高。传统的 Java 语言是一个请求开启一个线程,当请求处理完毕后就关闭这个线程。而 Node.js 则完全没有采用这种模型,它本质上就是一个单线程。**Node.js 采用的是异步的、非阻塞的模型。**指的是 Node 的主线程只有一个,为了确保主线程不被阻塞,主线程是用于接收客户端请求。但不会处理具体的任务。而 Node 的背后还有一个线程池,线程池会处理长时间运行的任务(比如 IO 操作、网络操作)。线程池里的任务是通过队列和事件循环的机制来执行。

如何用编写 Http Server

这里主要跟随视频和在线代码学习,编写Http Server ,收发GET,POST请求,实现React SSR流程等。