这是我参与「第四届青训营」笔记创作活动的的第13天.
今天首先介绍了一下 Node.js 的应用场景,包括前端工程、web服务端、Electron跨端桌面应用.比如对于web服务端来说,它的学习曲线较为平缓,相对开发效率较高,运行效率更加接近我们常见的编译语言.另外社区生态的丰富以及工具链的成熟(比如npm、 V8、Inspector)与前端结合提高了开发效率.在面对竞争激烈的环境下Node.js 凸显了自己独特的优势.
再来看看Node.js 运行时有哪些结构,首先异步1O,它是当 Node.js 执行 V/0 操作时,会在响应返回后恢复操作,并不是阻塞线程和占用额外内存去waiting.然后是JS单线程,一般为JS线程+uv 线程池+V8 任务线程池+V8 Inspector 线程.它的优点是不用考虑多线程状态同步问题,也就不需要Lock,同时它还能比较高效地利用系统资源.但是它的阻寒会产生更多负面影响,需要通过多进程或多线程去解决.
在编写http server中,SSR (server side rendering)相比传统的HTML模版引擎,它避免重复编写代码,相比 SPA (single page application):首屏渲染更快,比SEO 更友好.但是通常 gps 较低,在前端代码编写时需要特别考虑服务端渲染问题.通过部署要解决这几个问题:守护进程,当进程退出时,重新拉起;多进程:cluster 便捷地利用多进程;记录进程状态,用于诊断.它的容器环境通常有健康检查的手段,只需考虑多核cpu利用率即可.场景下V8 Inspector呈现开箱即用、特性丰富强大、与前端开发一致、跨平台的优势.多场景包括查看 console.log 内容、breakpoint、高 CPU、死循环:cpuprofile、高内存占用:heapsnapshot、性能分析.
今天主要学习了 Node.js 的应用场景、 Node.js 运行时结构、如何用编写 Http Server.在课后我了解并尝试使用更多 Node.js 的原生模块,并学习在 npm 上搜索并安装模块,感谢老师们的分享.