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