node.js 为何如此流行?

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
Node.js服务器技术用于创建和运行各种Web应用程序,与Ruby On Rails,Spring Framework和ASP.NET相似。 它利用JavaScript作为主要语言,它是一个轻量级的内置Web服务器,并且通过节点包管理器(NPM)管理了大量的插件,可让您自定义构建应用程序以满足您的需求。 它可能听起来像任何其他好的网络技术,但它具有某些功能,使其成为开发人员构建广泛的Web应用程序的受欢迎的选择。

它是无处不在的JavaScript

Node.js如此受欢迎的最大原因之一是因为它使用JavaScript作为其主要语言来构建Web应用程序。 说实话,JavaScript现在是在浏览器中开发Web应用程序的唯一选择。 还有什么! 引入了一个新的,稳健的框架来引导开发人员。 使用Node.js,JavaScript在服务器上已经彻底革新了。 这种语言对于大多数网络开发者是很常见的,当然也是当今这个世界的驱动。 据专家说,这个趋势不会很快消失。

由于JavaScript是大多数开发人员在某个时间点知道或已经使用的语言,因此从另一个Web技术到Node.js的转换是轻而易举的。 这使得它成为Web开发人员的首选。

快如闪电

V8具有以快速的速度编译和执行JavaScript的能力,主要是因为它将JavaScript编译成本机代码。除此之外,Node.js还有一个神奇的事件循环,它是以一个异步方式执行所有I / O操作的单个线程。在Node.js中,当应用程序必须执行I / O操作时,它会向事件循环发送异步任务和回调操作,然后继续执行程序的其余部分。完成同步操作后,事件循环将自动返回到执行回调任务。这与传统的循环非常不同,传统的循环消耗了大量的内存,非常难以执行。

因此,在Node中非常快速地执行文件系统,网络连接和数据库的读/写操作。它允许开发人员构建快速和高度可扩展的网络应用程序,能够处理大量同时具有高吞吐量的连接。

它是轻量级的

通常,Node.js使用基本的事件驱动架构。 这意味着它上执行的一切,包括每一个操作和调用,都是一系列异步回调。 这使得Node能够在单个线程上运行,与其他针对每个客户端请求产生新线程的Web技术不同。 这不仅使其轻巧,而且还构成了Node的非阻塞I / O功能的基础。

低学习成本

Node.js的另一个主要优点是语言重用。像Spring或ASP.NET这样的其他网络技术要求开发人员使用另一种语言来编写服务器端的代码,无论是VB.NET,Java还是C#。这意味着所有功能必须包括两种语言 - 一种在客户端,另一种在服务器端。相反,Node仅在客户端和服务器端使用JavaScript。因此,Web开发人员必须在所有层中以单一语言进行交互。除此之外,这可以一遍又一遍地重新用于将来的通信。

高性能

PayPal使用Node.js,并且报告每秒钟的请求数量翻了一番,并将响应时间缩短了35%。另一方面,零售巨头沃尔玛则在2013年的Node.js中获得了卓越的经验,当时他们将所有通过Node.js进行的移动通信业务都放在黑色星期五,这是当年最繁忙的购物时间。令人惊讶的是,在黑色星期五,沃尔玛服务器的CPU利用率只有1%,而在线部署的用户达到了2亿。 LinkedIn,全球网站,从Ruby转移到Node处理移动流量,将服务器数量减少到30到3,即减少了近90%。新系统的速度提高了20倍。所有这些数字清楚地表明了Node.js的性能能力。

跨平台功能

Node.js也是跨平台的。 与Java类似,Node运行时适用于嵌入式系统,Linux和Unix,Windows服务器和桌面以及Mac OS X的所有标准版本。这意味着您可以选择您的软件,只要您小心不要写 任何特定于您期望的文件系统或结构的任何内容,您都可以期望它能在任何地方运行。 这对于可移植性是非常有利的,而不必编写新的代码或实现新的库。

占用空间小

Node.js如此受欢迎的另一个原因是运行它的空间很小。 这使得可以将Node运行时嵌入到用于物联网(IoT)应用的低功耗设备,例如支持Web的家庭恒温器或车库门开启器。 这不是一个沉重的系统,所以你可以把它放在嵌入式,小型和便宜的东西上。 这样可以轻松地在Raspberry Pi或Arduino板上运行Node,并执行小型自动化任务,而无需担心语言的膨胀。

易于修改和维护

Node.js采用模块化设计, Node.js使用Module模块去划分不同的功能,以简化应用的开发。Modules模块有点像C++语言中的类库。每一个Node.js的类库都包含了十分丰富的各类函数,比如http模块就包含了和http功能相关的很多函数,可以帮助开发者很容易地对比如http,tcp/udp等进行操作,还可以很容易的创建http和tcp/udp的服务器。

NPM: The Node Package Manager

当我们讨论 Node.js 的时候,一个绝对不应该忽略地方就是默认内置的模块管理工具 —— NPM。 其灵感来源与 Ruby Gems(具有版本和依赖管理功能,可以通过在线资料库便捷安装可重用的组件的管理工具)。

当然上面举了这么多Node.js的优点,Node.js的优点远不止这些,当然说了Node.js这么多优点,其实也存在一些缺点的,毕竟不能面面俱到,总之Node.js能响应大量的并发请求,Node.js适合运用在高并发、I/O密集、少量业务逻辑的场景。