Node.js 21.0 āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĨ¤ Node.js 21.0 āĻļāĻžāĻāĻžāĻāĻŋ 6 āĻŽāĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻŽā§ āĻĻāĻŋāĻ¨ā§, Node.js 20 āĻļāĻžāĻāĻžāĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛āĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻŦā§, āĻ¯āĻž LTS āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻžāĻ¸ āĻĒāĻžāĻŦā§ āĻāĻŦāĻ āĻāĻĒā§āĻ°āĻŋāĻ˛ 2026 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§āĨ¤ Node.js 18.0-āĻāĻ° āĻāĻā§āĻ° LTS āĻļāĻžāĻāĻžāĻ° āĻ°āĻā§āĻˇāĻŖāĻžāĻŦā§āĻā§āĻˇāĻŖ āĻāĻ˛āĻŦā§ āĻ¸ā§āĻĒā§āĻā§āĻŽā§āĻŦāĻ° 2025 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻāĻŦāĻ āĻļā§āĻˇ LTS āĻļāĻžāĻāĻž 16.0 āĻāĻ° āĻāĻā§āĻ° āĻŦāĻāĻ° āĻāĻĒā§āĻ°āĻŋāĻ˛ 2024 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻ¨ā§āĻ¨āĻ¤āĻŋ:
- āĻĢā§āĻ āĻāĻĒāĻŋāĻāĻāĻā§ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻžāĻāĻĄā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻāĻ¨āĻŋāĻāĻžāĻ°ā§āĻ¸āĻžāĻ˛ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄ āĻ˛ā§āĻāĻžāĻā§ āĻ¸āĻ°āĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻŋ HTTP/1.1 undici āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻā§āĻĄā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ āĻ¨ā§āĻ°ā§āĻĒ API āĻāĻ° āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋāĨ¤ āĻāĻĒāĻŋāĻāĻ āĻĢā§āĻ() āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ āĻšā§āĻĄāĻžāĻ° āĻ āĻŦāĻā§āĻā§āĻ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĨ¤ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž, HTTP āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽ, āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°ā§āĨ¤ const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(āĻĄā§āĻāĻž); }
- WebStreams API-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨, āĻ¯āĻž āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§, āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ API āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĢāĻžāĻāĻ˛ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻ¨āĻž āĻāĻ°ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻāĻ¸āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻĄā§āĻāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§āĨ¤ Node.js-āĻ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§ ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream āĻāĻŦāĻ DecompressionStreamāĨ¤
- āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻā§āĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖāĨ¤ WebSocket āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻ¤ā§, "--āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ-āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻā§āĻ" āĻĒāĻ¤āĻžāĻāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
- CommonJS (Node.js-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ) āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ JavaScript āĻŽāĻĄāĻŋāĻāĻ˛ ESM (ECMAScript āĻŽāĻĄāĻŋāĻāĻ˛, āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤) āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻŽā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻāĻŋ āĻ¸ā§āĻ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§ āĻ¨āĻž āĻ¯āĻžāĻ° āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸āĻāĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ.json-āĻāĻ° "āĻāĻžāĻāĻĒ" āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž "--āĻāĻ¨āĻĒā§āĻ-āĻāĻžāĻāĻĒ" āĻĒāĻ¤āĻžāĻāĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ āĻĨāĻŦāĻž āĻĢāĻžāĻāĻ˛ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° (.mjs ESM, .cjs āĻāĻ° āĻāĻ¨ā§āĻ¯ mjs) āĻāĻ° āĻāĻžāĻ°āĻŖā§ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻāĨ¤ CommonJS āĻāĻ° ââāĻāĻ¨ā§āĻ¯)āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¯ā§ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ CommonJS āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ ".js" āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻā§) āĻ¨āĻ¤ā§āĻ¨ āĻŽā§āĻĄ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ˛ā§ ESM āĻŽāĻĄāĻŋāĻāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻšāĻŦā§ā§ˇ āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§, "--āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ-āĻĄāĻŋāĻĢāĻ˛ā§āĻ-āĻāĻžāĻāĻĒ" āĻĒāĻ¤āĻžāĻāĻž āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
- V8 āĻāĻā§āĻāĻŋāĻ¨āĻāĻŋ 11.8 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž Chromium 118-āĻ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻāĻ¨ ArrayBuffer.prototype.transfer āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§, āĻ ā§āĻ¯āĻžāĻ°ā§āĻā§ āĻā§āĻ°ā§āĻĒ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž (āĻā§āĻ°ā§āĻĒāĻŦāĻžāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ) āĻāĻŦāĻ āĻ§ā§āĻ°ā§āĻŦāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻ¸ā§āĻŽā§āĻŦāĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ (i32.add, i32.sub, i32.mul, i64 .add, i64.sub āĻāĻŦāĻ i64.mul)āĨ¤
- āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻĒā§āĻ°āĻŋāĻ˛ā§āĻĄ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻŽāĻĄāĻŋāĻāĻ˛ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻŦāĻ āĻāĻ˛ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻĒāĻā§āĻˇā§āĨ¤
- Fs.writeFile āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻāĻāĻŋ "āĻĢā§āĻ˛āĻžāĻļ" āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ°āĻžāĻāĻ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°ā§ āĻĄā§āĻ°āĻžāĻāĻā§ āĻĄā§āĻāĻž āĻĢā§āĻ˛āĻžāĻļ āĻāĻ°āĻ¤ā§ āĻŦāĻžāĻ§ā§āĻ¯ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
- āĻāĻāĻāĻ°āĻāĻ˛ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ, āĻāĻĒāĻŋāĻāĻ, āĻ¸ā§āĻā§āĻ°ā§āĻŽ, āĻ¨ā§āĻĄ:āĻāĻĢāĻāĻ¸ āĻāĻŦāĻ HTTP-āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻžāĨ¤
- āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻ¨ā§āĻāĻŋāĻā§āĻāĻ° āĻ āĻŦāĻā§āĻā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, CPU āĻā§āĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĄā§āĻāĻž āĻĒā§āĻ¤ā§, āĻāĻĒāĻ¨āĻŋ navigator.hardwareConcurrency āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- "âāĻĒāĻ°ā§āĻā§āĻˇāĻž" āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§, āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛ā§āĻŦ āĻŽāĻžāĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ "âāĻā§āĻ¸ā§āĻ **/*.test.js" āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨)āĨ¤
- āĻŦāĻžāĻ¨ā§āĻĄāĻŋāĻ˛ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° npm 10.2.0 āĻāĻŦāĻ llhttp 9.1.2 āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
- āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻā§āĻĄāĻŋāĻ 2019 āĻāĻŦāĻ 11.0 āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻĒā§āĻ°āĻžāĻ¨ā§ macOS āĻāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
Node.js āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ°āĻā§āĻˇāĻŖāĻžāĻŦā§āĻā§āĻˇāĻŖ āĻāĻŦāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¯āĻŧāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ Node.js-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻ¸āĻāĻā§āĻ°āĻš āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ, āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¯āĻŧā§āĻŦ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ, WebSocket āĻāĻŦāĻ Ajax āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°, DBMS āĻāĻžāĻ¨ā§āĻā§āĻāĻ° (MySQL, PostgreSQL, SQLite, MongoDB), āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻŋāĻ āĻāĻā§āĻāĻŋāĻ¨, CSS āĻāĻā§āĻāĻŋāĻ¨, āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻāĻŦāĻ āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ (OAuth), XML āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ¸āĻšāĨ¤
āĻŦāĻŋāĻĒā§āĻ˛ āĻ¸āĻāĻā§āĻ¯āĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§, Node.js āĻ¨āĻ¨-āĻŦā§āĻ˛āĻāĻŋāĻ āĻāĻā§āĻ¨ā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ āĻāĻŦāĻ āĻāĻ˛āĻŦā§āĻ¯āĻžāĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻā§āĻĄ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻŽāĻĄā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻĒā§āĻ˛ā§āĻā§āĻ¸āĻŋāĻ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻšāĻ˛ epoll, kqueue, /dev/poll āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨āĨ¤ āĻ¸āĻāĻ¯ā§āĻ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻĒā§āĻ˛ā§āĻā§āĻ¸āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯, libuv āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ libev āĻāĻŦāĻ Windows āĻ IOCP-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĄ-āĻ āĻ¨āĨ¤ libeio āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻāĻāĻāĻŋ āĻĨā§āĻ°ā§āĻĄ āĻĒā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ, āĻāĻŦāĻ c-ares āĻ¨āĻ¨-āĻŦā§āĻ˛āĻāĻŋāĻ āĻŽā§āĻĄā§ DNS āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§āĻā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ˛ āĻ¯āĻž āĻŦā§āĻ˛āĻāĻŋāĻ āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°ā§ āĻĨā§āĻ°ā§āĻĄ āĻĒā§āĻ˛ā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻš āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§, āĻ¸āĻŋāĻāĻ¨ā§āĻ¯āĻžāĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§āĻ° āĻŽāĻ¤ā§, āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻāĻāĻŋ āĻ¨āĻžāĻŽāĻšā§āĻ¨ āĻĒāĻžāĻāĻĒā§āĻ° (āĻĒāĻžāĻāĻĒ) āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĢā§āĻ°āĻ¤ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§āĨ¤ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻ Google āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§āĻ°āĻŋ V8 āĻāĻā§āĻāĻŋāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻāĻžāĻĄāĻŧāĻž, āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻĢā§āĻ āĻāĻā§āĻ°-āĻā§āĻ° āĻāĻā§āĻāĻŋāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ Node.js-āĻāĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻā§)āĨ¤
āĻāĻ° āĻŽā§āĻ˛ āĻ
āĻāĻļā§, Node.js āĻĒāĻžāĻ°ā§āĻ˛ āĻ
ā§āĻ¯āĻžāĻ¨āĻŋāĻāĻā§āĻ¨ā§āĻ, āĻ°ā§āĻŦāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻŽā§āĻļāĻŋāĻ¨, āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻāĻ¸ā§āĻā§āĻĄ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻŦāĻ āĻāĻŋāĻ¸āĻŋāĻāĻ˛ āĻāĻā§āĻ¨ā§āĻ āĻāĻŽāĻĒā§āĻ˛āĻŋāĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻ°ā§āĻĒ, āĻāĻŋāĻ¨ā§āĻ¤ā§ Node.js-āĻ āĻāĻā§āĻ¨ā§āĻ āĻ˛ā§āĻĒ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°ā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻ˛ā§āĻāĻžāĻ¨ā§ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻ¯āĻŧā§āĻŦ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻāĻā§āĻ¨ā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻŋāĻ-āĻāĻ° āĻŽāĻ¤ā§āĨ¤ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§āĨ¤ node.js-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻā§āĻ¨ā§āĻ-āĻāĻžāĻ˛āĻŋāĻ¤ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ-āĻāĻ° āĻŦāĻŋāĻļā§āĻˇāĻ¤ā§āĻŦ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, "var result = db.query("select..");" āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§āĨ¤ āĻāĻžāĻ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§, Node.js āĻ
ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ā§āĻ° āĻ¨ā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻā§āĻĄāĻāĻŋ "db.query("select..", āĻĢāĻžāĻāĻļāĻ¨ (āĻĢāĻ˛āĻžāĻĢāĻ˛) {āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ});-āĻ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻāĻŋāĻ¤ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¤āĻžā§āĻā§āĻˇāĻŖāĻŋāĻāĻāĻžāĻŦā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻĄā§ āĻāĻ˛ā§ āĻ¯āĻžāĻŦā§ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻāĻ¸āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻ¤ā§āĻ¸: opennet.ru