Node.js入门教程合集

Node.js是一个特殊的后端服务框架,一个用前端语言写后端功能的框架。无论你是做前端还是后端的程序员,都应该接触Node.js,因为它会给你技术栈上的互补,甚至启迪你的思维方式。

介绍

Node.js本质上是使用Google的V8引擎制作出来的服务框架。V8本身是Google为了解决Chrome浏览器的性能问题而制作的前端引擎(开源)。本身依托于浏览器引擎,这也是为什么Node.js使用的是前端的JavaScript语言编程。

在Node.js中最主要的特性,即事件驱动与非阻塞I/O都与其底层的特殊实现有关。

在Node.js的底层有一个事件轮循器(Event Loop)。每当有事件注册时,会先将事件放置到事件队列(Event Queue),并通过事件轮循器顺序执行事件队列。当轮循到一个事件时,事件轮循器会为其分配一个工作线程(Worker Threads)执行该事件,事件完成后通过执行回调(Callback)返回到事件列表并通过V8引擎传递给应用(Application)。

其详细步骤为:

1、应用层发出请求给V8

2、V8通过Node.js的中间层(Bindings)传递给底层(Libuv)

3、在Libuv层中,请求会按顺序放置在事件队列(Event Queue)

4、事件轮询器(Event Loop)依次为事件队列中的事件分配工作线程(Worker Threads)

5、工作线程完成事件,并通过执行回调(Callback)返回事件列表

6、事件的执行结果通过中间层及V8返回给应用

在应用层中,发送请求后会继续执行应用层后续代码,而不需要等待事件的完成,所以是异步处理。事件处理完成后通过回调返回到应用。整个过程只由一个主线程完成,因此不存在死锁、等待的情况。

这就是Node.js的事件驱动与I/O非阻塞的实现原理。

目录合集

Node.js入门教程 第一篇 (概念原理及环境配置)

Node.js入门教程 第二篇 (HelloWorld及事件分发)

Node.js入门教程 第三篇 (模块、路由)

Node.js入门教程 第四篇 (流及文件操作)

Node.js入门教程 第五篇 (Express框架)

Node.js入门教程 第六篇 (连接使用MySql)

IDE环境

建议使用VSCode开发,内部有Node.js插件可使用。如何使用VSCode开发,可以点击这里学习。

原文地址:https://www.cnblogs.com/JHelius/p/14318881.html