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开发,可以点击这里学习。
作者:Mr.Jimmy
出处:https://www.cnblogs.com/JHelius
联系:yanyangzhihuo@foxmail.com
如有疑问欢迎讨论,转载请注明出处