đ§Š Node.js āĻāϰ Event-Driven Architecture
Node.js āĻāĻāĻāĻŋ Event-Driven, Non-Blocking I/O Model āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
đ¯ Event-Driven Architecture
Event-Driven Architecture āĻŽāĻžāύ⧠āĻšāĻā§āĻā§ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§, āϝā§āĻāĻžāύ⧠āϏāĻŦ āĻāĻŋāĻā§āĻ āĻāĻāύāĻžāĻā§āύā§āĻĻā§āϰāĻŋāĻāĻāĻžāĻŦā§ (event-based) āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻšā§āĨ¤
āϧāϰā§āύ, āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻŋāύāĻā§ āĻĻā§āĻāĻžāύ⧠āĻĒāĻžāĻ āĻžāϞā§āύ āĻāĻŋāĻĒāϏ āĻāύāϤā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻŋāύ āĻĻā§āĻāĻžāύ āĻĨā§āĻā§ āĻāĻŋāĻĒāϏ āĻāĻŋāύ⧠āĻĢāĻŋāϰ⧠āĻāϏ⧠āĻĻāϰāĻāĻžā§ āĻā§āĻž āύāĻžā§āϞ āĻŦāĻž āĻŦā§āϞ āĻĻāĻŋāϞ â
āĻāĻĒāύāĻŋ āϏā§āĻ āĻāĻāύāĻžāĻāĻŋ āĻļā§āύāϞā§āύ (event listen āĻāϰāϞā§āύ) āĻāĻŦāĻ āĻĻāϰāĻāĻž āĻā§āϞ⧠āĻĻāĻŋāϞā§āύ (response/handle āĻāϰāϞā§āύ)āĨ¤
Node.js-āĻāĻ āĻ āĻŋāĻ āĻāĻāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻšā§:
- āĻā§āύ⧠āĻāĻāĻāĻŋ event emit āĻšā§,
- āϤāĻžāϰāĻĒāϰ āϏā§āĻ event āĻā§ listen āĻāϰāĻž āĻšā§,
- āĻāĻŦāĻ āĻļā§āώ⧠āϏā§āĻ āĻāĻā§āύā§āĻ āĻ āύā§āϝāĻžā§ā§ callback āĻĢāĻžāĻāĻļāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ response āĻĻā§āĻā§āĻž āĻšā§āĨ¤
āĻāĻ āĻāĻā§āύā§āĻ-āĻā§āύā§āĻĻā§āϰāĻŋāĻ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻĢāϞ⧠Node.js āĻšā§ā§ āĻāĻ ā§ āĻĻā§āϰā§āϤ, efficient āĻāĻŦāĻ highly responsive āĻāĻāĻāĻŋ runtimeāĨ¤
đ āĻŽā§āϞ āϧāĻžāϰāĻŖāĻž:
- Node.js āϏāĻžāϰā§āĻāĻžāϰ āϏāĻŦ āĻāĻžāĻāĻā§ Event āĻāĻāĻžāϰ⧠āϧāϰā§āĨ¤
- āĻĒā§āϰāϤāĻŋāĻāĻŋ Event āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ Callback Function āĻĨāĻžāĻā§āĨ¤
- āĻā§āύ⧠āĻāĻžāĻ (āϝā§āĻŽāύ āĻĢāĻžāĻāϞ āĻĒāĻĄāĻŧāĻž, API āĻāϞ) āĻļā§āϰ⧠āĻāϰ⧠Node.js āĻ āύā§āϝ āĻāĻžāĻ āĻāϰāϤ⧠āĻĨāĻžāĻā§āĨ¤
- āĻāĻžāĻ āĻļā§āώ āĻšāϞ⧠Event Trigger āĻšāϝāĻŧ â Callback āĻāϞā§āĻ
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ:
fs.readFile('file.txt', (err, data) => {
console.log(data.toString());
});
console.log("Reading file...");
Output:
Reading file...
[File content]
đ āĻāĻāĻžāύ⧠readFile
āĻāĻžāĻāĻāĻŋ async â āĻĢāĻžāĻāϞ āĻĒāĻĄāĻŧāĻž āĻāϞāĻžāĻāĻžāϞā§āύ āĻ
āύā§āϝ āĻāĻžāĻ (console log) āĻāĻā§ āĻšāϝāĻŧāĨ¤
đ Event Loop āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
Node.js āĻāϰ core-āĻ Event Loop āĻāĻžāĻ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻŽā§āϞāϤ JS āĻā§āĻĄā§āϰ Execution āĻāĻŦāĻ Callback āĻā§āϞ⧠āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āĨ¤ Event Loop is called the heart of node.js.
đ Event Loop-āĻāϰ āϧāĻžāĻĒāϏāĻŽā§āĻš:
- Call Stack: JS āĻā§āĻĄ āĻāĻ āĻāĻ āĻāϰ⧠Stack-āĻ āĻĸā§āĻā§ āĻāĻŦāĻ Execute āĻšāϝāĻŧāĨ¤
- Web APIs / Node APIs: Async āĻāĻžāĻāĻā§āϞ⧠(I/O, Timer, Network) āĻāĻāĻžāύ⧠āϝāĻžāϝāĻŧāĨ¤
- Callback Queue: Async āĻāĻžāĻ āĻļā§āώ⧠Callback āĻāĻāĻžāύ⧠āĻāϏ⧠āĻāĻŽāĻž āĻšāϝāĻŧāĨ¤
- Event Loop:
- Stack āĻāĻžāϞāĻŋ āĻĨāĻžāĻāϞā§, Callback Queue āĻĨā§āĻā§ āĻĢāĻžāĻāĻļāύ āĻāύ⧠Stack-āĻ āĻĸā§āĻāĻžāϝāĻŧāĨ¤
- āĻāĻāĻžāĻŦā§ Non-Blocking Execution āĻšāϝāĻŧāĨ¤