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 の内部構造

xdev.asia

1.Node.jsとは何ですか?

Node.js は Chrome の V8 エンジン上に構築された JavaScript ランタイムで、サーバー側で JavaScript を実行できます。 2009 年に Ryan Dahl によって発表された Node.js は、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++さびジグ
TypeScript--experimental-strip-typesネイティブネイティブ
パッケージマネージャーnpm/pnpm/糸での追加バンインストール
生態系最大 (300 万以上のパッケージ)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

次の記事: イベントループと非同期パターン — フェーズ、マイクロタスク、マクロタスク。