Node.js基础概念

349 阅读2分钟
  • 版本:双数是稳定版,单数是非稳定版。

1. Node.js安装

官网下载,下载完后在命令行检查:输入node -v可以显示版本即可

可以使用的周边工具

  1. nrm用于切换下载源
  2. yarn(可以代替npm) 和 yrm(可以代替nrm)
  3. ts-node可以运行TypeScript和Node

node.js是什么

  1. 它是一个平台,它将多技术组合起来,让JavaSCript也能调用系统,开发后端应用
  2. c/c++实现的c-ares,http-parser,OpenSSL,zlib

2.Node.js技术架构

什么是bindings

背景

  • c/c++实现了一个http_parser库,很高效
  • 想调用这个库,需要一个中间的桥梁

bindings

  • Node.js用C++对http_parser进行封装,使它符合某些要求,封装的文件叫做http_parser_bindings.cpp
  • 用Node.js提供的编译工具将其编译为.node文件
  • JS代码可以直接require这个.node文件
  • 这样JS就能调用c++库,中间的桥梁就是binding
  • 由于Node.js提供了很多binding,所以加s
  • 这个就是bindings

3.JS与C++

4. Node.js工作流程

5.V8是什么

功能

  • 将JS源代码变成本地代码并执行
  • 维护调用栈,确保JS函数的执行函数
  • 内存管理,为所有对象分配内存
  • 垃圾回收,重复利用无用的内存
  • 实现JS的标准库

注意

  • V8不提供DOM API
  • V8执行JS时单线程的
  • 可以开启两个线程分别执行JS
  • V8本身是包含多个线程,如垃圾回收为单个线程
  • 自带event loop 但 Node.js基于libuv自己做了一个

6.Event Loop是什么

什么是Event

  • 计时器到期了
  • 文件可以读取了,读取出错了
  • socket有内容了,关闭了

什么是Loop

  • loop就是循环,比如while(true)循环
  • 由于事件是分优先级的,所以处理起来也是分先后的
  • 所以Node.js需要按顺序轮询每种事件
  • 这种轮询往往都是循环的

Event Loop

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

// todo

7.Node.js API文档

官方文档

链接