node介绍

1 node能解决的问题是什么

  1. Node的首要目标是提供一种简单的,用于创建高性能服务器的开发工具
  2. Web服务器的瓶颈在于并发的用户量,对比Java和Php的实现方式

2 node是什么

  1. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,让JavaScript的执行效率与低端的C语言的相近的执行效率。
  2. Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
  3. Node.js 的包管理器 npm,是全球最大的开源库生态系统。

3 node的特点是什么

3.1 为什么node是单线程的

  1. 这是由 Javascript 这门脚本语言的用途决定的。
  2. Web Worker并没有改变 JavaScript 单线程的本质。

3.2 浏览器模型

  1. 用户界面-包括地址栏、前进/后退按钮、书签菜单等
  2. 浏览器引擎-在用户界面和呈现引擎之间传送指令
  3. 呈现引擎-又称渲染引擎,也被称为浏览器内核,在线程方面又称为UI线程
  4. 网络-用于网络调用,比如 HTTP 请求
  5. 用户界面后端-用于绘制基本的窗口小部件,UI线程和JS共用一个线程
  6. JavaScript解释器-用于解析和执行 JavaScript 代码
  7. 数据存储-这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie、

3.3 除JS线程和UI线程之外的其它线程

  1. 浏览器事件触发线程
  2. 定时触发器线程
  3. 异步HTTP请求线程

3.4 任务队列

  1. 所以的任务都是在主线程执行的,形成一个执行栈
  2. 主线程之外,还有一个任务队列,只要异步任务执行有结果,就会在任务队列中放置一个事件。
  3. 一旦执行栈中的所以任务执行完毕,系统就会读取任务队列,看看里面有哪些事件,对应的是哪些异步任务,在任务状态为结束等待是,进去执行栈开始执行
  4. 主线程不断重复上面的第三步骤

3.5 event loop 事件循环

主线程从任务队列中读取事件的过程在不断循环,整个运动称为事件循环在这里插入图片描述

3.6node 的事件循环机制

在这里插入图片描述

  1. V8引擎解析JavaScript脚本。
  2. 解析后的代码,调用Node API。
  3. libuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个Event Loop(事件循环),以异步的方式将任务的执行结果返回给V8引擎。
  4. V8引擎再将结果返回给用户。
发布了1 篇原创文章 · 获赞 2 · 访问量 606

猜你喜欢

转载自blog.csdn.net/qqlovefanfan/article/details/90473995
今日推荐