这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天。
Node.js是一种JS解释器,在当今时代有着优秀的地位。
一、Node.js现状:虽然竞争激烈,但是Node.js地位难以替代
独特优势:
1. 学习曲线平缓,开发效率较高
2. 运行效率接近常见的编译语言
3. 社区生态丰富及工具链成熟 (npm,V8 inspector)
4. 与前端结合的场景会有优势(SSR)
二、特点
1.异步
当Node.js 执行I/O操作时,会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待
2.单线程
JS单线程
实际: JS线程+uv线程池+V8任务线程池+V8 Inspector线程
优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源;
缺点:阻塞会产生更多负面影响、
3.跨平台
开发成本低,学习成本低
三、编写Http Sever - Debug
场景:
查看console.log内容breakpoint
高CPU、死循环:cpuprofile
大有用:heapsnapshot
性能分析
解决办法:多进程或多线程
进程
1. 进程负责为程序的运行提供必备的环境
2. 进程就相当于工厂中的车间
线程
1. 线程是计算机中的最小的计算单位,线程负责执行进程中的程序
2. 线程就相当于工厂中的工人
四、编写Http Sever - 部署
部署要解决的问题
守护进程:当进程退出时,重新拉起
多进程:cluster便捷地利用多进程
记录进程状态,用于诊断
容器环境
通常有健康检查的手段,只需考虑多核cpu利用率即可
Node.js贡献代码好处:
1. 从使用者的角色逐步理解底层细节,可以解决更复杂的问题;
2. 自我证明,有助于职业发展;
3. 解决社区问题,促进社区发展;