feng xiaohan

Nodejs

简介

  • Nodejs 是 JS 的运行时环境,依赖于 v8 引擎,v8 引擎由 c/c++编写,所以 js 代码会转化为 c/c++后在执行;
  • Nodejs 使用异步 I/O 和事件驱动设计理念,可以高效地处理大量并发请求,提供了非阻塞式 I/O 接口和事件循环机制;

    异步 I/O 最终都是由 libuv 事件循环库去实现的。

  • Nodejs 依靠 libuv,适合处理一些 IO 密集型应用

    由于 js 的单线程,很容易造成 cpu 占用率高,不适合 cpu 密集型应用(图像处理、音频处理等需要大量数据结构 + 算法);如果非要写可以使用 c++ 插件或 Nodejs 提供的 cluster。

应用

常见的一些库和框架都需要依赖 nodejs 环境。

其他

定义全局变量

Nodejs 可以使用global.xx去定义一个任何模块都能访问到的全局变量。

但是 ES2020 新增了一个globalThis可以兼容浏览器(window)和 Nodejs 的全局变量globalThis会自己根据环境变换为 window 或 global,可实现跨平台访问全局变量。

内置 API

  • __dirname:当前运行文件所在目录(绝对路径)
  • __filename:当前运行文件所在目录的执行文件(绝对路径)
  • Buffer
  • process
  • fetch

    node18+ 支持,和浏览器一样。