ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ node js
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Node JS. ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡΒΆ
Node.js ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° JavaScript, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π²ΠΈΠΆΠΊΠ° JavaScript Chrome V8, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. Node.js ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript. Π₯ΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Electron) ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΠΎ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Node.js, ΠΊΠ°ΠΊ ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Node.js ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° github.com.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°ΒΆ
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ https://nodejs.org/en/. ΠΠ° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΡ ΡΡΠ°Π·Ρ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ: ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ NodeJS ΠΈ LTS-Π²Π΅ΡΡΠΈΡ.
ΠΠ΅ΡΡΠΈΠΈ node.js Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡΠ΄Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ https://nodejs.org/en/download/
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΒΆ
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Node JS Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Notepad++. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΡΠΈΠΏΠ° Atom, Sublime, Visual Studio Code, Π»ΠΈΠ±ΠΎ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Node.JS, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Visual Studio ΠΈΠ»ΠΈ WebStorm.
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ NodeJS Π½Π°ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ REPL. REPL (Read Eval Print Loop) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
ΠΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°ΠΊΡΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡ JS:
ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠ²Π°Π΄ΡΠ°Ρ:
ΠΡΠ»ΠΈ ΠΌΡ Π²Π²Π΅Π΄Π΅ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΠΎ REPL ΡΠΊΠ°ΠΆΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°ΒΆ
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Node.js, ΡΠ°ΡΡΡ 1: ΠΎΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ Π½Π°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ
ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠΈΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Node.js Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . Π ΠΈΠΌΠ΅Π½Π½ΠΎ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Β«Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉΒ» β ΡΡΠΎ ΡΠΎΡ, ΠΊΡΠΎ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ·Π½Π°Π½ΠΈΡΠΌΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΠ³ΠΎ JavaScript. ΠΠ½ ΡΠ»ΡΡΠ°Π» ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠΆΠ΅ ΠΏΠΈΡΡΡ Π½Π° JS, ΠΈ Ρ ΠΎΡΠ΅Π» Π±Ρ ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΎΡΠ²ΠΎΠΈΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ Π·Π΄Π΅ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΈ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Node.js.
ΠΡΡΠ°ΡΠΈ, Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ Π³ΠΎΠ΄Ρ Ρ Π½Π°Ρ Π±ΡΠ» ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ ΠΏΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΠΉ bash-ΡΠΊΡΠΈΠΏΡΠ°ΠΌ. Π’ΠΎΠ³Π΄Π° ΠΌΡ, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠ΅Ρ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ², ΡΠΎΠ±ΡΠ°Π»ΠΈ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ PDF-ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊ ΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΈ Π² ΡΡΠΎΡ ΡΠ°Π·.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Node.js, Π½Π°ΡΠ½ΡΠΌ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ Β«Hello WorldΒ».
ΠΠ±Π·ΠΎΡ Node.js
Node.js β ΡΡΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½Π°Ρ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ JavaScript, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ . Π‘ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠΏΡΡΠΊΠ° ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π² 2009 Π³ΠΎΠ΄Ρ ΠΎΠ½Π° ΡΡΠ°Π»Π° ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ ΠΈ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ ΠΈΠ³ΡΠ°Π΅Ρ Π²Π΅ΡΡΠΌΠ° Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠ»ΠΈ ΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΠ»ΠΎ Π·Π²ΡΠ·Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΡΠ°Π» Π½Π΅ΠΊΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° GitHub, ΡΠΎ Node.js, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ 50000 Π·Π²ΡΠ·Π΄, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π±Π°Π·Π΅ JavaScript Π΄Π²ΠΈΠΆΠΊΠ° V8 ΠΎΡ Google, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Google Chrome. ΠΠ°Π½Π½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΅ΡΠ° Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΈΠΌ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Node.js.
βΠ‘ΠΊΠΎΡΠΎΡΡΡ
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Node.js ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ. JavaScript-ΠΊΠΎΠ΄, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Π² ΡΡΠ΅Π΄Π΅ Node.js, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π²ΡΠΎΠ΄Π΅ C ΠΈΠ»ΠΈ Java, ΠΈ Π½Π° ΠΏΠΎΡΡΠ΄ΠΊΠΈ Π±ΡΡΡΡΠ΅Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Python ΠΈΠ»ΠΈ Ruby. ΠΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ, Π² ΡΠ΅Π»ΠΎΠΌ, Node.js β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°.
βΠΡΠΎΡΡΠΎΡΠ°
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΠΏΡΠΎΡΡΠ° Π² ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΎΠ½Π° ΠΏΡΡΠΌΠΎ-ΡΠ°ΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ.
βJavaScript
Π ΡΡΠ΅Π΄Π΅ Node.js Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° JavaScript. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ JavaScript Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΌΠΎΠ³ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ, ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ·ΡΠΊΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Node.js ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² ECMAScript ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΆΠ΄Π°ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Node.js β ΡΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π°, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Node.js.
βΠΠ²ΠΈΠΆΠΎΠΊ V8
Π ΠΎΡΠ½ΠΎΠ²Π΅ Node.js, ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π»Π΅ΠΆΠΈΡ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΠΉ JavaScript-Π΄Π²ΠΈΠΆΠΎΠΊ V8 ΠΎΡ Google, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Google Chrome ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Node.js ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠ°ΠΌΠΈ ΡΡΡΡΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript Chrome Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π±ΡΡΡΡΠΎΠΉ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ V8.
βΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ
Π ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (C, Java, Python, PHP) Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ²Π»ΡΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΌΠΈ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ± Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΅ΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°ΠΊΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ JSON-ΠΊΠΎΠ΄Π°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°Π½ Π·Π°ΠΏΡΠΎΡ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠ²Π΅ΡΠ°.
JavaScript Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° (ΠΊΠΎΠ»Π»Π±ΡΠΊΠΎΠ²) ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΎΠ±ΡΡΠΈΡΡ . ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΆΡΠ»ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΊΠΎΠ»Π»Π±ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ, ΠΆΠ΄Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΆΠ΄Π°ΡΡ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ AJAX-Π·Π°ΠΏΡΠΎΡΠ°, Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ΅Π»ΡΠΊΠΈ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π±ΡΠ»ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, Π²ΡΡ, ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ΅ΡΠΈ, ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΠΎ Π²Ρ ΡΠΆΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠ°ΠΌΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Node.js-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΡΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π½Π΅ Π½Π°Π³ΡΡΠΆΠ°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π΅ΡΠΈ ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ.
Node.js ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π²Π²ΠΎΠ΄Π° Π²ΡΠ²ΠΎΠ΄Π°, ΠΈ, Π² ΡΠ΅Π»ΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ Π² ΡΡΠ΅Π΄Π΅ Node.js, Π½Π°ΠΏΠΈΡΠ°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠΊΠΎΡΠ΅Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ΅ΠΌ Π½ΠΎΡΠΌΠΎΠΉ.
ΠΠΎΠ³Π΄Π° Node.js Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, Π²ΡΠΎΠ΄Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ΅ΡΠΈ, Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, Node.js ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ.
βΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΡΠ΅ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Node.js, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ npm, ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Node.js ΠΏΡΡΠΌΠΎ-ΡΠ°ΠΊΠΈ ΠΏΡΠΎΡΠ²Π΅ΡΠ°Π΅Ρ. Π‘Π΅ΠΉΡΠ°Ρ Π² ΡΠ΅Π΅ΡΡΡΠ΅ npm ΠΈΠΌΠ΅Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»ΡΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ Node.js-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js, ΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΅Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. ΠΠ°ΡΠ½ΡΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Node.js
Node.js ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ.
Π’Π°ΠΊ, ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Node.js, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² macOS, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Homebrew. ΠΡΠ»ΠΈ ΠΎΠ½ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΅ΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Node.js, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ β Π΄Π»Ρ Linux ΠΈ Windows, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΉ Node.js ΡΠ²Π»ΡΠ΅ΡΡΡ nvm. ΠΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Node.js, Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Node.js, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π° ΡΡΠ°ΡΡΡ. Nvm ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΠΈ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΡΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ΄ Π½Π° ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Node.js.
Π― ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Π±Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ°ΠΌΠΈ Node.js. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ macOS Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Π±Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Node.js Ρ ΠΏΠΎΠΌΠΎΡΡΡ Homebrew. Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Node.js, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Β«Hello WorldΒ».
ΠΠ΅ΡΠ²ΠΎΠ΅ Node.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π‘Π°ΠΌΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Node.js ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ. ΠΠΎΡ Π΅Π³ΠΎ ΠΊΠΎΠ΄:
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ server.js ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠ°ΠΊΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π Π°Π·Π±Π΅ΡΡΠΌ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ http.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»Π΅ΠΌ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡ.
ΠΠ΅ΡΠΎΠ΄ createServer() ΠΎΠ±ΡΠ΅ΠΊΡΠ° http ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ HTTP-ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ.
Π‘Π΅ΡΠ²Π΅Ρ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ° Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Ρ ΠΎΡΡΠ΅. ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ², Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ»Π»Π±ΡΠΊ, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠΈΠΉ Π½Π°ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π² Π½Π°ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ Π·Π°ΠΏΡΠΎΡΠ΅. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ, Π½ΠΎ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° req ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ Π² Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
ΠΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π·Π°ΠΏΡΠΎΡ.
ΠΠ°Π»Π΅Π΅, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Content-Type :
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ ΠΎΡΠ²Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° end() :
ΠΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΎΠΊΡΡΠ³ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Node.js ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π»Π°ΡΡ ΠΌΠΎΡΠ½Π°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Node.js.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Node.js
Node.js β ΡΡΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π»Ρ Π½Π΅Ρ ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π»ΠΈ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ. ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΡΠΈΡΠ°Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΌΠΈ ΠΈ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠΌΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ:
ΠΡΠ°ΡΠΊΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ Node.js
Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ Node.js ΠΈΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡ ΡΠΆΠ΅ 9 Π»Π΅Ρ. ΠΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΠΎΡ Π²ΠΎΠ·ΡΠ°ΡΡ Ρ Π²ΠΎΠ·ΡΠ°ΡΡΠΎΠΌ JavaScript, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΆΠ΅ 23 Π³ΠΎΠ΄Π°, ΠΈΠ»ΠΈ Ρ 25-Π»Π΅ΡΠ½ΠΈΠΌ Π²ΠΎΠ·ΡΠ°ΡΡΠΎΠΌ Π²Π΅Π±Π°, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌ Π² ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π΅Π³ΠΎ Π·Π½Π°Π΅ΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠΈΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Mosaic.
9 Π»Π΅Ρ β ΡΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΡΠΎΠΊ Π΄Π»Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»Π° Π²ΡΠ΅Π³Π΄Π°.
Π― Π½Π°ΡΠ°Π» ΡΠ°Π±ΠΎΡΡ Ρ Node.js Ρ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π±ΡΠ»ΠΎ Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 2 Π³ΠΎΠ΄Π°. ΠΠ°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Node.js Π±ΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ, ΡΡΠΎ Node.js β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΡΡΠ·Π½ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ , Π»Π΅ΠΆΠ°ΡΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Node.js ΠΈ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ.
ΠΡΠ°ΠΊ, JavaScript β ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π² Netscape ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Netscape Navigator.
ΠΡΡ ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎ Node.js
ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ «Everything you need to know about Node.js» Π°Π²ΡΠΎΡΠ° Jorge RamΓ³n.
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Node.js ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ REST API’s. ΠΠ½Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ IoT.
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Node.js Π±ΠΎΠ»Π΅Π΅ 6 Π»Π΅Ρ ΠΈ Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π»ΡΠ±Π»Ρ Π΅Ρ. ΠΡΠΎΡ ΠΏΠΎΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΡΠ°Π΅ΡΡΡ Π±ΡΡΡ ΠΏΡΡΠ΅Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΏΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Node.js ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅.
Π ΡΠ΅ΠΌ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ:
ΠΠΈΡ Π΄ΠΎ Node.js
ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ»Π΅Π΄ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ β ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π½ΡΠΆΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡ Π² ΠΎΡΠ²Π΅Ρ. Π ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΠ΅ ΡΠ΅ΡΠ²Π΅Ρ, ΠΎΡΠ²Π΅ΡΠΈΠ² Π½Π° Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
Π’Π°ΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΡ (ΠΏΠ°ΠΌΡΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ Ρ.Π΄.). ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
ΠΠ½Π°ΡΠΈΡ Π»ΠΈ ΡΡΠΎ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ Π·Π° ΡΠ°Π·? ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ! ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠΎΡΠΎΠΊ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ΅ΡΡΡΡΡ, ΡΡΠΎ CPU Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ. Π‘ ΡΡΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ, ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΏΠΎΡΠΎΠΊ. Π’Π°ΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ thread-per-request model.
ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ N Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΡ Π½ΡΠΆΠ½ΠΎ N ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ N+1 Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π²ΡΡΠ΅, ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄ΠΎ 4 Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΠΏΠΎΡΠΎΠΊΠΎΠ²) Π΅Π΄ΠΈΠ½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 3 Π·Π°ΠΏΡΠΎΡΠ°, ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΆΠ΄Π°ΡΡ ΠΏΠΎΠΊΠ° Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ 4 ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ Ρ. Π΄.) Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅β¦.
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ Π·Π°Π±ΡΠ²Π°Π΅ΠΌ ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ .
ΠΠ»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΠ°ΠΌ ΡΡΠ°Π»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ? Π²ΡΡ ΠΈΠ·-Π·Π° Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΈ ΠΠ°ΠΌ Π½ΡΠΆΠ½Π° ΡΡΡΠ°Π½ΠΈΡΠ° Π³Π΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΎΠ²Π°ΡΠΎΠ².
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΡΡΠΈΡΡΡ Π½Π° http://yourstore.com/products ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΡ HTML ΡΠ°ΠΉΠ» ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΎΡΠ²Π΅Ρ. Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π΄Π°?
ΠΠΎ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ?
ΠΠ° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°? ΠΡ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅:
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ CPU ΡΠ°ΠΊΡΠΎΠ² |
---|---|
CPU Registers | 3 ΡΠ°ΠΊΡΠ° |
L1 Cache | 8 ΡΠ°ΠΊΡΠΎΠ² |
L2 Cache | 12 ΡΠ°ΠΊΡΠΎΠ² |
RAM | 150 ΡΠ°ΠΊΡΠΎΠ² |
Disk | 30,000,000 ΡΠ°ΠΊΡΠΎΠ² |
Network | 250,000,000 ΡΠ°ΠΊΡΠΎΠ² |
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ Ρ Π΄ΠΈΡΠΊΠ° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΌ API Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ.
ΠΠΎΠ΄Π±ΠΈΠ²Π°Ρ ΠΈΡΠΎΠ³ΠΈ: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΠΎΠΊ ΠΆΠ΄Π°ΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΡΡΡΡ Π²ΠΏΡΡΡΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° C10K
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°
C10k (Π°Π½Π³Π». C10k; 10k connections β ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° 10 ΡΡΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ)
Π ΡΠ°Π½Π½ΠΈΠ΅ 2000-Π΅, ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Π±ΡΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ 10 000 ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ thread-per-request (ΠΏΠΎΡΠΎΠΊ Π½Π° Π·Π°ΠΏΡΠΎΡ) Π½Π΅ ΠΌΠΎΠ³Π»Π° ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? Π§ΡΠΎ ΠΆ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ.
ΠΠ°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 1 ΠΠ± ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΏΠΎΡΠΎΠΊ, Π²ΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ β Π΄Π»Ρ 10 ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 10 ΠΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ°, ΠΈ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΠΌΡ Π² Π½Π°ΡΠ°Π»Π΅ 2000-Ρ !!
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅ΠΉ ΠΈ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π½Π°. ΠΠ»Ρ 10 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²Π½ΠΎΠ²Ρ (Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½Π° C10M Problem).
JavaScript ΡΠΏΠ°ΡΠ΅Π½ΠΈΠ΅?
ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ, ΡΠΏΠΎΠΉΠ»Π΅ΡΡ.
Node.js Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ C10Kβ¦ Π½ΠΎ ΠΊΠ°ΠΊ?!
Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΠΉ JavaScript Π½Π΅ Π±ΡΠ» ΡΠ΅ΠΌ-ΡΠΎ Π½ΠΎΠ²ΡΠΌ ΠΈ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΠΌ Π² Π½Π°ΡΠ°Π»Π΅ 2000-Ρ , Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ²Π΅ΡΡ JVM (java virtual machine) β RingoJS ΠΈ AppEngineJS, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ thread-per-request.
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Node.js ΡΠΌΠΎΠ³?! ΠΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ JavaScript ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ.
Node.js ΠΈ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ
Node.js
Node.js ΡΡΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ Google Chrome β V8, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ JavaScript ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄.
Node.js ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ Π²Π²ΠΎΠ΄ / Π²ΡΠ²ΠΎΠ΄ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ. ΠΡΠΎ Π½Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΈ Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΠΎ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Non-blocking I/O
Node.js ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠ΅ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΆΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ:
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π° Π·Π°ΠΏΡΠΎΡ ΠΊ /home ΡΠ΅ΡΠ²Π΅Ρ Π² ΠΎΡΠ²Π΅Ρ ΡΠ»ΡΡ HTML ΡΡΡΠ°Π½ΠΈΡΡ, Π° Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² β ‘Hello World’. Π§ΡΠΎ Π±Ρ ΠΎΡΠΎΡΠ»Π°ΡΡ HTML ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² http.createServer ΠΈ fs.readFile ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ β ΠΊΠΎΠ»Π±ΡΠΊΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ· ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ (ΠΠ΅ΡΠ²Π°Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡ, Π° Π²ΡΠΎΡΠ°Ρ β ΠΊΠΎΠ³Π΄Π° ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½ Ρ Π΄ΠΈΡΠΊΠ° ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠ½ Π² Π±ΡΡΠ΅Ρ).
ΠΠΎΠΊΠ° ΡΠ°ΠΉΠ» ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ Π΄ΠΈΡΠΊΠ°, Node.js ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΡΠ½ΠΎΠ²Π° ΠΈ Π²ΡΡ ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅β¦ Π½ΠΎ ΠΊΠ°ΠΊ?!
Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ
Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ β ΡΡΠΎ ΠΌΠ°Π³ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ Node.js. ΠΡΠΎ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ.
Libuv β C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΄ΡΠ° Node.js. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ libuv Π·Π΄Π΅ΡΡ.
Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ 6 ΡΠ°Π·, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ 6 ΡΠ°Π· Π½Π°Π·ΡΠ²Π°ΡΡ tick-ΠΎΠΌ.
Π₯ΠΎΡΠΎΡΠΎ, Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ, ΠΈ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ ΠΈ Π΅ΡΡΡ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΠΊΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°?
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠΎΠ³Π΄Π° ΡΠΈΠΊΠ»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ ΠΠ‘ Ρ ΡΡΠ΅Π΄ΠΏΡΠ»Π° (thread pool), Π° ΠΊΠΎΠ³Π΄Π° Π·Π°Π΄Π°ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΊΠΎΠ»Π»Π±ΡΠΊ ΡΡΠ°Π²ΠΈΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·Ρ pending callbacks.
Π Π°Π·Π²Π΅ ΡΡΠΎ Π½Π΅ ΠΊΡΡΡΠΎ?
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° CPU-ΡΠΌΠΊΠΈΡ Π·Π°Π΄Π°Ρ
Node.js ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ! ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΡΡ, ΡΡΠΎ Π·Π°Ρ ΠΎΡΠΈΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ API Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π».
ΠΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ β ΡΡΠΎ ΡΠ΅Π»ΠΎΠ΅ (Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅) ΡΠΈΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈ Π΄Π΅Π»ΠΈΠΌΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° 1 ΠΈ Π½Π° ΡΠ°ΠΌΠΎ ΡΠ΅Π±Ρ.
ΠΠ°Π½ΠΎ ΡΠΈΡΠ»ΠΎ N, API Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ N ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» Π² ΡΠΏΠΈΡΠΎΠΊ (ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²).
prime.js ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΡΠΆΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ: ΡΡΠ½ΠΊΡΠΈΡ isPrime ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΡΡΠΌ, Π° nthPrime Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ N ΡΠ°ΠΊΠΈΡ ΡΠΈΡΠ΅Π».
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊ Π½Π°ΠΌ ΡΡΡΡΠ°ΡΡΡ 3 ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΌΡΡΡ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ API:
ΠΠΎΠ³Π΄Π° ΡΡΠ΅ΡΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ»ΡΡ Π·Π°ΠΏΡΠΎΡ β Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ ΠΈ ΡΡΠΎ Π³Π»Π°Π²Π½ΡΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ CPU-ΡΠΌΠΊΠΈΡ Π·Π°Π΄Π°Ρ. ΠΠΎΠ³Π΄Π° Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π°Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Β«ΡΡΠΆΡΠ»ΠΎΠΉΒ» Π·Π°Π΄Π°ΡΠΈ ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π·Π°Π΄Π°Ρ.
ΠΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΡΡΡ libuv? ΠΡΠ»ΠΈ ΠΡ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Node.js ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΠ‘ ΠΈΠ·Π±Π΅Π³Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΏΡΠ°Π²Ρ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±Ρ ΡΡΠΎ ΡΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ, Π½Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ C++, ΡΡΠΎ Π±Ρ libuv ΠΌΠΎΠ³Π»Π° Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π ΡΡΠ°ΡΡΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ v10.5 Π² Node.js Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Worker Threads.
ΠΠΎΡΠΊΠ΅ΡΡ ΠΈ ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΈ
ΠΠΎΡΠΊΠ΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ CPU-ΡΠΌΠΊΠΈΡ JavaScript ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ; Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°, ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² Node.js ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠ΅ΠΌ Worker thread.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄:
primes-workerthreads.js ΠΈΠ·ΠΌΠ΅Π½ΡΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠ½ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ workerData (ΡΡΠΎ ΠΊΠΎΠΏΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°) ΠΈ parentPort ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ Π²ΠΎΡΠΊΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½Π°Π·Π°Π΄ Π² Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ½ΠΎΠ²Π° ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡΡ:
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ .
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ, Π½ΠΎ ΠΏΠ»ΠΎΠ΄ΠΈΡΡ Π²ΠΎΡΠΊΠ΅ΡΡ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ Π½Π° ΡΠΎ ΠΏΡΠΈΡΠΈΠ½ Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ Π»ΡΡΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅ Π΄Π΅ΡΡΠ²ΠΎΠ΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Node.js ΠΌΠΎΡΠ½Π°Ρ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΠΈΠ·ΡΡΠΈΡΡ ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠΎΡ Π»ΠΈΡΠ½Π°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ β Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡΠ΅ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΠΌΠΈ! ΠΡΠ»ΠΈ ΠΡ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ-ΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ·Π½ΡΡΡΠΈ, ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΡΠΎ Π²ΡΡ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΡΠ΅Π±ΡΡΠ°. Π― Π½Π°Π΄Π΅ΡΡΡ ΡΡΠΎΡ ΠΏΠΎΡΡ Π±ΡΠ» ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π΄Π»Ρ ΠΠ°Ρ ΠΈ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΎ Node.js.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎ Π²ΡΡΡΠ΅ΡΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΠΎΡΡΠ°Ρ
.
Π§Π΅ΠΌ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Node.js?
Node.js ΡΡΠΎ β ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript. Π§ΡΠΎ ΠΆΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
ΠΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Node.js Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° JavaScript.
Π Π°Π½ΡΡΠ΅ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ JavaScript ΡΠΎΠ»ΡΠΊΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π½ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΈ Π΅Π³ΠΎ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ JS Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Node.js.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Ρ JavaScript, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Ρ JavaScript Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠ³ΡΡ Π΄Π΅Π»Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Python.
ΠΠ±Π° β Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠΉ JavaScript ΠΈ Node.js Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ V8. ΠΡΠΎΡ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π°Ρ JS ΠΊΠΎΠ΄, ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π³ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΠ°ΡΠΈΠ½Π½ΡΠΉ β Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ½Π°ΡΠ°Π»Π° Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠΎΡΠ΅ΠΌΡ Node.js?
β Node.js β ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° JavaScript Π΄Π²ΠΈΠΆΠΊΠ΅ V8 ΠΈΠ· Chrome.
β Node.js ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ, Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ.
β ΠΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Node.js, npm, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² ΠΌΠΈΡΠ΅.
ΠΡ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠΎΠΊΡ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ: Β«Node.js β ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° JavaScript Π΄Π²ΠΈΠΆΠΊΠ΅ V8 ΠΈΠ· ChromeΒ». Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π΄Π²ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠΎΠΊΠ°Ρ , ΡΠ°ΠΊ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Node.js ΡΠ°ΠΊ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½.
I/O ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ: ΠΎΡ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄ΠΎ HTTP-Π·Π°ΠΏΡΠΎΡΠ° Π² API. I/O Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ user1 ΠΈ user2 ΠΈΠ· Π±Π΅ΠΊΠ΅Π½Π΄Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ / Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΎΠ±Π° Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΈ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ user2 Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½ΡΠ΅ user1 Π½Π΅ Π±ΡΠ΄ΡΡ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΡΠ»ΠΈ ΡΡΠΎ Π±ΡΠ» Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎ JavaScript ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ΅Π½ (Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ JavaScript Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ Π·Π°Π΄Π°Ρ.
ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ user2, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π·Π°ΠΏΡΠΎΡ user1. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π° Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ.
ΠΠ΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ JavaScript
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ 26 ΠΌΠΈΠ½ΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ-ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Node Event Loop:
ΠΡΠ»ΠΈ Π½Π΅ΡΡ, Π²ΠΎΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Event Loop Π² JavaScript:
1. ΠΠΎΡΡΠ»Π°Π΅ΡΠ΅ main() Π² ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
2. ΠΠΎΡΡΠ»Π°Π΅ΡΠ΅ console.log() Π² ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΠ½ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ.
3. ΠΠΎΡΡΠ»Π°Π΅ΡΠ΅ setTimeout(2000) Π² ΡΡΠ΅ΠΊ. setTimeout(2000) ΡΡΠΎ β Node API. ΠΠΎΠ³Π΄Π° ΠΌΡ Π΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ, ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅-ΠΊΠΎΠ»Π»Π±Π΅ΠΊ. Π‘ΠΎΠ±ΡΡΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ 2000 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΊΠΎΠ»Π»Π±Π΅ΠΊ.
4. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, setTimeout(2000) ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
5. Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠΎΡΠΎΠΉ setTimeout(0) ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π° API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Node, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
6. ΠΠΎΡΠ»Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ 0 ΡΠ΅ΠΊΡΠ½Π΄ setTimeout(0) ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠΎΠ² (callback queue), ΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ setTimeout(2000).
7. Π ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΆΠ΄ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ event loop.
8. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ console.log(), Π° main() Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ².
9. Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΡΡΡ, Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° β Π½Π΅Ρ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ (ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ) Π² ΡΡΠ΅ΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. ΠΠ½ΠΈ ΡΠ΅ΡΠ°Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. npm (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Node) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ.
Require
Require ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ Ρ Node.js, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ HTTP, ΠΈΠ· API Node.js.
ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Express ΠΈ Mongoose, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΠΈΠ· npm.
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ.
Require β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ ΠΎΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«ΠΏΡΡΡΒ» ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ module.exports.
Node ΠΌΠΎΠ΄ΡΠ»ΠΈ
Node ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠΎ β ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . Node.js ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π±ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
V8 ΡΡΠΊΠΎΡΡΠ΅Ρ JavaScript, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ C ++
V8 β Π΄Π²ΠΈΠΆΠΎΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° C ++.
V8 ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ECMAScript, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ECMA-262. ECMAScript Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Ecma International Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ JavaScript.
V8 ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½ Π² Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ C ++. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° C ++, ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ JavaScript.
Π‘ΠΎΠ±ΡΡΠΈΡ
Π‘ΠΎΠ±ΡΡΠΈΡ β ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈ Π½Π° ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠΈΡΡ.
Π Node Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΠΎΠ±ΡΡΠΈΠΉ: