Node.js基础

32 阅读2分钟

Node.js安装

Mac系统:首先安装homebrew;

brew install node@8node.js一般安装双数版本,较为稳定。

安装后可以node -v查询版本。

我这里安装的时候18版本。 截屏2023-03-21 18.41.57.png

Node.js是什么

首先Node.js不是web框架所以不能把Node.js与Flask或Spring对比;其次Node.js不是编程语言,Node.js并不是后端的JS,所以不能把Node.js与Python或者PHP对比。

Node.js是一个平台:它将多种技术组合起来,让JS也能调用系统接口、开发后端有应用。

Node.js用到的技术:V8引擎,libuv,C/C++实现的C-areas、http-parser、OpenSSl、zlib等库。


Node.js技术架构

截屏2023-03-21 19.16.55.png

bindings

Node.js用C++对http_parser进行封装,使它符合某些要求,封装的文件叫做http_parser_bindings.cpp。

用Node.js提供高的编译工具将其编译为.node文件

JS代码可以直接require这个.node文件

这样JS就能调用C++库,中间的桥梁就是binding。

Node.js提供了很多binding,这就是bindings。

EventLoop是什么

什么是Event:计时器到期了、文件可以读取/读取出错了、socket有内容了/关闭了。

什么是Loop:Loop就是循环,因为事件是分优先级的,所以事件的处理也会有先后顺序。Node.js需要按顺序轮询每种事件。这种轮询往往也是循环的。

Event Loop ---- 操作系统可以触发事件,JS可以处理事件。EventLoop就是对事件处理顺序的管理。


三种事件类型:

setTimeout(f1,100)
fs.readFile('/1.txt',f2)
server.on('close',f3)

如果同时触发,Node会怎么办呢?这三种事件一定会有某种顺序也就是优先级。这种优先级是需要人为规定的。

顺序示意图:

截屏2023-03-22 14.15.01.png

重点阶段

  • timers 检查计时器
  • poll轮询,检查系统事件
  • check 检查 setImmediate 回调
  • 其他阶段用的并不多

Tips: Node.js大部分时间都在poll轮询阶段;大部分事件都在poll阶段被处理,比如文件、网络请求。

Node.js提供的API

推荐链接

截屏2023-03-22 14.54.01.png