Node.js 簡介

Node.js 是一個開放原始碼且跨平台的 JavaScript 執行環境。它是一個適用於幾乎任何類型的專案的流行工具!

Node.js 使用 Google Chrome 的核心 V8 JavaScript 引擎,在瀏覽器之外運行。這使得 Node.js 具有非常高的性能。

Node.js 應用程式在單一進程中運行,而不是為每個請求創建新的執行緒。Node.js 在其標準庫中提供一組異步 I/O 原語,防止 JavaScript 代碼阻塞,一般情況下,Node.js 中的庫都是使用非阻塞範式編寫的,使阻塞行為成為例外而不是規範。

當 Node.js 執行 I/O 操作時,例如從網路讀取、訪問數據庫或文件系統時,Node.js 不會阻塞執行緒並浪費 CPU 週期等待,而是在收到回應後恢復操作。

這使得 Node.js 能夠在單個服務器上處理成千上萬個並行連接,而無需引入管理線程並發的負擔,這可能是錯誤的重要來源。

Node.js 具有獨特的優勢,因為數百萬為瀏覽器編寫 JavaScript 的前端開發人員現在能夠撰寫除客戶端代碼外的服務器端代碼,而無需學習完全不同的語言。

在 Node.js 中,可以毫無問題地使用新的 ECMAScript 標準,因為您無需等待所有用戶更新其瀏覽器 - 您可以通過更改 Node.js 版本來決定使用哪個 ECMAScript 版本,您還可以通過運行帶有標誌的 Node.js 來啟用特定的實驗性功能。

一個示例 Node.js 應用程式

Node.js 最常見的示例 Hello World 是一個 Web 服務器

const { createServer } = require('node:http');

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

要運行此片段,請將其保存為 server.js 文件,並在終端中運行 node server.js

此代碼首先包含了 Node.js 的 http 模塊

Node.js 擁有一個極好的 標準程式庫,包括對網絡的一流支援。

httpcreateServer() 方法創建一個新的 HTTP 伺服器並返回它。

伺服器被設置為在指定的端口和主機名上監聽。當伺服器準備就緒時,回調函數被調用,這個案例中通知我們伺服器正在運行。

每當收到一個新的請求時,將調用 request 事件,提供兩個對象:請求(一個 http.IncomingMessage 對象)和回應(一個 http.ServerResponse 對象)。

這兩個對象對於處理 HTTP 調用是必不可少的。

第一個提供了請求的詳細信息。在這個簡單的例子中,這是不被使用的,但是你可以訪問請求標頭和請求數據。

第二個用於向調用者返回數據。

在這個案例中,

res.statusCode = 200;

我們將 statusCode 屬性設置為 200,表示成功的回應。

我們設置了 Content-Type 標頭

res.setHeader('Content-Type', 'text/plain');

並且我們關閉了回應,將內容作為 end() 的參數添加。

res.end('Hello World\n');

更多示例

查看 https://github.com/nodejs/examples 以獲得超越 hello world 的 Node.js 示例列表。