Nodejs 教程

Node.js 简介

多年来,现代 Web 应用程序已经走过了很长一段路,引入了很多流行的框架,如 bootstrap,Angular JS 等。所有这些框架都基于流行的 JavaScript 框架。

但是,当开发基于服务器的应用程序时,只有一种空白,这就是 Node.js 进入图片的地方。

Node.js 也基于 JavaScript 框架,但它用于开发基于服务器的应用程序。在完成整个教程的过程中,我们将详细介绍 Node.js 以及如何使用它来开发基于服务器的应用程序。

什么是 Node.js?

Node.js 是一个开源的跨平台运行时环境,用于开发服务器端 Web 应用程序。Node.js 应用程序是用 JavaScript 编写的,可以在各种操作系统上运行。

Node.js 基于事件驱动架构和非阻塞输入/输出 API,旨在优化应用程序的吞吐量和实时 Web 应用程序的可伸缩性。

在很长一段时间内,可用于 Web 开发的框架都基于无状态模型。无状态模型是在一个会话中生成的数据(例如有关用户设置和发生的事件的信息)未在与该用户的下一个会话中使用的情况。

必须做很多工作来维护用户请求之间的会话信息。但是使用 Node.js,最终有一种方法可以使 Web 应用程序具有实时的双向连接,客户端和服务器都可以启动通信,允许它们自由地交换数据。

为什么要使用 Node.js?

我们将在接下来的章节中了解 Node.js 的真正价值,但是它使这个框架如此着名的原因是什么。多年来,大多数应用程序都基于无状态请求 - 响应框架。在这些类型的应用程序中,开发人员应确保正确的代码到位,以确保在用户使用系统时维护 Web 会话的状态。

但是使用 Node.js Web 应用程序,你现在可以实时工作并进行双向通信。维护状态,客户端或服务器可以开始通信。

Node.js 的功能

我们来看看 Node.js 的一些关键功能

  1. 异步事件驱动的 IO 有助于并发请求处理 - 这可能是 Node.js 的最大卖点。此功能基本上意味着如果 Node 收到某个输入/输出操作的请求,它将在后台执行该操作并继续处理其他请求。

    这与其他编程语言截然不同。下面的代码给出了一个简单的例子

var fs = require('fs'); 
          fs.readFile("Sample.txt",function(error,data)
          {
                console.log("Reading Data completed");
     });
  • 上面的代码片段着眼于读取名为 Sample.txt 的文件。在其他编程语言中,下一行处理只会在读取整个文件后发生。
  • 但是在 Node.js 的情况下,要注意的代码的重要部分是函数的声明(function(error,data))。这称为回调函数。
  • 所以这里发生的是文件读取操作将在后台启动。并且在读取文件时可以同时进行其他处理。文件读取操作完成后,将调用此匿名函数,并将 读取数据已完成 文本写入控制台日志。
  1. 节点使用 V8 JavaScript Runtime 引擎,这是 Google Chrome 使用的引擎。Node 在 JavaScript 引擎上有一个包装器,它使运行时引擎更快,因此 Node 内的请求处理也变得更快。
  2. 并发请求的处理 - Node 的另一个关键功能是能够在单个进程上以极小的开销处理并发连接。
  3. Node.js 库使用 JavaScript - 这是 Node.js 开发的另一个重要方面。开发社区的一个主要部分已经精通 javascript,因此,对于了解 javascript 的开发人员来说,Node.js 中的开发变得更加容易。
  4. Node.js 框架有一个活跃且充满活力的社区。由于活动社区,始终可以为框架提供密钥更新。这有助于使框架始终与 Web 开发的最新趋势保持同步。

谁使用 Node.js

Node.js 被各种大公司使用。以下是其中一些列表。

  • Paypal - Paypal 内的很多网站也开始向 Node.js 过渡。
  • LinkedIn - LinkedIn 正在使用 Node.js 为他们的[Mobile](/ mobile-testing.html)服务器供电,这些服务器支持 iPhone,Android 和移动网络产品。
  • Mozilla 已经实现了 Node.js 以支持具有 5 亿次安装的浏览器 API。
  • Ebay 在 Node.js 中托管他们的 HTTP API 服务

何时使用 Node.js

Node.js 最适合在流媒体或基于事件的实时应用程序中使用

  1. 聊天应用程序
  2. 游戏服务器 - 需要一次处理数千个请求的快速和高性能服务器,这是一个理想的框架。
  3. 适用于协作环境 - 这适用于管理文档的环境。在文档管理环境中,你将有多个人发布文档,并通过签出和签入文档来进行不断更改。因此,Node.js 适用于这些环境,因为只要在文档管理环境中更改文档,就可以触发 Node.js 中的事件循环。
  4. 广告服务器 - 再次在这里你可以有数千个请求从中央服务器提取广告,Node.js 可以是一个理想的框架来处理这个问题。
  5. 流服务器 - 使用 Node 的另一个理想方案是用于多媒体流服务器,其中客户端具有从该服务器提取不同多媒体内容的请求。

当你需要高级别的并发性但较少的专用 CPU 时间时,Node.js 很好。

最重要的是,由于 Node.js 是基于 javascript 构建的,因此当你构建基于相同 javascript 框架的客户端应用程序时,它最适合。

何时不使用 Node.js

Node.js 可以用于许多具有各种用途的应用程序,唯一不应该使用它的情况是应用程序需要很长的处理时间。

节点结构为单线程。如果需要任何应用程序在后台执行一些长时间运行的计算。因此,如果服务器正在进行一些计算,它将无法处理任何其他请求。如上所述,当处理需要较少的专用 CPU 时间时,Node.js 是最佳的。