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

❶ 实现高并发用户连接既然Node.js解决了高并发用户连接的问题,那么反过来想:传统的非Node.js的高并发存在什么问题?Node.js又是通过什么方法解决掉这个问题的呢?传统的非Node.js的高并发存在什么问题?在Java、PHP或等服务器语言中,每一个客户端连接都会为其创建一个新的线程,而每个线MB的内存,如果如果我们的服务器是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是单线 JavaScript也是如此。不同于浏览器端JavaScript的是,V8 JavaScript提供了非阻塞I/O机制。什么意思呢?其实就是异步的JavaScript网络请求。在等待请求结果的时候,会继续执行请求后面的代码,不用等待数据返回,将请求返回的结果放在回调函数中处理。这种机制就称为非阻塞I/O机制。由于耗时任务不会阻塞后续代码,因此,大大提供了执行效率。当然,此处是以网络请求为例,但实际上事件可以是:文件的增删查改、Node.js还有一个事件循环机制Node.js中的事件循环机制与JavaScript中的事件循环机制很像,但是又有差异,多出了setImmediate 和 process.nextTick这两种异步方式,这些我们后面细讲,这里只要知道:Node.js具有事件循环机制的特点,并且呢,Node.js能实现高并发也是因为其独特的事件循环机制,这种机制与JavaScript中的事件循环机制有相同也有不同,就可以了,暂不深入去考虑。

根据我们章节中讲过的Node.js的特点,它适用的项目其实就是它的优点,总结如下:程序需要处理大量并发的输入输出时,并且再向服务端发送请求后,等待返回结果的这段时间内,不需要处理非常复杂的逻辑。项目示例: 1)聊天服务器;同一时刻可能存在大量并发连接,而服务器端本身不存在非常复杂的处理。 2)电商类服务器:秒杀、抢购、准点开卖等场景。

Node.js安装包官网下载地址:下载安装包,选择安装位置后一直“下一步”就可以了。四、Node.js应用实例安装好以后,开始我们第一个项目,输出“Hello World”步骤一:打开代码编辑器,新建一个文件,保存为hello.js 步骤二:在页面中,使用require引入模块(require的引入方式是common.js的引入方式),代码为:

复制代码步骤三:我们使用http.createServer() 方法创建服务器,并使用 listen 方法绑定 8888 端口。 函数通过 request, response 参数来接收和响应数据。整个页面的代码写法如下:

复制代码步骤四:通过上面的代码,我们就完成了一个可以工作的HTTP服务器。现在,到了执行的时候了,打开一个终端,路径定位到hello.js目录下(如果是在vscode中,可以按Ctrl + ` 调出终端),接下来在终端中输入命令:

本节主要是了解Node.js能解决什么问题,有什么特点,适用哪些项目。总结如下:

Node.js编写前需要先安装一个Node.js软件,然后才能正常使用;

Node.js编写的文件也是以.js结尾的js文件,跟浏览器端编写的js文件一样;

Node.js文件运行需要使用到终端命令执行,然后才能在浏览器中呈现,而浏览器端js只需要用浏览器打开就可以;

Node.js编写代码时,常常需要引入模块,还会使用到模块提供的很多方法和属性,而浏览器端js使用的是ECMA提供的API和BOM对象提供的API,基本不需要引入模块,而且引入方式也不同,Node.js遵循common.js标准,使用require引入一个模块,而浏览器端js遵循ES modules标准,通过import引入文件或模块;模块的知识会放到下一节细讲,本节主要是先体验,有初印象。

Node.js通过终端运行,不存在兼容性问题,而浏览器端JavaScript由于依赖于浏览器环境,因此浏览器不同可能会出现兼容性问题。

我建了一个前端小白交流群,私信我,进入交流群。我会给大家分享我收集整理的各种学习资料,组织大家一起做项目练习,帮助大家匹配一位学习伙伴互相监督学习,欢迎加入

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注