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

85 阅读2分钟

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

Node.js的应用场景

前端工程化、Web服务端应用、Electron跨端桌面应用

Node.js运行时结构-特点

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

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

跨平台:Node.js跨平台+JS无需编译环境

SSR

特点

相比传统HTML模板引擎会避免重复编写代码

相比SPA首屏渲染更快,SEO友好

缺点是通常qps较低,前端代码编写时需要考虑服务端渲染情况

难点

需要处理打包代码

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

移除对服务端无意义的副作用,或重置环境

V8 Inspector

开箱即用、特性丰富强大、与前端开发一致、跨平台

应用场景

查看console.log内容;breakpoint;高CPU、死循环:cpuprofile;高内存占用:heapsnapshot;性能分析

部署

解决的问题

守护进程:当进程退出时,重新拉起;多进程:cluster便捷地利用多进程;记录进程状态,用于诊断

容器环境:通常有健康检查的手段,只需考虑多核cpu利用率即可

诊断/追踪

诊断是一个低频、重要同时也相当有挑战的方向。是企业衡量自己能否依赖一门语言的重要参考

难点是需要了解Node.js底层,需要了解操作系统以及各种工具

WASM,NAPI

Node.js是执行WASM代码的天然容器,和浏览器WASM是同一运行时,同时Node.js支持WASI