[ Node.js 学习 | 青训营笔记]

85 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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. 解决社区问题,促进社区发展;