Node.js 教程:3 天内学习

Node.js 简介

多年来,现代 Web 应用程序已经走过了很长一段路,引入了很多流行的框架,如 bootstrap,Angular JS 等。所有这些框架都基于流行的[JavaScript](/ interactive-javascript-tutorials.html) )框架。

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

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

教学大纲

| | | | ————————————————– ————————————————– ———————————————- | ————————————————- | | [教程](/ download-install-node-js.html 下载并安装 Node.js:循序渐进指南。)|下载并安装 Node.js:分步指南。 | | [教程](/ node-js-modules-create-publish.htmlNode.js 模块:创建,发布,扩展和管理 )| Node.js 模块:创建,发布,扩展和管理| | [教程](/ node-js-create-server-get-data.htmlNode.js Http 教程:创建服务器并获取数据 ) Node.js Http 教程:创建服务器并获取数据| | [教程](/ node-js-express.htmlNode.js Express Tutorial)| Node.js Express 教程| | [教程](/ node-js-mongodb.htmlNode.js MongoDB 教程 )| Node.js MongoDB 教程| | [教程](/ node-js-promise-generator-event.htmlNode.js Promise Tutorial)| Node.js 承诺教程| | [教程](/ bluebird-promises.html蓝鸟承诺教程)|蓝鸟承诺教程| | [教程](/ node-js-generators-compare-callbacks.htmlNode.js Generators&Compare with Callbacks)| Node.js 生成器并与回调进行比较| | [教程](/ node-js-streams-filestream-pipes.htmlNode.js Streams Tutorial:Filestream,Pipes)|Node.js Streams 教程:文件流,管道| | [教程](/ node-js-testing-jasmine.html 用 Jasmine 测试 Node.js)用 Jasmine 测试 Node.js | | [教程](/ node-js-vs-angularjs.htmlNode.Js 与 AngularJS:了解差异 )| Node.Js 与 AngularJS:了解差异| | [教程](/ node-js-vs-python.htmlNode.js 与 Python:有什么区别?)| Node.js 与 Python:有什么区别? |

什么是 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 是最佳的。