Chuyển đến nội dung chính

第 1 課:Node.js 架構深入探討

V8 引擎、libuv、C++ 綁定。單線程事件循環模型。 Node.js、Deno 和 Bun。發展歷史、用例。節點 --inspect,V8 標誌。

💻 程式設計 — 第 1 課 第 1 課:Node.js 架構深入探討

Node.js 核心:從基礎到高級

第 1 部分:Node.js 內部結構

亞洲開發網

1. 什麼是 Node.js?

Node.js 是一個基於 Chrome V8 引擎建立的 JavaScript 執行階段,允許在伺服器端執行 JavaScript。 Node.js 由 Ryan Dahl 於 2009 年推出,徹底改變了世界對 JavaScript 的看法。

成分角色
V8發動機JS編譯→機器碼、記憶體管理
利布夫事件循環、非同步I/O、線程池、跨平台
C++ 綁定將 JS 連接到系統級 API(fs、net、crypto)
Node.js APIJavaScript API(http、路徑、事件、串流…)

2.Node.js架構

┌─────────────────────────┐
│     Your JavaScript     │
├─────────────────────────┤
│     Node.js APIs        │
│  (http, fs, crypto…)    │
├─────────────────────────┤
│    C++ Bindings         │
├──────────┬──────────────┤
│  V8      │    libuv     │
│  Engine  │  (event loop)│
└──────────┴──────────────┘
│       Operating System       │

3. Node.js vs Deno vs Bun

特點Node.js德諾包子
引擎V8V8JavaScript核心
語言C++鐵鏽之字形
打字稿--實驗條帶類型本地人本地人
套件管理器npm/pnpm/紗線德諾加包子安裝
生態系統最大(3M+ 封裝)相容 npm相容 npm
安全性完全存取權限權限完全存取權限

4. 安裝與設定

# Cài Node.js qua nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
nvm install 22
nvm use 22
node --version  # v22.x.x

# Cài pnpm
corepack enable
corepack prepare pnpm@latest --activate

# Khởi tạo project
mkdir my-node-project && cd my-node-project
pnpm init

5.V8引擎標誌

# Xem tất cả V8 flags
node --v8-options | head -50

# Giới hạn memory
node --max-old-space-size=4096 app.js

# Inspect debugger
node --inspect app.js        # Chrome DevTools tại chrome://inspect
node --inspect-brk app.js    # Break ở dòng đầu tiên

# V8 profiling
node --prof app.js
node --prof-process isolate-*.log > processed.txt

6. 你好世界和 REPL

// hello.ts
const message: string = 'Hello from Node.js!'
console.log(message)
console.log(`Node.js version: ${process.version}`)
console.log(`Platform: ${process.platform}`)
console.log(`Architecture: ${process.arch}`)
console.log(`PID: ${process.pid}`)
console.log(`Memory: ${JSON.stringify(process.memoryUsage())}`)
# Chạy TypeScript trực tiếp (Node.js 22+)
node --experimental-strip-types hello.ts

# Hoặc dùng tsx
npx tsx hello.ts

下一篇: 事件循環和非同步模式 ——階段、微任務、巨集任務。