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 的一些關鍵功能
- 非同步事件驅動的 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)
)。這稱為回撥函式。 - 所以這裡發生的是檔案讀取操作將在後臺啟動。並且在讀取檔案時可以同時進行其他處理。檔案讀取操作完成後,將呼叫此匿名函式,並將
讀取資料已完成
文字寫入控制檯日誌。
- 節點使用 V8 JavaScript Runtime 引擎,這是 Google Chrome 使用的引擎。Node 在 JavaScript 引擎上有一個包裝器,它使執行時引擎更快,因此 Node 內的請求處理也變得更快。
- 併發請求的處理 - Node 的另一個關鍵功能是能夠在單個程序上以極小的開銷處理併發連線。
- Node.js 庫使用 JavaScript - 這是 Node.js 開發的另一個重要方面。開發社群的一個主要部分已經精通 javascript,因此,對於瞭解 javascript 的開發人員來說,Node.js 中的開發變得更加容易。
- 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 最適合在流媒體或基於事件的實時應用程式中使用
- 聊天應用程式
- 遊戲伺服器 - 需要一次處理數千個請求的快速和高效能伺服器,這是一個理想的框架。
- 適用於協作環境 - 這適用於管理文件的環境。在文件管理環境中,你將有多個人釋出文件,並通過簽出和簽入文件來進行不斷更改。因此,Node.js 適用於這些環境,因為只要在文件管理環境中更改文件,就可以觸發 Node.js 中的事件迴圈。
- 廣告伺服器 - 再次在這裡你可以有數千個請求從中央伺服器提取廣告,Node.js 可以是一個理想的框架來處理這個問題。
- 流伺服器 - 使用 Node 的另一個理想方案是用於多媒體流伺服器,其中客戶端具有從該伺服器提取不同多媒體內容的請求。
當你需要高階別的併發性但較少的專用 CPU 時間時,Node.js 很好。
最重要的是,由於 Node.js 是基於 javascript 構建的,因此當你構建基於相同 javascript 框架的客戶端應用程式時,它最適合。
何時不使用 Node.js
Node.js 可以用於許多具有各種用途的應用程式,唯一不應該使用它的情況是應用程式需要很長的處理時間。
節點結構為單執行緒。如果需要任何應用程式在後臺執行一些長時間執行的計算。因此,如果伺服器正在進行一些計算,它將無法處理任何其他請求。如上所述,當處理需要較少的專用 CPU 時間時,Node.js 是最佳的。