Module ā§Ļ ¡ JavaScript āĻāĻŋāύāĻŋāϏāĻāĻž āĻā§, āĻā§āĻĨāĻžāϝāĻŧ āĻāϞā§, āĻāϰ engine āĻāĻāĻž āĻāĻžāϞāĻžāϝāĻŧ āĻā§āĻāĻžāĻŦā§
āĻā§āĻĨāĻžāϝāĻŧ āĻāϞā§: browser, server, phone, desktop
āĻāĻ lesson-āĻ āϝāĻž āĻļāĻŋāĻāĻŦā§
- JavaScript āϝ⧠āĻāĻžāϰāĻāĻž āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻāϞā§, āϏā§āĻā§āϞā§āϰ āύāĻžāĻŽ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§, āĻĒā§āϰāϤāĻŋāĻāĻžāϝāĻŧ āĻāĻāĻāĻž āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ product āϏāĻšāĨ¤
- āĻāĻžāϰ āĻāĻžāϝāĻŧāĻāĻžāϤā§āĻ āĻā§ āĻāĻāĻ āĻĨāĻžāĻā§ āĻāϰ āĻā§ āĻŦāĻĻāϞāĻžāϝāĻŧ, āϏā§āĻāĻž āĻŦā§āĻāĻŋāϝāĻŧā§ āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
- Node.js āĻā§, āĻāϰ Playground āĻā§ āĻĒāĻžāϰ⧠āĻāϰ āĻā§ āĻĒāĻžāϰ⧠āύāĻž, āϏā§āĻāĻž āĻŦāϞāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
Kenji āϤāĻŋāύāĻāĻž blog post āĻĒāĻĄāĻŧā§ āĻāĻŋāύā§āϤāĻžāϝāĻŧ āĻĒāĻĄāĻŧā§ āĻā§āĻā§āĨ¤ āĻāĻāĻāĻž āĻŦāϞāĻā§ "frontend JavaScript āĻļā§āĻā§", āĻāĻāĻāĻž āĻŦāϞāĻā§ "backend JavaScript āĻļā§āĻā§", āĻāϰā§āĻāĻāĻž āĻŦāϞāĻā§ "React Native āĻļā§āĻā§"āĨ¤ āϏ⧠āĻāĻžāύāϤ⧠āĻāĻžāϝāĻŧ, āĻā§āύ JavaScript āĻāĻā§ āĻļāĻŋāĻāĻŦā§āĨ¤
āϏ⧠āĻāϤā§āϤāϰ āĻšāϞā§, JavaScript āĻāĻāĻāĻžāĻāĨ¤ āĻāĻāĻ āĻāĻžāώāĻž browser-āĻ āĻāϞā§, server-āĻ āĻāϞā§, āĻĢā§āύā§āϰ app-āĻāϰ āĻā§āϤāϰ⧠āĻāϞā§, desktop app-āĻāϰ āĻā§āϤāϰā§āĻ āĻāϞā§āĨ¤ āĻŦāĻĻāϞāĻžāϝāĻŧ āĻļā§āϧ⧠āĻāϰāĻāĻž, āϝā§āĻāĻžāύ⧠āϏ⧠āĻāϞāĻā§āĨ¤ āĻāϰ āĻŦāĻĻāϞāĻžāϝāĻŧ āĻāĻ āĻāϰ⧠āϏ⧠āĻā§ āĻā§ āĻā§āĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ lesson-āĻ āĻāĻžāϰāĻāĻž āĻāϰāĻ āĻĻā§āĻāĻŦā§āĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻž program āĻĻā§āĻāĻāĻž āĻāϰ⧠āĻāĻžāϞāĻŋāϝāĻŧā§ āĻāĻāĻ output āĻĒāĻžāĻŦā§āĨ¤ āĻĒā§āϰ⧠āϝā§āĻā§āϤāĻŋāĻāĻž āĻāĻ āĻāĻ āĻāĻŦāĻŋāϤā§āĻāĨ¤
āĻāĻāĻāĻž āĻāĻžāώāĻž, āĻāĻžāϰ āĻāĻžāϝāĻŧāĻāĻž
Engine āĻšāϞ⧠āϏā§āĻ program, āϝā§āĻāĻž JavaScript āĻĒāĻĄāĻŧā§ āĻāϰ āĻāĻžāϞāĻžāϝāĻŧāĨ¤ Lesson 04-āĻ āĻāĻāĻāĻž engine āĻā§āϞ⧠āĻā§āϤāϰāĻāĻž āĻĻā§āĻāĻŦā§āĨ¤ āĻāĻĒāĻžāϤāϤ engine-āĻā§ āĻāĻāĻāĻž āĻŦāĻžāĻā§āϏ āĻāĻžāĻŦā§, āϝā§āĻāĻž āĻļā§āϧ⧠āĻāĻžāώāĻžāĻāĻž āĻāĻžāϞāĻžāϝāĻŧ, āĻāϰ āĻāĻŋāĻā§ āύāĻžāĨ¤ āύāĻŋāĻā§ āĻĨā§āĻā§ āϏ⧠page āĻāĻāĻāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, file āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, network connection-āĻ āĻā§āϞāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
Runtime āĻšāϞ⧠āĻā§āύ⧠āĻāĻāĻāĻž āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻŦāϏāĻžāύ⧠āĻāĻāĻāĻž engine, āϏāĻā§āĻā§ āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϰ āĻĻā§āĻāϝāĻŧāĻž āĻŦāĻžāĻĄāĻŧāϤāĻŋ tool-āĻā§āϞā§āĨ¤ Browser āĻāĻāĻāĻž runtime, Node.js āĻāϰā§āĻāĻāĻžāĨ¤ āĻā§āϤāϰā§āϰ āĻāĻžāώāĻž āĻāĻāĻ; āĻŦāĻžāĻĄāĻŧāϤāĻŋ tool-āĻā§āϞ⧠āĻāĻ āύāĻžāĨ¤
āϤāĻžāĻ "frontend JavaScript" āĻāϰ "backend JavaScript" āĻāĻāĻ āĻāĻžāώāĻž, āĻļā§āϧ⧠āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻāϰā§āĨ¤
Browser: page-āĻāϰ āĻĒāĻžāĻļā§ JavaScript
āĻĒā§āϰāϤāĻŋāĻāĻž browser-āĻāϰ āĻā§āϤāϰ⧠āĻāĻāĻāĻž engine āĻāĻā§āĨ¤ āĻā§āύ⧠website JavaScript āĻĒāĻžāĻ āĻžāϞ⧠browser āϏā§āĻāĻž āĻāĻžāϞāĻžāϝāĻŧ āĻ āĻŋāĻ āϤā§āĻŽāĻŋ āϝ⧠page āĻĻā§āĻāĻ āϤāĻžāϰ āĻĒāĻžāĻļā§āĻāĨ¤ āĻāĻāĻžāĻŦā§āĻ āĻĒā§āϰ⧠page reload āύāĻž āĻāϰ⧠āĻāĻāĻāĻž "Like" button āύā§āϞ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤
Browser-āĻāϰ āĻŦāĻžāĻĄāĻŧāϤāĻŋāĻā§āϞ⧠āĻšāϞ⧠page-āĻāϰ āϝāĻž āϝāĻž āϞāĻžāĻā§āĨ¤ āϏāĻŦāĻā§āϝāĻŧā§ āĻāϰā§āϰāĻŋāĻāĻž document, āĻŽāĻžāύ⧠page āύāĻŋāĻā§āĻ, āĻĒāĻĄāĻŧāĻž āĻāϰ āĻŦāĻĻāϞāĻžāύā§āϰ āĻāύā§āϝ āĻšāĻžāϤā§āϰ āĻāĻžāĻā§āĨ¤ āĻāϰā§āĻāĻāĻž window, āĻŽāĻžāύ⧠page-āĻāĻžāĻā§ āĻāĻŋāϰ⧠āĻĨāĻžāĻāĻž browser tabāĨ¤ āĻĻā§āĻāĻāĻžāĻ āϤā§āĻŽāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ Module 14-āĻ, lesson-āĻāϰ āĻā§āϤāϰā§āϰ āĻāĻāĻāĻž āύāĻŋāϰāĻžāĻĒāĻĻ sandbox-āĻāĨ¤
Browser āĻā§ āĻĻā§āϝāĻŧ āύāĻž, āϏā§āĻāĻžāĻ āϏāĻŽāĻžāύ āĻāϰā§āϰāĻŋāĨ¤ āĻāĻāĻāĻž web page āύāĻŋāĻā§ āĻĨā§āĻā§ āϤā§āĻŽāĻžāϰ laptop-āĻāϰ file āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ āĻā§āĻŦāύ⧠āϝāϤ website āĻā§āϞā§āĻ, āĻāĻ āϏā§āĻŽāĻžāĻāĻžāĻ āĻĒā§āϰāϤā§āϝā§āĻāĻāĻžāϰ āĻšāĻžāϤ āĻĨā§āĻā§ āϤā§āĻŽāĻžāĻā§ āĻŦāĻžāĻāĻāĻŋāϝāĻŧā§ āϰā§āĻā§āĻā§āĨ¤
āϤāĻžāĻ browser-āĻ JavaScript page āĻā§āĻāϤ⧠āĻĒāĻžāϰā§, āϤā§āĻŽāĻžāϰ file āĻā§āĻāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
Server: Node.js
2009 āϏāĻžāϞ⧠Ryan Dahl āύāĻžāĻŽā§ āĻāĻāĻāύ programmer Google Chrome-āĻāϰ engine, V8, āύāĻŋāϝāĻŧā§ āϏā§āĻāĻž browser-āĻāϰ āĻŦāĻžāĻāϰ⧠āĻāĻžāϞāĻžāϞā§āύāĨ¤ āϤāĻŋāύāĻŋ āϤāĻžāϤ⧠server-āĻāϰ āĻĻāϰāĻāĻžāϰāĻŋ tool-āĻā§āϞ⧠āĻā§āĻĄāĻŧā§ āĻĻāĻŋāϞā§āύ: file āĻĒāĻĄāĻŧāĻž āĻāϰ āϞā§āĻāĻž, network-āĻ āĻāĻĨāĻž āĻŦāϞāĻž, āĻ āύā§āϝ program āĻāĻžāϞ⧠āĻāϰāĻžāĨ¤ āĻĢāϞāĻāĻžāϰ āύāĻžāĻŽ āĻĻāĻŋāϞā§āύ Node.js, āĻā§āĻ āĻāϰ⧠āϏāĻŦāĻžāĻ āĻŦāϞ⧠NodeāĨ¤
Node āύāϤā§āύ āĻā§āύ⧠āĻāĻžāώāĻž āύāĻžāĨ¤ āĻāĻāĻž āĻāĻāĻ JavaScript, āĻļā§āϧ⧠āĻŦāĻžāĻĄāĻŧāϤāĻŋāĻā§āϞ⧠āĻāϞāĻžāĻĻāĻžāĨ¤ document-āĻāϰ āĻŦāĻĻāϞ⧠āĻāĻāĻžāύ⧠āĻāĻā§ fs, āĻŽāĻžāύ⧠file system module, āĻāϰ process, āĻŽāĻžāύ⧠āĻāϞāύā§āϤ program-āĻāĻž āύāĻŋāĻā§āĻāĨ¤ Module 1-āĻāϰ starter code āϤā§āĻŽāĻžāϰ input āĻĒāĻĄāĻŧāϤ⧠fs āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
āĻŦāĻĄāĻŧ āĻŦāĻĄāĻŧ company āĻāĻāĻžāϰ āĻāĻĒāϰ āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ traffic āĻāĻžāϞāĻžāϝāĻŧāĨ¤ 2013 āϏāĻžāϞ⧠PayPal āϤāĻžāĻĻā§āϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻŦā§āϝāϏā§āϤ page-āĻā§āϞā§āϰ āĻāĻāĻāĻž, account overview, āĻĻā§āĻāĻŦāĻžāϰ āĻŦāĻžāύāĻŋāϝāĻŧā§āĻāĻŋāϞ: āĻāĻāĻŦāĻžāϰ Java-āϤā§, āĻāĻāĻŦāĻžāϰ Node-āĻāĨ¤ āĻāĻĻā§āϰ engineering blog āĻāĻžāύāĻŋāϝāĻŧā§āĻāĻŋāϞ, Node version-āĻāĻž āĻāĻŽ āϞā§āĻ āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻžāϝāĻŧ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻĻā§āϰā§āϤ āĻŦāĻžāύāĻžāύ⧠āĻā§āĻā§, āĻāϰ āĻĒā§āϰāϤāĻŋāĻāĻž request-āĻāϰ āĻāϤā§āϤāϰ āĻĻāĻŋāϤ⧠āĻāĻĄāĻŧ āϏāĻŽāϝāĻŧ 35% āĻāĻŽā§ āĻā§āĻā§āĨ¤
āϤāĻžāĻ Node āĻŽāĻžāύ⧠browser-āĻāϰ āĻŦāĻžāĻāϰ⧠V8, page-āĻāϰ āĻŦāĻĻāϞ⧠file āĻāϰ network āϏāĻšāĨ¤
āĻĢā§āύ āĻāϰ desktop
āĻĢā§āύāĨ¤ React Native āĻŦāĻžāύāĻžāύ⧠āĻšāϝāĻŧā§āĻā§ Facebook-āĻ (āĻāĻāύ Meta)āĨ¤ āĻāĻāĻž āĻĻāĻŋāϝāĻŧā§ JavaScript āĻāĻāĻāĻž āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻĢā§āύ app āĻāĻžāϞāĻžāϤ⧠āĻĒāĻžāϰā§āĨ¤ Button āĻāϰ list-āĻā§āϞ⧠āĻĢā§āύā§āϰ āύāĻŋāĻā§āϰ native āĻāĻŋāύāĻŋāϏ, āĻā§āύ⧠web page āύāĻžāĨ¤ Meta āĻāĻāĻž Facebook āĻāϰ Instagram app-āĻāϰ āĻāĻŋāĻā§ āĻ āĻāĻļā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻāϰ Instagram-āĻāϰ engineer-āϰāĻž screen-āĻā§āϞ⧠āĻāϤ⧠āϏāϰāĻŋāϝāĻŧā§ āύā§āĻāϝāĻŧāĻž āύāĻŋāϝāĻŧā§ āϞāĻŋāĻā§āĻā§āύāĻāĨ¤
DesktopāĨ¤ Electron āĻāĻāĻāĻž browser engine āĻāϰ Node-āĻā§ āĻāĻāϏāĻā§āĻā§ āĻĒā§āϝāĻžāĻ āĻāϰ⧠āĻāĻāĻāĻž desktop program āĻŦāĻžāύāĻžāϝāĻŧāĨ¤ VS Code, āϝ⧠code editor āĻ āύā§āĻ programmer āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, Electron-āĻāϰ āĻāĻĒāϰ āĻŦāĻžāύāĻžāύā§āĨ¤ Discord-āĻāϰ desktop app-āĻ āϤāĻžāĻāĨ¤
āĻ āĻĻā§āĻāĻāĻžāϰ āĻā§āύā§āĻāĻžāĻ āĻĒā§āϰāĻĨāĻŽā§ āĻļā§āĻāĻžāϰ āĻāĻŋāύāĻŋāϏ āύāĻžāĨ¤ āĻĻā§āĻāĻāĻžāĻ āϏāĻžāϧāĻžāϰāĻŖ JavaScript āύāĻŋāϝāĻŧā§ āĻāĻāĻāĻž āύāϤā§āύ socket-āĻ āĻŦāϏāĻžāϝāĻŧāĨ¤ āϏā§āĻāύā§āϝāĻ āĻāĻ track āĻāĻā§ āĻāĻžāώāĻžāĻāĻž āĻļā§āĻāĻžāϝāĻŧāĨ¤
āĻāĻāĻ program, āĻĻā§āĻāĻāĻž console-āĻ
Console āĻšāϞ⧠āĻāĻāĻāĻž āϞā§āĻāĻžāϰ window, āϝā§āĻāĻžāύ⧠program-āĻāϰ āĻāĻžāĻĒāĻž āϞāĻžāĻāύāĻā§āϞ⧠āĻĻā§āĻāĻž āϝāĻžāϝāĻŧāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻž browser-āĻāϰ āĻā§āϤāϰ⧠āĻāĻāĻāĻž āϞā§āĻāĻžāύ⧠āĻāĻā§, āĻāϰ Node āĻāĻžāĻĒā§ terminal-āĻ (āϝ⧠āϞā§āĻāĻžāϰ window-āϤ⧠āϤā§āĻŽāĻŋ command āĻāĻžāĻāĻĒ āĻāϰā§)āĨ¤ āĻĻā§āĻāĻāĻž āĻā§āĻāĻžāĻŦā§ āĻā§āϞāĻŦā§, āϏā§āĻāĻž Lesson 05 āĻĻā§āĻāĻžāĻŦā§āĨ¤
āĻā§āĻ āĻāĻāĻāĻž function, āϝā§āĻāĻž āĻāĻāĻāĻž āĻāϝāĻŧāϤāĻā§āώā§āϤā§āϰā§āϰ āĻā§āώā§āϤā§āϰāĻĢāϞ āĻŦā§āϰ āĻāϰā§, āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻž āϞāĻžāĻāύ āĻāĻžāĻĒā§āĨ¤ Function āĻ āĻŋāĻāĻŽāϤ⧠āĻŦā§āĻāĻžāύ⧠āĻšāĻŦā§ Module 5-āĻāĨ¤ āĻāĻāĻžāύ⧠āĻāĻāĻžāĻā§ āĻĒāĻĄāĻŧā§ "āύāĻžāĻŽ āĻĻā§āĻāϝāĻŧāĻž āĻāĻāĻāĻž āϰā§āϏāĻŋāĻĒāĻŋ, āϝā§āĻāĻž āĻāĻāĻāĻž āĻāϤā§āϤāϰ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧ" āĻšāĻŋāϏā§āĻŦā§āĨ¤
function area(width, height) {
return width * height;
}
console.log("Area: " + area(4, 5));
Area: 20
āύāĻŋāĻā§āϰ āĻĻā§āĻāĻāĻž āĻāĻŦāĻŋāϤ⧠āĻāĻāĻ āĻĒāĻžāĻāĻ āϞāĻžāĻāύ āĻāĻžāϞāĻžāύ⧠āĻšāϝāĻŧā§āĻā§ Chrome-āĻāϰ console-āĻ āĻāϰ Node-āĻāĨ¤ āĻĻā§āĻ āĻāĻžāϝāĻŧāĻāĻžāϤā§āĻ āĻāϤā§āϤāϰ āĻāĻāĨ¤
Compiler-āĻ āĻāĻžāϞāĻžāĻundefined āĻšāϞ⧠console-āĻāϰ āĻāĻžāύāĻžāύ⧠āϝ⧠āĻļā§āώ āϞāĻžāĻāύāĻāĻž āĻā§āύ⧠āĻŽāĻžāύ āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāύāĻŋ; lesson 05 āĻāĻāĻž āĻŦā§āĻāĻŋāϝāĻŧā§ āĻŦāϞāĻŦā§āĨ¤āĻĒāĻžāϰā§āĻĨāĻā§āϝāĻāĻž āĻĻā§āĻāĻž āĻĻā§āϝāĻŧ āĻļā§āϧ⧠āϤāĻāύ, āϝāĻāύ program āĻā§āύ⧠āĻāϰā§āϰ āĻŦāĻžāĻĄāĻŧāϤāĻŋ āĻāĻŋāύāĻŋāϏ⧠āĻšāĻžāϤ āĻŦāĻžāĻĄāĻŧāĻžāϝāĻŧāĨ¤ Example 2 āĻĒā§āϰāϤāĻŋāĻāĻž āĻāϰāĻā§ āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§, āϤāĻžāϰ āĻāĻžāĻā§ āĻā§ āĻāĻā§āĨ¤
typeof āĻāĻŋāĻā§āĻā§āϏ āĻāϰā§, āĻāĻāĻāĻž āύāĻžāĻŽā§āϰ āĻā§āϤāϰ⧠āĻā§āύ āϧāϰāύā§āϰ āĻāĻŋāύāĻŋāϏ āĻāĻā§āĨ¤ āĻĒā§āϰā§āĻāĻž āĻāϏāĻŦā§ Module 1-āĻāĨ¤ āĻāĻāĻžāύ⧠āĻāĻāĻž āĻāĻāĻāĻž āϏāĻšāĻ āĻĒā§āϰāĻļā§āύā§āϰ āĻāϤā§āϤāϰ āĻĻā§āϝāĻŧ: āĻāĻ āĻāϰ⧠āĻāĻŋ āĻāĻāĻāĻž page, āĻāĻāĻāĻž tab āĻāϰ āĻāĻāĻāĻž āĻāϞāύā§āϤ process āĻāĻā§?
console.log(typeof document, typeof window, typeof process);
undefined undefined object
āĻāĻāĻž Node-āĻāϰ āĻāϤā§āϤāϰ, Playground-āĻāϰāĻ: page āύā§āĻ, tab āύā§āĻ, āĻāĻŋāύā§āϤ⧠process āĻāĻā§āĨ¤ āĻāĻāĻ āϞāĻžāĻāύ browser console-āĻ paste āĻāϰā§, āĻĒāĻžāĻŦā§ object object undefined, āĻāĻāĻĻāĻŽ āĻāϞā§āĻā§āĨ¤
āĻĻā§āĻāĻāĻž āĻāĻŋāύāĻŋāϏ, āϝā§āĻā§āϞ⧠browser-āĻ āύā§āĻ: file system module āĻāϰ processāĨ¤
const fs = require("fs");
console.log(typeof fs.readFileSync);
console.log(process.platform);
console.log(process.version.startsWith("v22"));
function
linux
true
readFileSync āĻāĻāĻāĻž āĻĒā§āϰ⧠file āĻĒāĻĄāĻŧā§, āĻāϰ Module 1-āĻāϰ starter āϤā§āĻŽāĻžāϰ input āĻĒāĻĄāĻŧāϤ⧠āĻāĻāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ Playground āĻāϞ⧠Linux-āĻ, āϤāĻžāĻ āϞāĻžāĻāύ 2 āĻŦāϞ⧠linux; Windows laptop-āĻ āĻŦāϞāĻŦā§ win32āĨ¤ āϞāĻžāĻāύ 3 āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āϝ⧠Node-āĻāϰ version 22āĨ¤
Playground: āĻāĻāĻāĻž āĻŦāĻžāĻā§āϏ⧠Node.js 22
āĻāĻ track-āĻāϰ āĻĒā§āϰāϤāĻŋāĻāĻž Run button āϤā§āĻŽāĻžāϰ code āĻĒāĻžāĻ āĻžāϝāĻŧ Progsity Playground-āĻāĨ¤ āĻāĻāĻž āĻ āĻŋāĻ āĻā§, āĻāĻāĻžāύ⧠āĻā§āϞāĻžāĻā§āϞāĻŋ āĻŦāϞ⧠āĻĻāĻŋāĻā§āĻāĻŋ, āϝāĻžāϤ⧠āĻāĻāύ⧠āĻāύā§āĻĻāĻžāĻ āĻāϰāϤ⧠āύāĻž āĻšāϝāĻŧāĨ¤
- āĻāĻāĻž Node.js 22āĨ¤ āϤā§āĻŽāĻžāϰ code
main.jsāύāĻžāĻŽā§āϰ āĻāĻāĻāĻž file-āĻ save āĻšāϝāĻŧ, āĻāϰnodecommand āĻĻāĻŋāϝāĻŧā§ āĻāϞā§, āĻāĻāĻāĻž sandbox-āĻāϰ āĻā§āϤāϰ⧠(āϏāĻŽāϝāĻŧ āĻāϰ memory-āϰ āϏā§āĻŽāĻž āĻŦāĻžāĻāϧāĻž āĻāĻāĻāĻž āϤāĻžāϞāĻžāĻŦāύā§āϧ āĻŦāĻžāĻā§āϏ)āĨ¤ - āĻāϤ⧠stdin āĻāϰ stdout āĻāĻā§āĨ¤ stdin (standard input) āĻšāϞ⧠Run āĻāĻžāĻĒāĻžāϰ āĻāĻā§ Input box-āĻ āϤā§āĻŽāĻŋ āϝ⧠āϞā§āĻāĻž āĻāĻžāĻāĻĒ āĻāϰā§āĨ¤ stdout (standard output) āĻšāϞ⧠āϤā§āĻŽāĻžāϰ program āϝāĻž āĻāĻŋāĻā§ āĻāĻžāĻĒā§āĨ¤
- āĻāϤ⧠āĻā§āύ⧠page āύā§āĻāĨ¤
documentāύā§āĻ,window-āĻ āύā§āĻ, Example 2-āϤā§āĻ āĻĻā§āĻā§āĻāĨ¤ Module 14-āĻāϰ browser lesson-āĻā§āϞ⧠āĻāϞ⧠lesson-āĻāϰ āĻā§āϤāϰā§āϰ āĻāϞāĻžāĻĻāĻž āĻāĻāĻāĻž sandbox-āĻāĨ¤ - āĻāϤ⧠internet āύā§āĻāĨ¤ āĻā§āύ⧠program āĻāĻŋāĻā§ download āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠fail āĻāϰā§, āύāĻŋāĻā§āϰ āĻĻā§āĻ āύāĻŽā§āĻŦāϰ āĻā§āϞāĻāĻžāϝāĻŧ āϝā§āĻŽāύ āĻĻā§āĻāĻŦā§āĨ¤
āĻāĻ track-āĻāϰ judged problem-āĻā§āϞā§āĻ āĻāĻāĻ āĻŦāĻžāĻā§āϏ⧠āĻāϞā§āĨ¤ āϏā§āĻāύā§āϝāĻ āĻĒā§āϰāϤāĻŋāĻāĻž problem āϤāĻžāϰ input āĻĒāĻĄāĻŧā§ stdin āĻĨā§āĻā§, āĻāϤā§āϤāϰ āĻāĻžāĻĒā§, āĻāϰ āĻāĻāύ⧠page āĻā§āĻāϝāĻŧ āύāĻžāĨ¤
āϤāĻžāĻ Playground āĻŽāĻžāύ⧠input āĻāϰ output āϏāĻš Node 22, āĻāϰ āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§ āύāĻžāĨ¤
āĻāĻāĻž āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻāĻā§
- BrowserāĨ¤ āϤā§āĻŽāĻŋ āϝāϤ website āĻā§āϞā§, āϏāĻŦāĻā§āϞā§āϰ page-āĻ JavaScript āĻāϞā§āĨ¤ Google Maps-āĻ map āĻā§āύ⧠āϏāϰāĻžāϞ⧠JavaScript-āĻ map-āĻāĻž āύāϤā§āύ āĻāϰ⧠āĻāĻāĻā§, page reload āύāĻž āĻāϰā§āĻāĨ¤
- Server: Netflix āĻāϰ PayPalāĨ¤ Netflix āϤāĻžāĻĻā§āϰ website-āĻāϰ page-āĻā§āϞ⧠Node āĻĨā§āĻā§ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤ PayPal 2013 āϏāĻžāϞ⧠āϤāĻžāĻĻā§āϰ account overview page Node-āĻ āϏāϰāĻŋāϝāĻŧā§ āύā§āϝāĻŧ, āĻāϰ āĻāĻĒāϰ⧠āĻŦāϞāĻž āĻāϤāĻŋāϰ āĻšāĻŋāϏāĻžāĻŦāĻāĻž āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āĨ¤
- āĻĢā§āύ: React NativeāĨ¤ Meta-āϰ Facebook āĻāϰ Instagram app-āĻāϰ āĻāĻŋāĻā§ āĻ āĻāĻļ React Native āĻĻāĻŋāϝāĻŧā§ JavaScript-āĻ āϞā§āĻāĻž, āĻāϰ āϏā§āĻā§āϞ⧠āĻĢā§āύā§āϰ āύāĻŋāĻā§āϰ native screen āĻāĻāĻā§āĨ¤
- Desktop: ElectronāĨ¤ VS Code āĻāϰ Discord-āĻāϰ desktop app āĻšāϞ⧠Electron-āĻ āĻŽā§āĻĄāĻŧāĻžāύ⧠JavaScript programāĨ¤ āϤāĻžāĻ āĻāĻāĻāĻžāĻ codebase Windows, macOS āĻāϰ Linux-āĻ āĻāϞā§āĨ¤
āϝ⧠āĻā§āϞāĻā§āϞ⧠āϏāĻŦāĻžāĻ āĻāϰā§
ā§§. Playground-āĻ page āĻā§āĻāĻāϤ⧠āϝāĻžāĻāϝāĻŧāĻžāĨ¤
const title = document.querySelector("h1");
console.log(title);
Node.js 22 āϞāĻžāĻāύ 1-āĻāĻ āĻĨā§āĻŽā§ āϝāĻžāϝāĻŧ: ReferenceError: document is not definedāĨ¤ Node-āĻ āĻā§āύ⧠page āύā§āĻ, āϤāĻžāĻ document āύāĻžāĻŽā§ āĻāĻŋāĻā§āĻ āύā§āĻāĨ¤ āĻā§āύ⧠tutorial āĻĨā§āĻā§ browser-āĻāϰ code copy āĻāϰāĻžāϰ āĻĒāϰ āĻāĻ āĻā§āϞāĻāĻž āϤā§āĻŽāĻŋ āĻāϰāĻŦā§āĻāĨ¤ Page-āĻāϰ code āĻāĻžāϞāĻžāĻ browser-āĻ, āĻāϰ judged problem āĻāĻžāϞāĻžāĻ stdin āĻĻāĻŋāϝāĻŧā§āĨ¤
⧍. Playground internet-āĻ āϝā§āϤ⧠āĻĒāĻžāϰāĻŦā§, āĻāĻāĻž āϧāϰ⧠āύā§āĻāϝāĻŧāĻžāĨ¤
fetch("https://example.com").then((response) => console.log(response.status));
Playground-āĻ āĻāĻāĻž āĻļā§āώ āĻšāϝāĻŧ TypeError: fetch failed āĻĻāĻŋāϝāĻŧā§, āĻāϰ āĻāĻžāϰāĻŖ āĻšāĻŋāϏā§āĻŦā§ āĻĨāĻžāĻā§ getaddrinfo EAI_AGAIN example.com: āĻŦāĻžāĻā§āϏāĻāĻž address-āĻāĻž āĻā§āĻāĻā§āĻ āĻĒāĻžāϝāĻŧāύāĻŋāĨ¤ āύāĻŋāĻā§āϰ āĻŽā§āĻļāĻŋāύ⧠āĻāĻāĻ āϞāĻžāĻāύ āĻāĻžāĻĒā§ 200āĨ¤ Sandbox-āĻ network āĻāĻā§āĻāĻž āĻāϰā§āĻ āϰāĻžāĻāĻž āĻšāϝāĻŧāύāĻŋ, āϝāĻžāϤ⧠āĻā§āύ⧠judged program āĻŦāĻžāĻāϰ⧠āĻĨā§āĻā§ āĻāϤā§āϤāϰ āĻāύ⧠āύāĻŋāϤ⧠āύāĻž āĻĒāĻžāϰā§āĨ¤
ā§Š. Frontend āĻāϰ backend JavaScript āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻĻāĻž āĻāĻžāώāĻž, āĻāĻāĻž āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāϰāĻžāĨ¤
āĻā§āύ⧠error āĻāĻāĻž āϤā§āĻŽāĻžāĻā§ āĻŦāϞāĻŦā§ āύāĻž; āϤā§āĻŽāĻŋ āĻļā§āϧ⧠āĻāĻāĻ āĻāĻŋāύāĻŋāϏ āĻĻā§āĻāĻŦāĻžāϰ āĻļāĻŋāĻāĻŦā§āĨ¤ Example 1 āĻāĻāĻ āϞāĻžāĻāύ āĻā§āĻĒā§āĻā§ browser-āĻ āĻāϰ Node-āĻāĨ¤ āĻāĻžāώāĻžāĻāĻž āĻāĻāĻŦāĻžāϰ āĻļā§āĻā§, āϤāĻžāϰāĻĒāϰ āĻĻāϰāĻāĻžāϰ āĻĒāĻĄāĻŧāϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻž āĻāϰā§āϰ āĻŦāĻžāĻĄāĻŧāϤāĻŋāĻā§āϞ⧠āĻļāĻŋāĻā§ āύāĻŋāĻāĨ¤
ā§Ē. Node.js-āĻā§ āĻāĻžāώāĻž āĻŦāĻž framework āĻŦāϞāĻžāĨ¤
Node āĻāĻāĻāĻž runtime: āĻāĻāĻāĻž engine, āϏāĻā§āĻā§ āĻāĻŋāĻā§ toolāĨ¤ Interview-āϤ⧠"āĻāĻŽāĻŋ Node āĻāĻžāύāĻŋ, āĻāĻŋāύā§āϤ⧠JavaScript āĻāĻžāύāĻŋ āύāĻž" āĻŦāϞāϞ⧠āĻāĻĨāĻžāĻāĻžāϰ āĻā§āύ⧠āĻŽāĻžāύā§āĻ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻŦāϞ⧠"āĻāĻŽāĻŋ JavaScript āϞāĻŋāĻāĻŋ, āĻāϰ server-āĻ Node āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāĨ¤"
Example 1 āϤāĻžāϰ Run link āĻĻāĻŋāϝāĻŧā§ āĻāĻžāϞāĻžāĻāĨ¤ āϤāĻžāϰāĻĒāϰ area(4, 5) āĻŦāĻĻāϞ⧠area(7, 3) āĻāϰā§, āĻāϰ āĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāĻāĨ¤
āύāĻŋāĻā§ āϝāĻžāĻāĻžāĻ āĻāϰā§āĨ¤ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻŦāĻžāϰ āĻāĻžāĻĒāĻŦā§ Area: 21āĨ¤ āĻāĻŦāĻžāϰāĻ Area: 20 āĻĒā§āϞ⧠āĻŦā§āĻāĻŦā§, Run āĻāĻžāĻĒāĻžāϰ āĻāĻā§ āĻŦāĻĻāϞāĻāĻž save āĻšāϝāĻŧāύāĻŋāĨ¤
āĻāĻžāϰ āϏāĻžāϰāĻŋāϰ āĻāĻāĻāĻž āĻā§āĻ table āĻŦāĻžāύāĻžāĻ, āĻĒā§āϰāϤāĻŋāĻāĻž āĻāϰā§āϰ āĻāύā§āϝ āĻāĻāĻāĻž āϏāĻžāϰāĻŋ: browser, Node, React Native āĻāϰ ElectronāĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻž āϏāĻžāϰāĻŋāϤ⧠āĻĻā§āĻāĻāĻž āĻāϞāĻžāĻŽ āϰāĻžāĻā§: "page āĻā§āĻāϤ⧠āĻĒāĻžāϰā§" āĻāϰ "file āĻĒāĻĄāĻŧāϤ⧠āĻĒāĻžāϰā§"āĨ¤
āύāĻŋāϝāĻŧāĻŽāĨ¤ āĻāϤā§āϤāϰ āĻĻā§āĻŦā§ āĻļā§āϧ⧠āĻāĻ lesson āĻĨā§āĻā§, āĻšā§āϝāĻžāĻ āĻŦāĻž āύāĻž āĻĻāĻŋāϝāĻŧā§āĨ¤ āĻĒā§āϰāϤāĻŋāĻāĻž āϏāĻžāϰāĻŋāϤ⧠āĻāĻāĻāĻž āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ product āϝā§āĻ āĻāϰā§āĨ¤
āύāĻŋāĻā§ āϝāĻžāĻāĻžāĻ āĻāϰā§āĨ¤ Browser-āĻāϰ āϏāĻžāϰāĻŋ "āĻšā§āϝāĻžāĻ, āύāĻž"āĨ¤ Node-āĻāϰ āϏāĻžāϰāĻŋ "āύāĻž, āĻšā§āϝāĻžāĻ"āĨ¤ Electron-āĻāϰ āĻā§āϤāϰ⧠browser engine āĻāϰ Node āĻĻā§āĻāĻāĻžāĻ āĻāĻā§, āϤāĻžāĻ āĻāĻžāĻŦā§ āĻāϤ⧠āϏ⧠āĻā§ āĻĒāĻžāϝāĻŧāĨ¤ React Native native screen āĻāĻāĻā§, web page āύāĻžāĨ¤
āĻāĻ āĻŦāύā§āϧ⧠āĻāĻāĻāĻž judged problem āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āĻāĻžāϝāĻŧāĨ¤ āϏ⧠input āĻĒāĻĄāĻŧāĻŦā§ web page-āĻāϰ āĻāĻāĻāĻž text box āĻĨā§āĻā§, document.querySelector āĻĻāĻŋāϝāĻŧā§āĨ¤ āϤāĻŋāύ āĻŦāĻžāĻā§āϝ⧠āĻŦā§āĻāĻŋāϝāĻŧā§ āĻŦāϞā§, āĻāĻ track-āĻ āϏā§āĻāĻž āĻā§āύ āĻāĻžāĻ āĻāϰāĻŦā§ āύāĻž, āĻāϰ program-āĻāĻžāϰ āĻŦāĻĻāϞ⧠āĻā§ āĻĒāĻĄāĻŧāĻž āĻāĻāĻŋāϤāĨ¤
āύāĻŋāĻā§ āϝāĻžāĻāĻžāĻ āĻāϰā§āĨ¤ āĻāĻžāϞ⧠āĻāϤā§āϤāϰ⧠āĻĨāĻžāĻā§ judge āĻā§āύ āĻāϰ⧠āĻāϞā§, āĻŦāύā§āϧ⧠āĻā§āύ error āĻĻā§āĻāĻŦā§, āĻāϰ stdināĨ¤ Module 1-āĻāϰ lesson 05 stdin āĻĒāĻĄāĻŧāĻžāϰ āĻšā§āĻŦāĻšā§ āϞāĻžāĻāύāĻā§āϞ⧠āĻĻā§āĻāĻžāϝāĻŧāĨ¤
āϝ⧠āĻĒā§āϰāĻļā§āύāĻā§āϞ⧠āϏāĻŦāĻžāϰ āĻŽāύ⧠āĻāϏā§
Node.js āĻāĻŋ āĻāĻāĻāĻž programming language?
āύāĻžāĨ¤ Node āĻāĻāĻāĻž runtime: V8 engine, āϏāĻā§āĻā§ file, network āĻāϰ process-āĻāϰ toolāĨ¤ Node-āĻ āϤā§āĻŽāĻŋ āϝ⧠āĻāĻžāώāĻžāϝāĻŧ āϞā§āĻā§, āϏā§āĻāĻž JavaScriptāĨ¤
āĻāĻāύāĻ āĻāĻŋ frontend āύāĻžāĻāĻŋ backend, āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻāĻāĻŋāϤ?
āĻāĻāύ⧠āύāĻžāĨ¤ āĻĻā§āĻāĻāĻžāϤā§āĻ āĻāĻāĻ āĻāĻžāώāĻž āϞāĻžāĻā§, āĻāϰ Module 1 āĻĨā§āĻā§ 13 āϏā§āĻāĻžāĻ āĻļā§āĻāĻžāϝāĻŧāĨ¤ āϤāĻžāϰāĻĒāϰ Module 14 browser-āĻāϰ āĻŦāĻžāĻĄāĻŧāϤāĻŋāĻā§āϞ⧠āĻā§āϞā§āĨ¤ āϤāĻāύ āĻšāĻžāϤ⧠āϏāϤā§āϝāĻŋāĻāĻžāϰā§āϰ āĻ āĻāĻŋāĻā§āĻāϤāĻž āύāĻŋāϝāĻŧā§ āĻŦāĻžāĻāϤ⧠āĻĒāĻžāϰāĻŦā§āĨ¤
Deno āĻāϰ Bun āĻā§?
Node-āĻāϰ āĻŽāϤā§āĻ āĻĻā§āĻāĻāĻž āύāϤā§āύ runtimeāĨ¤ Deno āĻļā§āϰ⧠āĻāϰā§āĻā§āύ Node-āĻāϰ āύāĻŋāϰā§āĻŽāĻžāϤāĻž āύāĻŋāĻā§āĻ, āĻāϰ āĻāĻāĻžāĻ V8 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ Bun āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠JavaScriptCore, āĻŽāĻžāύ⧠Safari-āϰ engineāĨ¤ āϤā§āĻŽāĻžāϰ JavaScript āϤāĻŋāύāĻāĻžāϤā§āĻ āĻāϞā§āĨ¤
āĻāĻāĻāĻž āĻĢā§āύ app JavaScript-āĻ āϞā§āĻāĻž āĻšāϞā§, āĻāĻāĻž āĻāĻŋ āĻāϏāϞ⧠āĻāĻāĻāĻž website?
React Native-āĻ āύāĻžāĨ¤ āĻā§ āĻĻā§āĻāĻžāĻŦā§ āϏā§āĻāĻž āĻ āĻŋāĻ āĻāϰ⧠JavaScript, āĻāĻŋāύā§āϤ⧠button āĻāϰ list-āĻā§āϞ⧠āĻĢā§āύā§āϰ āύāĻŋāĻā§āϰ native āĻ āĻāĻļāĨ¤ āϏā§āĻāύā§āϝāĻ āĻāĻŽāύ app āĻšāĻžāϤ⧠āύāĻŋāϞ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻĢā§āύ app-āĻāϰ āĻŽāϤā§āĻ āϞāĻžāĻā§āĨ¤
āϞā§āĻā§ āĻā§āύ āĻŦāϞ⧠Electron app āĻāĻžāϰā§?
āĻĒā§āϰāϤāĻŋāĻāĻž Electron app āύāĻŋāĻā§āϰ āϏāĻā§āĻā§ āĻāĻāĻāĻž browser engine-āĻāϰ āĻāϞāĻžāĻĻāĻž āĻāĻĒāĻŋ āύāĻŋāϝāĻŧā§ āĻāϏā§āĨ¤ āϤāĻžāĻ native app-āĻāϰ āĻā§āϝāĻŧā§ download āĻŦāĻĄāĻŧ āĻšāϝāĻŧ, memory-āĻ āĻŦā§āĻļāĻŋ āϞāĻžāĻā§āĨ¤ āϤāĻŦā§ VS Code āĻĻā§āĻāĻžāϝāĻŧ, āϝāϤā§āύ āĻāϰ⧠āĻāĻžāĻ āĻāϰāϞ⧠āĻāĻŽāύ app-āĻ āĻĻā§āϰā§āϤ āϰāĻžāĻāĻž āϝāĻžāϝāĻŧāĨ¤
āĻŽā§āϞ āĻāĻĨāĻž
- JavaScript āĻāϞ⧠āĻāĻžāϰ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ: browser, server (Node.js), āĻĢā§āύ (React Native) āĻāϰ desktop (Electron)āĨ¤
- āĻāĻžāώāĻž āϏāĻŦāĻāĻžāύ⧠āĻāĻāĻ, āĻāϰ āĻĒā§āϰāϤāĻŋāĻāĻž āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻāĻāĻāĻž engine āϏā§āĻāĻž āĻāĻžāϞāĻžāϝāĻŧ; āĻŦāĻĻāϞāĻžāϝāĻŧ āĻļā§āϧā§, āĻā§āύ āĻāĻžāϝāĻŧāĻāĻž code-āĻā§ āĻā§ āĻā§āĻāϤ⧠āĻĻā§āϝāĻŧāĨ¤
- Browser-āĻ āĻāĻā§ page (
document,window); Node-āĻ āĻāĻā§ file āĻāϰ process (fs,process)āĨ¤ - Node.js āĻšāϞ⧠browser-āĻāϰ āĻŦāĻžāĻāϰ⧠āĻāĻžāϞāĻžāύ⧠V8 engine, 2009 āϏāĻžāϞ⧠Ryan Dahl-āĻāϰ āĻŦāĻžāύāĻžāύā§āĨ¤
- Playground āĻšāϞ⧠sandbox-āĻ Node.js 22: stdin āĻĻāĻŋāϝāĻŧā§ input āĻĸā§āĻā§, stdout āĻĻāĻŋāϝāĻŧā§ output āĻŦā§āϰ āĻšāϝāĻŧ, page āύā§āĻ, internet āύā§āĻāĨ¤
āĻĒāϰā§āϰ lesson-āĻ āĻ āύā§āϝ āϧāϰāύā§āϰ āĻāĻāĻāĻž āĻĒā§āϰāĻļā§āύ: āϤā§āĻŽāĻžāϰ career-āĻ JavaScript āĻā§ āĻāĻžāĻā§ āϞāĻžāĻāĻŦā§, āϏāĻāĻā§āϝāĻž āĻāϰ āϤāĻžāĻĻā§āϰ āĻā§āϏ āϏāĻšāĨ¤
lesson ⧍ āĻļā§āώ
āĻļā§āώ āĻšāϞ⧠āĻāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ āĻā§āϰāĻāϤāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻžāĻĨā§ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻĒāϰā§āϰāĻāĻž: āĻāĻžāĻāϰāĻŋāϰ āĻŦāĻžāĻāĻžāϰ, āϏā§āĻāĻžāϏāĻžāĻĒā§āĻāĻž: JavaScript āĻĻāĻŋāϝāĻŧā§ āĻā§ āĻšāϝāĻŧ, āĻā§ āĻšāϝāĻŧ āύāĻž