Node.js入门系列(一)

admin LV9
2020-08-22 · 361 阅读
QQ图片20200822151753.png


首先要感谢很多私信和评论的小伙伴的信任和鼓励,让我有动力继续写下去。

大前端很大,大到我们常常看不到尽头,零零散散的学习总是让我们无法触类旁通,相互鼓励和"揭短"才能让自己变得更强大,所以我在文末为独行的小伙伴准备了前端大家庭,有她,前端进阶不孤独。我们仰慕技术大佬,而他们也曾像现在的我们,努力学习,苦苦探索。我也曾受益于很多前辈的提点,所以,我深知鼓励和分享对前行者有多大的帮助。一日一钱,千日千钱,绳锯木断,水滴石穿,点滴积累,终将让我们更强。如果有一天你成为了更强大的自己,如果可以,也不要忘记帮帮那些正努力进阶的前行者,无关乎利益,只因我们都有一个共同的目标。

Node.js入门系列将是一整套参考教程,从本节开始,我们正式进入Node.js。系列将以结构脑图、文字解释、概括总结、练习实例、面试考点的形式讲述知识点。虽然学习这个系列不能让你立刻涨薪10K,但学到的知识可以让你心里踏实,更有自信。在此,斗胆向你要个关注和点赞,谨以此,致敬不甘平庸的我们。

上集回顾

上集是系列的漫谈篇,主要谈了Node.js是什么,以及我们为什么要学习Node.js。

如果想再次阅览,请点击这里挑选需要阅读的章节:漫谈Node.js入门


本节学习目标

正式入门Node.js能解决什么前端痛点问题、Node.js特点及适用场景。

本节学习目录 一 Node.js能解决什么问题?二 什么项目适合选用Node.js?三 Node.js安装四 Node.js应用实例五 本节小结六 文末一、Node.js 能解决什么问题? ❶ 实现高并发用户连接

既然Node.js解决了高并发用户连接的问题,那么反过来想:传统的非Node.js的高并发存在什么问题?Node.js又是通过什么方法解决掉这个问题的呢?

传统的非Node.js的高并发存在什么问题?

在Java、PHP或ASP.NET等服务器语言中,每一个客户端连接都会为其创建一个新的线程,而每个线程耗费大约需要2MB的内存,如果如果我们的服务器是8GB内存,那么理论上最多同时为4000个左右的用户提供服务。如果要想同时为更多的用户提供服务支持,就要增加服务器的数量,这样一来,硬件成本增加了,并且呢,不同服务器之间的数据共享问题也随之而来。所以,为每一个用户连接创建一个新的线程的方案,受服务器内存限制,成为了高并发连接的瓶颈。

Node.js是通过什么改进解决掉这个问题的呢?

Node.js为了解决高并发连接问题,放弃了“为每一个用户连接创建一个新线程”的思想,改成为每一个用户连接在Node.js内部,触发一个事件。这就解决了多个用户连接耗尽服务器内存的问题。至于触发了一个什么事件、如何触发的,我们留到后面在讨论。


❷ 实现高性能服务器

严格的说,Node.js是一个用于开发各种Web服务器的开发工具。在Node.js服务器中,运行的是V8 JavaScript脚本语言。该语言能够被V8 JavaScript引擎解析执行,没错,就是你通过的Chrome 上的V8引擎,Node.js将它用到了服务器上,并且呢,还为它添加了很多新的API,以增强该引擎的能力。光这些还不足以说明Node.js实现的性能有多高,V8引擎内部使用了一种全新的语言编译技术,这种技术可以使得使用JavaScript编写的脚本与通过其他语言(如:C语言)编写的代码具有非常相似的执行效率。(为什么说这个重要呢,后面会讲到,Node.js内部提供了很多的模块,大部分模块是JavaScript编写的,而其他的一些模块是通过其他底层语言编写的,如C语言,V8引擎这种编译技术打破了语言不同造成的执行效率差异问题,使得我们可以忽略掉模块语言差异带来的问题。)


❸ 非阻塞I/O及事件循环机制

前面说到,Node.js将V8引擎用到了服务器端,实现了高性能的服务器。

JavaScript是单线程的语言,V8 JavaScript也是如此。不同于浏览器端JavaScript的是,V8 JavaScript提供了非阻塞I/O机制。什么意思呢?其实就是异步的JavaScript网络请求。在等待请求结果的时候,会继续执行请求后面的代码,不用等待数据返回,将请求返回的结果放在回调函数中处理。这种机制就称为非阻塞I/O机制。由于耗时任务不会阻塞后续代码,因此,大大提供了执行效率。当然,此处是以网络请求为例,但实际上事件可以是:文件的增删查改、

Node.js还有一个事件循环机制

Node.js中的事件循环机制与JavaScript中的事件循环机制很像,但是又有差异,多出了setImmediate 和 process.nextTick这两种异步方式,这些我们后面细讲,这里只要知道:Node.js具有事件循环机制的特点,并且呢,Node.js能实现高并发也是因为其独特的事件循环机制,这种机制与JavaScript中的事件循环机制有相同也有不同,就可以了,暂不深入去考虑。


二、什么项目适合选用Node.js?

根据我们章节中讲过的Node.js的特点,它适用的项目其实就是它的优点,总结如下:

程序需要处理大量并发的输入输出时,并且再向服务端发送请求后,等待返回结果的这段时间内,不需要处理非常复杂的逻辑。

项目示例:1)聊天服务器;同一时刻可能存在大量并发连接,而服务器端本身不存在非常复杂的处理。2)电商类服务器:秒杀、抢购、准点开卖等场景。


三、Node.js安装

Node.js安装包官网下载地址:

下载安装包,选择安装位置后一直“下一步”就可以了。



作者:gejumona
链接:https://juejin.im/post/6863351989016166407
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

版块:
java
1. 本站所有资源来源于用户上传和网络,仅作为演示数据,如有侵权请邮件联系站长!
2. 盗版,破解有损他人权益和违法作为,请各位站长支持正版!
回复

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则