什么是Node.js?

【个人理解】什么是Node.js、V8引擎、事件驱动、非阻塞式I/O_非阻塞

Node.js 是一个基于 ChromeV8 引擎的 JS 运行环境,允许你在服务器上构建你的应用程序。它采用了一套事件驱动、非阻塞式I/O模型,让 JS 可以运行在服务器上的开发平台。

为什么要用Node.js?

为什么现在主流前端框架Vue、React等都需要基于Node环境进行开发呢?

  1. 基本原因1:不基于Node环境开发,首先这些框架就使用不了
  2. 基本原因2:单个js文件都无法执行,更不可能运行那些 .vue,.jsx等文件
  3. 它有构建工具:前端框架通常需要使用构建工具来处理代码转换、模块打包、资源压缩等任务。而Node环境提供了强大的构建工具,如Webpack和Parcel,这些工具可以帮助开发者更高效地构建和打包前端应用。
  4. 它有包管理器:前端框架很多都需要各种依赖包,Node环境提供了npm,它是前端开发中常用的包管理器。通过npm,开发者可以方便地安装、管理和分享代码包,这对于前端框架的开发和使用非常重要。
  5. 它可以在服务器端渲染:Node环境使得前端框架可以在服务器端进行渲染,生成完整的HTML页面后再发送给客户端。这种方式可以提升首屏加载速度和搜索引擎优化(SEO)效果,因此在一些需要更好性能和用户体验的场景下很有用。


什么是ChromeV8 引擎?

【个人理解】什么是Node.js、V8引擎、事件驱动、非阻塞式I/O_Node.js_02

V8 是Google Chrome 的一部分,也是Node.js 的一部分。它是解释器、编译器。通俗来讲,就是我们直接写的js程序语言,计算机底层CPU根本不知道是什么,CPU只认自己的指令集,而V8引擎就是做这件事的,且它能编译出不同平台的指令集,实现跨平台。(当然它的工作远不止这些,这里只说明它的主要工作)


什么是事件驱动?

事件驱动是一种设计模型,是一种编程思想(不仅限于前端)。

事件驱动其中程序的执行是由事件的发生和处理驱动的。在事件驱动编程中,程序通过监听和响应事件来执行相应的操作。

事件是指程序中发生的特定动作或状态的变化,例如用户点击按钮、键盘输入、网络请求完成等。当事件发生时,程序会触发相应的函数或方法来处理事件。

事件驱动编程通常使用事件循环机制。事件循环不断地监听事件,当事件发生时,调用相应的事件处理器或回调函数。事件驱动编程可以实现非阻塞的异步操作,提高程序的并发性能。

【个人理解】什么是Node.js、V8引擎、事件驱动、非阻塞式I/O_Node.js_03

什么是非阻塞式I/O?

非阻塞式I/O是一种处理输入输出的方式,它不会阻塞程序的执行。在传统的阻塞式I/O中,当程序执行一个I/O操作时,程序会一直等待I/O操作完成,然后再继续执行后续的代码。这种方式会导致程序在等待I/O操作完成时无法执行其他任务。

相比之下,非阻塞式I/O使用一种异步的方式处理I/O操作。当程序执行一个I/O操作时,它会立即返回,而不需要等待I/O操作完成。程序可以继续执行后续的代码,而不会被阻塞。当I/O操作完成后,程序会得到通知,可以处理I/O操作的结果。

非阻塞式I/O通常与事件循环结合使用,例如在异步编程框架中。这种方式可以提高程序的并发性能,允许程序同时处理多个I/O操作,而不会被阻塞。

【个人理解】什么是Node.js、V8引擎、事件驱动、非阻塞式I/O_非阻塞_04


【个人理解】什么是Node.js、V8引擎、事件驱动、非阻塞式I/O_事件驱动_05