Node.js基本上是一个能够执行JavaScript的服务器。Node.js的核心是一个服务器引擎,您可以对其进行更改,它将在您进行设置后正常工作。它提供异步和事件驱动的API,因此对它的请求作为循环(事件循环)处理,这就是Node.js本质上是运行时的原理。作为JavaScript生态系统的一部分,它对于应用程序开发来说非常棒,您可以毫不费力地控制它与不同的JS工具,UI连接。换句话说,它是一个开源和跨平台系统,只需几行代码即可构建Web应用程序。
这是官方Node.js网站给出的正式定义:
Node.js® is a "JavaScript runtime built on Chrome's V8 JavaScript engine".
(Node.js®是“基于Chrome的V8 JavaScript引擎构建的JavaScript运行时”。)
此外,Node.js为开发提供了新的机会。现在开发人员可以在前端和后端使用JavaScript。Node.js包含用于文件,套接字和HTTP通信的内置异步I / O库。此外,由于Node.js的单线程事件循环体系结构,开发人员还可以以更快捷,更简单的方式执行IO密集型操作(例如响应超文本传输协议或HTTP,请求)。
Node.js的主要思想是:在面向跨分布式设备运行的数据密集型实时应用程序时,使用非阻塞,事件驱动的I / O保持轻量级和高效。
Node.js的发明者Ryan Dahl表示,受到Gmail等应用程序的启发,他的目标是设计一个用于构建具有实时推送功能的网站的系统。因此,事件驱动的编程成为Node.js的核心。
“通过事件驱动编程,Tom Hughes-Croucher的 Node:Up and Running的作者”说,“你使用的实际资源量要小得多,而且你可以从更少的服务器中获得更多。”
Node.js有什么用?
简而言之,Node.js应用程序旨在使用非阻塞I / O和异步事件最大化吞吐量和效率。Node.js应用程序运行单线程,尽管它使用多个线程来处理文件和网络事件。由于其异步性,Node.js通常用于实时应用程序。
简单地说,Node.js是一个巨大的JavaScript生态系统,非常适合实时使用。
为了在内部执行代码,Node.js使用Google V8 JavaScript引擎,大部分基本模块都是用JavaScript编写的。用于HTTP和套接字支持的异步I / O库允许Node.js充当Web服务器,而无需Apache等其他软件。
结合节点包管理器(NPM)的普遍性,Node.js已经确立了其作为服务器端JavaScript的事实标准的地位。
因此,虽然有一些关于Node.js使用的讨论,但最佳用例是什么?支付网关,媒体,电子商务平台,社交媒体,企业网络应用程序以及移动应用程序的后端/ API是Node.js的潜在应用领域。
聊天应用程序是最典型的实时应用程序,其中Node.js显示它在处理多个用户,密集数据,大流量和跨设备运行方面可以做些什么。此外,在制作聊天应用程序时学习Node非常棒,因为它几乎涵盖了典型Node.js应用程序的所有编程。
由于HTML,服务器端Web应用程序不是Node.js的典型用例。但是,如果您组合Node.js和Express.js,您可以在服务器端制作示例性Web应用程序。
Node.js在数据流中具有一些积极的亮点,HTTP请求和响应实际上是数据流。例如,在简单地传输数据时处理数据,例如用于声音/视频编码。
Node.js的另一个用例是监控仪表板,以收集有关网站访问者和可视化的持续信息。用户统计数据以及能够立即查看他们正在做什么的能力绝对是企业的一个很好的附加功能。
Node.js从未被用来解决计算扩展问题。它是为了解决I / O扩展问题,它做得非常好。作为单线程,Node.js可能是用作计算服务器的Web服务器的不良选择,因为大量计算会阻塞服务器的响应。如果您的用例不包含CPU升级活动或获取任何阻塞资源,您可以利用Node.js的优势并制作快速且适应性强的系统应用程序。