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 的一些關鍵功能
- 非同步事件驅動的 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 是最佳的。