这是我参与「第五届青训营 」伴学笔记创作活动的第 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