Interviews (new Projects)
BugFixing flow
React
React ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ -- Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΌΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ ΠΊΠ°Π΄Ρ Π² ΡΠΈΠ»ΡΠΌΠ΅: ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ UI Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ (ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΊ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ). Props -- ΡΠ²-Π²Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ.
////////////////////////
DOM - ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ HTML Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ (ΡΠΎ Π΅ΡΡΡ ΡΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΌ) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° HTML.
Π₯ΠΎΡΡ DOM ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° HTML, ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΡΠ΄Ρ ΠΏΡΠΈΡΠΈΠ½:
ΠΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π²Π΅ΡΠ½ΡΠΉ (Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ) HTML ΠΊΠΎΠ΄
ΠΡΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Javascript
Π Π½Π΅Π³ΠΎ Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
::after
)Π Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄ΡΡ ΡΠΊΡΡΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
display: none
)
ΠOM - ΠΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° (Browser Object Model) -- Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎΠΌΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° (BOM) ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈΠ· JavaScript.
ΠΠ±ΡΠ΅ΠΊΡ window ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ JavaScript. ΠΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ JavaScript, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ window. -navigation -- ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ -location -- ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ URL ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ -history -- ΠΆΡΡΠ½Π°Π» Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ Π·Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Ρ ΠΎΠΊΠ½ΠΎΠΌ.
Π€ΡΠ½ΠΊΡΠΈΠΈ alert/confirm/prompt
ΡΠΎΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ BOM: ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ ΡΡΡΠ°Π½ΠΈΡΠ΅, Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΊΠ½Π° Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
////////////////////////
Virtual DOM
Virtual DOM - ΡΡΠΎ Π»ΡΠ±ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ DOM. Virtual DOM - ΡΡΠΎ ΠΎΡΠΊΠ°Π· ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² DOM, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΠΌΠΈ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² DOM ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ.
Virtual DOM Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅ΠΌ Ρ DOM, Π½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΆΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΡΠΎ ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΈ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ / Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅, ΠΈΠ·Π±Π΅Π³Π°Ρ ΠΏΡΡΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ DOM ΠΏΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ Π»Π΅Π³ΠΊΠΈΠΌ JavaScript-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΈΠΌΠΈΡΠΈΡΡΡΡΠ΅ΠΌ DOM-Π΄Π΅ΡΠ΅Π²ΠΎ.
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ DOM Π½Π°ΠΏΡΡΠΌΡΡ, ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠΏΠΈΡ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ, Π° ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ DOM. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ DOM-Π΄Π΅ΡΠ΅Π²Π° Ρ Π΅Π³ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ DOM. ΠΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΡΡΡ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΡ DOM ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ: 1.ΠΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. ΠΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ:
ΠΠ΅ΡΠ²ΡΠΉ ΠΈΠ· Π½ΠΈΡ β Β«dirty checkingΒ» (Π³ΡΡΠ·Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°) Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Β«observableΒ» (Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠΉ) Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΈ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ. ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΠΌΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ.
2. ΠΠ°ΠΊ? Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΡΠΌ:
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ DOM
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄-Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²
Shadow DOM
Shadow DOM - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π΅ΠΌΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Β«ΡΠ΅Π½Π΅Π²ΠΎΠ΅Β» DOM-Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Ρ Π½Π΅Π³ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ CSS-ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ Ρ.Π΄. Shadow DOM ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² DOM Π² ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π½ΠΎ Π½Π΅ Π² Π΄Π΅ΡΠ΅Π²ΠΎ DOM ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π’Π΅Π½Π΅Π²ΠΎΠΉ DOM β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ, ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ, DOM Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ DOM cΡΠΈΠ»ΠΈΠ·ΡΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ ΠΈΠ· ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°, Π½Π΅ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
Π’Π΅Π½Π΅Π²ΠΎΠΉ DOM ΠΎΡΠ΄Π΅Π»ΡΠ½ ΠΎΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°:
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ DOM Π½Π΅ Π²ΠΈΠ΄Π½Ρ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ DOM ΡΠ΅ΡΠ΅Π·
querySelector
. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ DOM ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΊΠ°ΠΊ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ DOM (light DOM). ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°.Π£ ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ DOM ΡΠ²ΠΎΠΈ ΡΡΠΈΠ»ΠΈ. Π‘ΡΠΈΠ»ΠΈ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ DOM Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ?
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ React β Π² Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ JavaScript. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΡΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ°ΡΡΠ΅ΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
function Welcome(props) {
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ DOM ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
return <h1>ΠΡΠΈΠ²Π΅Ρ, {props.name}</h1>;
}
// ΠΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅
ReactDOM.render(<Button label="Save" />, mountNode)
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ β ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ React, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ-ΠΎΠ±ΡΠ΅ΠΊΡ Β«propsΒ» (ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°) Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ React. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Β«ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈΒ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ JavaScript.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ - ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ props ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°Π±ΠΎΡ HTML.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΈΠ· ES6 Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
class Welcome extends React.Component {
render() {
return <h1>ΠΡΠΈΠ²Π΅Ρ, {this.props.name}</h1>;
}
}
ΠΠ²Π° Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ React.
Higher-Order Component (HOC)
ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π² React ΡΡΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΠΎ ΡΠ°ΠΊΡΡ, Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ ΠΎΡΠ΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΡΡΠ½ΡΠΈΠΎΠ½Π°Π».
import React from 'react';
const withSecretToLife = (WrappedComponent) => {
class HOC extends React.Component {
render() {
return (
<WrappedComponent
{...this.props}
secretToLife={42}
/>
);
}
}
return HOC;
};
export default withSecretToLife;
import React from 'react';
import withSecretToLife from 'components/withSecretToLife';
const DisplayTheSecret = props => (
<div>
The secret to life is {props.secretToLife}.
</div>
);
const WrappedComponent = withSecretToLife(DisplayTheSecret);
export default WrappedComponent;
ΠΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ WrappedComponent
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΊΠ°ΡΠ°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ <DisplayTheSecret/>
, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ SecretToLife
ΠΊΠ°ΠΊ ΠΊ ΠΏΡΠΎΠΏΡΡ.
JSX
JSX β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° JavaScript. Π€ΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ, JSX ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Ρ
Π°ΡΠΎΠΌ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ React.createElement(component, props, ...children)
. Babel ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ JSX Π² Π²ΡΠ·ΠΎΠ²Ρ React.createElement()
.
JSX = JS + HTML + CSS
Π HTML Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π JSX ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ Π² ΡΠ²ΠΎΡ Π²Π°ΡΠΈΠ°ΡΠΈΡ Π½Π° Π³ΠΎΡΠ±Π°ΡΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅:
onchange
=> onChange
Π’Π°ΠΊ ΠΊΠ°ΠΊ JSX ΡΡΠΎ JavaScript ΠΈ class
ΡΡΠΎ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
<p className="description">
Life Cycle methods
Π’ΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²!!!
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ΄ ΡΡΠ°ΠΏΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΡΠ°ΠΏΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
1.constructor(props): ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π² React ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ ΡΠ΅Π»Π΅ΠΉ:
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
this.state
.ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ this.state
. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ this.setState()
.
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ componentDidMount()
.
2. componentWillMount(): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
3. render(): ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ΅ React.Component
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ this.props
ΠΈ this.state
Π€ΡΠ½ΠΊΡΠΈΡ render()
Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΈΡΡΠΎΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ.
4. componentDidMount(): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ
componentDidMount()
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΎ Π΅ΡΡΡ, Π²ΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π² DOM). Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ Π½Π°Π»ΠΈΡΠΈΡ DOM-ΡΠ·Π»ΠΎΠ². ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ.
5. componentWillUnmount(): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ· DOM
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠ±ΡΠΎΡ: ΠΎΡΠΌΠ΅Π½Π° ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ², ΡΠ΅ΡΠ΅Π²ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
Π² componentDidMount()
.
ΠΡΠΎΠΌΠ΅ ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ°ΠΏΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
shouldComponentUpdate(nextProps, nextState): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° props ΠΈΠ»ΠΈ state. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ props ΠΈ state. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ true (Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ false (ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ true. ΠΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ false, ΡΠΎ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΡ ΠΎΡΠΊΠ»ΡΡΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ.
componentWillUpdate(nextProps, nextState): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π΅ΡΠ»ΠΈ shouldComponentUpdate Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true)
render(): ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π΅ΡΠ»ΠΈ shouldComponentUpdate Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true)
componentDidUpdate(prevProps, prevState): Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (Π΅ΡΠ»ΠΈ shouldComponentUpdate Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΡΠ°ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² props ΠΈ state.
Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ componentWillReceiveProps(nextProps), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° props. ΠΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈΠ· this.state
, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· props.
React Hooks
Π’ΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²!!!
100% ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ. Π₯ΡΠΊΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΠΎΠΌΠ°ΡΡ Π²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄.
Π₯ΡΠΊΠΈ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Β«ΠΏΠΎΠ΄ΡΠ΅ΠΏΠΈΡΡΡΡΒ» ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° React ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π₯ΡΠΊΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΎΠ½ΠΈ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ React Π±Π΅Π· ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Ρ ΡΠΊΠΈ Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ², ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Ρ ΡΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅.
UseState()
useState()
API Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ state
(ΠΌΡ Π½Π°Π·Π²Π°Π»ΠΈ Π΅Π³ΠΎ count
, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ) ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
useState()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ state
. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ 0
.
Π’Π°ΠΊ ΠΊΠ°ΠΊ useState()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ², ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: const [count, setCount] = useState(0)
, Π³Π΄Π΅:
count
- ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ state
, Π° setCount
ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠ΅Π½ΡΠ΅Ρ state
.
import React, { useState } from "react";
import ReactDOM from "react-dom";
const Counter = () => {
const [count, setCount] = useState(0);
const increment = () => setCount(count + 1);
const decrement = () => setCount(count - 1);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<Counter />, rootElement);
UseEffect()
Π ΠΊΠ»Π°ΡΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
, ΠΌΡ ΡΠ°ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ side effect ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ componentDidMount
, componentWillUnmount
ΠΈ componentDidUpdate
.
Hooks ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ useEffect()
API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
Π€ΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ / ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Π‘Π½Π°ΡΠ°Π»Π° React ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ DOM, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π»ΡΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² useEffect()
. Π Π²ΡΡ ΡΡΠΎ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΊΠΎΠ΄Π°, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΡΠ°ΡΡΡ
componentDidMount
ΠΈ componentDidUpdate
. Π§ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
const Counter = () => {
const [count, setCount] = useState(0);
const [name, setName] = useState("Alex");
const increment = () => setCount(count + 1);
const decrement = () => setCount(count - 1);
useEffect(() => {
console.log(`Hi ${name} you clicked ${count} times`);
});
return (
<div>
<p>
Hi {name} you clicked {count} times
</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
<button onClick={() => setName(name === "Alex" ? "Alexey" : "Alex")}>
Change name
</button>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<Counter />, rootElement);
componentWillUnmount
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ° ΠΏΡΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· useEffect()
:
useEffect(() => {
console.log(`Hi ${name} you clicked ${count} times`);
return () => {
console.log(`Unmounted`);
};
});
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ useEffect()
Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ / ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ React ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π²ΡΠ·ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
state
, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ. React Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ side effect ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
useEffect(() => {
console.log(`Hi ${name} you clicked ${count} times`);
}, [name, count]);
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ React Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ side effect ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· (Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·Π±ΠΎΡΠΊΠΈ), ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:
useEffect(() => {
console.log(`Hi ${name} you clicked ${count} times`);
}, []);
Useful link:
Styled components
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ CSS Π² JS c ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² ΠΈΠ· ΡΠ΅Π³ΠΎΠ².
const Button = styled.button`
font-size: 2em;
background-color: black;
color: white;
`;
//Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ:
const Button = styled.button`
color: palevioletred;
font-size: 20px;
margin: 10px;
padding: 5px 20px;
border: 2px solid palevioletred;
border-radius: 3px;
`;
// ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Button, Π½ΠΎ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ
const TomatoButton = styled(Button)`
color: tomato;
border-color: tomato;
`;
render(
<div>
<Button> Normal Button </Button>
<TomatoButton>Tomato Button</TomatoButton>
</div>,
);
Useful link:
React vs Angular
React ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠ°ΠΌΡΡΡΡ (virtual DOM).
React ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JavaScript (ES6), ΠΏΡΠΈΠ·Π½Π°Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠ·ΡΠΊ Ρ 1995 Π³ΠΎΠ΄Π°.
Angular ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ TypeScript, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠΉ Π² 2012 Π³ΠΎΠ΄Ρ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π°.
ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.
Π ES6 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ², ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ, Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΡΠΉ ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
ΠΠΈΠ½ΡΡΡ React:
Π‘Π°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠΈΠ½ΡΡΡ React ΠΈ Redux Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π½Π΅ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΌΠ΅ΡΡ, Π° Π² ΡΠΎΠΌ, ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΎΡΠΎΠΉΠ΄ΡΡΠ΅ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ React, Redux ΠΈ ΠΏΠ°ΡΡ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΡΠ΅ΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ½Π΅Π½ΠΈΠΉ ΠΎ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ Β», Ρ Π±Π΅ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° ΠΈΠ½ΠΎΠ³Π΄Π° β Π½Π΅Ρ.
React Π½Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ΅Π½ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·Π²ΠΈΡΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΈΠ»ΡΠ½ΡΠΌ Π»ΠΈΠ΄Π΅ΡΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
React ΠΎΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΠΠΠ).
JSX?
ΠΠ»ΡΡΡ:
ΠΠ΅Π³ΠΊΠΎ ΠΈΠ·ΡΡΠΈΡΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΌΡ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JSX (HTML-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ) Π΄Π»Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ JavaScript ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡΡ ΠΎ ΠΊΠΎΠ΄Π΅, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠΌ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΠ°Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ React Virtual DOM ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°.
ΠΡΠ»ΠΈΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΌΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠ²ΠΎΠΊΠ»Π°ΡΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Progressive Web App (PWA) Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ `create-react-app`.
ΠΡΠΈΠ²ΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ².
Redux, ΡΠ°ΠΌΠ°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² React, Π΅Π΅ Π»Π΅Π³ΠΊΠΎ ΡΡΠΈΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
React ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (FP), ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄.
Redux

Redux - Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π½ΡΡ - ΡΡΠΎΡΠ΅. ΠΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ Flux.
Redux-thunk - middleware - Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Action Creator ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ dispatch ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π°ΡΠΈΠ½Ρ Ρ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π΄ΠΈΡΠΏΠ°ΡΡΠ° ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½Ρ Ρ ΡΠΊΡΠ΅Π½Π° Π²Π½ΡΡΡΠΈ ΡΠ΅Π»Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ API Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΡΠΌΠΎ Π² Action Creatore.
Redux-thunk(middleware) Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
MiddleWare - ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΈΡΠΏΠ°ΡΡΠ΅ΠΌ ΠΈ ΡΠ΅Π΄ΡΡΡΠ΅ΡΠΎΠΌ; ΡΡΠΈΠ»ΠΈΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΡΠΎΡ ΠΈ Π²ΠΎΠ·Π²Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ dispatch.
ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ΅Π΄Π°ΠΊΡΠ°
ΠΌΠΈΠ½ΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠ°
JS
ΠΡΠ»ΠΈΡΠΈΠ΅ ES5 ΠΈ ES6
This
Event Loop
ΠΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΡΠ°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Π² Node.js, ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅.
ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΠ·Π°Π΄Π°ΡΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΌΠΈΠΊΡΠΎΠ·Π°Π΄Π°Ρ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΌΠ°ΠΊΡΠΎΠ·Π°Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ.
ΠΌΠ°ΠΊΡΠΎΡΠ°ΡΠΊΠΈ: setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° microtasks: process.nextTick, Promises, Object.observe, MutationObserver
ΠΠΈΠΊΡΠΎΠ·Π°Π΄Π°ΡΠΈ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π°. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΎΠΌΠΈΡΠ°ΠΌΠΈ: Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° .then/catch/finally
ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΈΠΊΡΠΎΠ·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠΈΠΊΡΠΎΠ·Π°Π΄Π°ΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ» await
, Ρ.ΠΊ. ΡΡΠΎ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠΌΠΈΡΠ°.
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠΌΠΈΡΠΎΠ² .then
/.catch
/.finally
Π²ΡΠ΅Π³Π΄Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Ρ. ΠΠ°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΌΠΈΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½, ΠΊΠΎΠ΄ Π² ΡΡΡΠΎΠΊΠ°Ρ
Π½ΠΈΠΆΠ΅ .then
/.catch
/.finally
Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Π΄ΠΎ ΡΡΠΈΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
let promise = Promise.resolve();
promise.then(() => alert("ΠΏΡΠΎΠΌΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½"));
alert("ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½"); // ΡΡΠΎΡ alert ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ, ΡΠ½Π°ΡΠ°Π»Π° Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½
, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΠΌΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½
. ΠΡΠΎ ΡΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΌΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎ Π±ΡΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ.
ΠΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ PromiseJobs
, Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΊΠ°ΠΊ Β«ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΈΠΊΡΠΎΠ·Π°Π΄Π°Ρ (microtask queue)Β» (ΡΠ΅ΡΠΌΠΈΠ½ V8).
ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ:
ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΌ-ΠΏΡΠΈΡΡΠ»-ΠΏΠ΅ΡΠ²ΡΠΌ-ΡΡΡΠ» (FIFO): Π·Π°Π΄Π°ΡΠΈ, ΠΏΠΎΠΏΠ°Π²ΡΠΈΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠΆΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌΠΈ.
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ .then/catch/finally
Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠΌΠ΅Ρ:
setTimeout(() => alert("timeout"));
Promise.resolve()
.then(() => alert("promise"));
alert("code");
ΠΠ°ΠΊΠΎΠΉ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ?
code
ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, Ρ.ΠΊ. ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ².promise
ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΎΡΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ.then
ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΌΠΈΠΊΡΠΎΠ·Π°Π΄Π°Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.timeout
ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΠ·Π°Π΄Π°ΡΠ°.
ΠΡΠ΅ ΠΌΠΈΠΊΡΠΎΠ·Π°Π΄Π°ΡΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Π΄ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΠΊΡΠΎΠ·Π°Π΄Π°ΡΠ΅.

Useful link:
Promise
Π ES6 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΠΌΠΈΡΠΎΠ². ΠΡΠΎΠΌΠΈΡ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΆΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ (Ρ.Π΅. ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ΠΏΡΠΎΠΌΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ: fulfilled (resolved, ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ rejected (Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ). Π ΡΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠΌΠΈΡ - ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ Π΄Π²Π° ΠΊΠΎΠ»Π»Π±ΡΠΊΠ° Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
Promise - observable, Π½ΠΎ ΠΎΡΠ΄Π°Π΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ±Π΅ΡΠ°Π½ΠΈΡ ~ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. Callbacks => Promises.
ΠΠ΅Π· ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠΉ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»Π° Π±Ρ Π³ΡΠΎΠΌΠΎΠ·ΠΊΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΠΊΠΎΠ»Π»Π±ΡΠΊΠΎΠ² Π² ΠΊΠΎΠ»Π»Π±ΡΠΊΠ°Ρ (CallBackHell). Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°ΡΠΎΠΌΠΎΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ»Π»Π±ΡΠΊΠΎΠ² ΠΏΡΠΎΠΌΠΈΡ Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ:
ΠΠΎΠ»Π»Π±ΡΠΊΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠ·Π²Π°Π½Ρ Π΄ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ JavaScript.
ΠΠΎΠ»Π»Π±Π΅ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· .then Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π±ΡΠ΄ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·Π²Π°Π½Ρ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»Π»Π±ΡΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ .then Π½ΡΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ.
ΠΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΠΎΠ»ΡΠ·Π° ΠΎΡ ΠΏΡΠΎΠΌΠΈΡΠΎΠ² - ΡΠ΅ΠΏΠΎΡΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² (chaining). Β«Π§Π΅ΠΉΠ½ΠΈΠ½Π³Β» (chaining), ΡΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠΎΠΈΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΈΠ· ΠΏΡΠΎΠΌΠΈΡΠΎΠ² β ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΈΠ·-Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΠΌΠΈΡΡ. ΠΡΠΈ ΡΠ΅ΠΉΠ½ΠΈΠ½Π³Π΅, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²Π°Ρ
.thenβ¦thenβ¦then
, Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ then
ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
ΠΡΠ»ΠΈ then
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠΌΠΈΡ, ΡΠΎ Π΄ΠΎ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ.
Π’ΠΎ Π΅ΡΡΡ, Π»ΠΎΠ³ΠΈΠΊΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°:
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ
then
ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ.ΠΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ
JSON.parse
). ΠΠ»ΠΈ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° β ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π΅Ρ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΠΏΡΠΎΠΌΠΈΡ.
Promise.resolve()
ΠΈ Promise.reject()
ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠΌΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
let promise = new Promise(function(resolve, reject) {
setTimeout(() => resolve("done!"), 1000);
});
// resolve Π·Π°ΠΏΡΡΡΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² .then
promise.then(
result => alert(result), // Π²ΡΠ²Π΅Π΄Π΅Ρ "done!" ΡΠ΅ΡΠ΅Π· ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ
error => alert(error) // Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π°
);
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error("Whoops!")), 1000);
});
// reject Π·Π°ΠΏΡΡΡΠΈΡ Π²ΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π² .then
promise.then(
result => alert(result), // Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π°
error => alert(error) // Π²ΡΠ²Π΅Π΄Π΅Ρ "Error: Whoops!" ΡΠΏΡΡΡΡ ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ
);
Promise.all()
ΠΈ Promise.race()
- Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ.
ΠΠ΅ΡΠΎΠ΄ Promise.all(iterable)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π²ΡΠ΅ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΎ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ
ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠΉ.
ΠΡΠ·ΠΎΠ² Promise.race
, ΠΊΠ°ΠΊ ΠΈ Promise.all
, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΡΠΎΠΌΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠΌΠΈΡ. ΠΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Promise.all
, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ²ΡΠΈΠΉΡΡ ΠΏΡΠΎΠΌΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ.
ΠΠ΅ΡΠΎΠ΄ then()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Promise
. ΠΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΊΠΎΠ»Π±ΡΠΊ-ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΌΠΈΡΠ°.
ΠΡΠΎΠΌΠΈΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π±Π΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π½Π΅Ρ ΠΎΠ±ΡΡΡΠΊΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠΌΠΈΡ.
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠΌΠΈΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°ΡΠ°ΡΡΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠ°ΠΊΡΡ ΠΎΠ±ΡΡΡΠΊΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ XMLHttpRequest.
Useful link:
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ Scope Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π JavaScript Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π² ΡΠ°ΡΡΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΈ Π² ΡΠ°ΡΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
function getCounter() {
let counter = 0;
return function() {
return counter++;
}
}
let count = getCounter();
console.log(count()); // 0
console.log(count()); // 1
console.log(count()); // 2
Useful link:
ΠΡΠΎΡΠΎΡΠΈΠΏΡ
JavaScript β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π° Π½Π΅ Π½Π° ΠΊΠ»Π°ΡΡΠ°Ρ . ΠΡΠΎΡΠΎΡΠΈΠΏΡ - ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ JavaScript Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ prototype. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ prototype ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΡΠ° ΡΡΡΠ»ΠΊΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ __proto__.
JavaScript ΡΠ°ΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΡΠΎΡΠΎΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ±ΡΠ΅ΠΊΡ-ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠΎ ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ² ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ .
Π’ΠΎΡΠ½Π΅Π΅, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ prototype
ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° Π½Π΅ Π² ΡΠ°ΠΌΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ
.
ΠΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ»ΠΊΡ __proto__
Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ· Π½Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ°ΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΎΠ½ΠΎ ΠΈΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ __proto__
. ΠΠ±ΡΠ΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ° __proto__
, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌΒ». ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΡΠΎΡΠΎΡΠΈΠΏ β ΡΡΠΎ Β«ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²Β» ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅.
Π JavaScript ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌ (ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ __proto__,
ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° prototype
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°), Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π΅ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ².

Useful link:
ΠΠ½Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ
Common
Scrum, ΡΠ΅ΡΠ΅ΠΌΠΎΠ½ΠΈΠΈ CI/CD/CD
ΠΠΠΠΠ vs Virtual Machine
Docker β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Docker ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΠ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ.
Π§ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Docker. Π’ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π° Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Docker:
ΠΎΠ±ΡΠ°Π· (image) β Π³ΠΎΡΠΎΠ²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΈΠ· Dockerfile ΠΈ ΡΠ»ΡΠΆΠ°ΡΠ°Ρ ΠΏΡΠΎΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΡΠ΅Π΅ΡΡΡ (registry) β ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΎΠ±ΡΠ°Π·ΠΎΠ². Docker Hub, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π° ΡΠ΅ΡΡ Π²ΡΡΠ΅, - ΡΡΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, Π³Π΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²;
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (container) β Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ.Π΅. ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π·Π°.
Π¦ΠΈΡΠΈΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Docker, Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ β ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ β ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠ΅Π΄ΠΎΠΉ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈΒ». ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΊΠ° ΠΆΠΈΠ²Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° (Ρ ΠΎΡΡ ΡΡΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π΅ ΡΠ°ΠΊ) Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Β«ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡΒ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΠΎ Π²ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ: ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Docker
Docker β ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ: Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°ΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΠ β ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Docker, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ
ΠΠ±ΡΠ°Π·Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Docker ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΠ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
Docker, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠ΅Π΄Ρ: Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΎΠ±ΡΠ°Π· Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. Π Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ, ΡΡΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ΅ Π²Π°ΡΠΈ ΡΠ΅ΡΡΡΡΡ β Docker ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡ, Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π΄Π΅Π»Π΅Π³ΠΈΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ ΠΈ ΠΠ‘ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ, β ΡΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π΅Π»Π°ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΈΡ Π±Π°Π·Π΅ ΡΡΠΎΠ»Ρ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ±ΠΈΠ»ΠΈΡΡ Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ ΡΡΠ΅Π΄ΠΎΠΉ Π·Π°ΠΏΡΡΠΊΠ°, ΡΠ΅ΡΠ°Ρ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΡΠ°Π·Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ²ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° Π½ΠΎΡΡΠ±ΡΠΊΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΡΠ±ΠΎΡΠΌ, ΠΈ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, Π° ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ β ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΎΠ½ΠΈΠΊΡΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ Π±Π°Π³ΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ "Π Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ!
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠΎΡΠ°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π»ΡΠ³ΠΊΠΎΡΡΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ Π±ΡΡΡΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΊ Ρ ΠΎΡΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π΄Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½Π΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° β Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π±Π΅Π· ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π° Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, bare metal ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΈ Π² ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ .
Π§Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
ΠΌΠ°ΡΠΈΠ½
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΡΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΡΠ΅Π΄Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ β Π΄Π²ΡΠΌΡ ΡΠ°ΠΌΡΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π΅ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ°. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ ΠΠ‘ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΡΠ΄ΡΠΎ host-ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. ΠΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ ΠΎΡΠ»ΠΈΡΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π±ΡΠ΄ΠΆΠ΅ΡΠ΅.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠΎ ΡΡΠΎΠΈΡ Π½Π° host-ΡΠΈΡΡΠ΅ΠΌΠ΅ β ΡΠΎ Π΅ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Windows-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° host-ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Linux Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ (Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ). ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°Π·Π½ΡΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΠ‘, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ubuntu ΠΈ Alpine Linux.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Π½ΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΄ΡΠΎ host-ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π±Γ³Π»ΡΡΠΈΠ΅ ΡΠΈΡΠΊΠΈ Π² ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ Π½Π΅Π±ΡΠ΅ΠΆΠ½ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Useful link:
ΠΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΡΡΡ/ΠΏΠΎΠ»ΠΈΡΡΠΈΠ»Ρ Π² IE
ΠΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ°ΠΉΡΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . Π Π΅ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΠΊ Π²Π΅ΡΡΡΠ°ΡΡ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎ?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ±ΡΠΎΡ ΠΈΠ»ΠΈ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Reset.css ΠΈΠ»ΠΈ normalize.css. ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°Ρ , ΡΠΎ ΡΠΌΡΡΠ» reset-Π° Π² ΡΠΎΠΌ, ΡΡΠΎΠ± Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΎΠ±Π½ΡΠ»ΠΈΡΡ (Π²ΡΠ΅ ΠΎΡΡΡΡΠΏΡ, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ.Π΄) ΠΈ Π½Π° ΡΡΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠ΅. Π‘ΠΌΡΡΠ» normalize β ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΡΠΈ ΡΡΠΈΠ»ΠΈ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ:) ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠΎΠ² ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΊΠΎΠ² Π²ΡΠΎΡΠΎΠ³ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Π΄ΠΎΠ»Π³ΠΎ Ρ ΠΏΠ΅Π½ΠΎΠΉ Ρ ΡΡΠ° ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ , Π½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ Π·Π°Π΄Π°ΡΡ. ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π΅Π½Π΄ΠΎΡΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠ΅Π½Π΄ΠΎΡΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ β ΡΡΠΎ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π° CSS, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ (Π²Π΅Π½Π΄ΠΎΡΠ°ΠΌΠΈ) Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ , Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ½ΡΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡ CSS ΡΠ²ΠΎΠΉΡΡΠ². Π’ΠΎ Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΡΠ΅ΡΠΈΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΡΡΡΠΎΠ΅, Π½ΠΎ ΡΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΅ΡΠ΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° Π½Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Ρ ΠΈ Π½Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Ρ Ρ ΡΠΎΡΡΠ°Π²ΠΈΡΠ΅Π»ΡΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², ΡΠΎ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠΎΠΉ. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ° ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ° Π°ΠΊΡΡΠ°Π»ΡΠ½Π°. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²Π΅Π½Π΄ΠΎΡΠ½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ:
-o- Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΠΏΠ΅ΡΠ°
-moz- Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈΠ· ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Mozilla
-ms- Π΄Π»Ρ Internet Explorer 8
-webkit- ΠΏΡΠ΅ΡΠΈΠΊΡ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ Webkit, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Safari ΠΈ Chrome (Π½Ρ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π½ΠΎΠ²ΡΠΉ Edge:)
-icab- Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° iCab (Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΡΠ²Π»Π΅Π½ΠΎ Π½Π° ΡΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅, Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π΄Π»Ρ Apple)
-khtml- KHTML β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° HTML Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ ΡΡΠ΅Π΄Ρ KDE Π΄Π»Ρ UNIX-ΡΠΈΡΡΠ΅ΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ placeholder Π΄Π»Ρ input-ΠΎΠ², Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π° ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ β ΠΊΠ°ΠΊ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠ»Π°ΡΡ. ΠΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΠΈΠ»ΠΈΠ·ΠΎΠ²Π°ΡΡ placeholder ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: pink;
}
::-moz-placeholder { /* Firefox 19+ */
color: pink;
}
:-ms-input-placeholder { /* IE 10+ */
color: pink;
}
:-moz-placeholder { /* Firefox 18- */
color: pink;
}
3. CSS-Ρ Π°ΠΊΠΈ. ΠΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ Π°ΠΊΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎΡΡΠΈ. Π‘Π°ΠΌΠΈ Ρ Π°ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ css-Ρ Π°ΠΊΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² Firefox:
@-moz-document url-prefix() {
.hackBlock {
background: blue;
}
}
CSS-Ρ Π°ΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°, Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡΠΈ, Π½Π΅ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
4. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»Ρ. ΠΠΎΠ»ΠΈΡΠΈΠ»Π» - ΠΊΠΎΠ΄, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΡΡΠ°ΡΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ.
4. ΠΠΎΠ²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° CSS ΠΈ JS ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π½Π° ΡΠ°ΠΉΡΠ΅ caniuse.com. ΠΡΠΎ ΡΠ΅ΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°ΠΌΡΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² CSS ΠΈ JS. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ Π»ΠΈ ΠΎΠ½Π°, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², Π·Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ Π½Π° caniuse ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅. 5. Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ°Π·Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ . 6. ΠΠ½ΡΠ΅ΡΠ΅ΡΡΠΉΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ Π²ΠΎ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄Π΅ Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠ°ΡΡΠ° ΡΠ°ΠΉΡΠΎΠ², ΡΠΈΠΏΠ° habr.ru, dou.ua, codeguida.com ΠΏΡΠ±Π»ΠΈΠΊΡΡΡ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠΈ Ρ ΡΠ°ΠΌΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΈ ΡΠ²Π΅ΠΆΠΈΠΌΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ ΠΏΠΎ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄Ρ.
Useful link:
SELF PRESENTATION!
ΠΡΠΎΠ½ΠΎΡ Ρ ΡΠ½Π²Π°ΡΡ.
Took part in development of the "Override Wage and Work Rules" feature. It was a modal window, where users are able to override and edit wages and Work Rules.
Built flow CI/CD and local DEV environment;
Integrated UI with NodeJS and Backend.
Took part in code review, sprint planning, demo sessions, retrospectives.
ΠΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ»ΡΡ Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌΠΈ?
ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°ΡΠΊΠΈ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ±ΡΠ°ΡΠ°Π»ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΡΡΠΎ ΡΡΠ°ΡΡ ΠΎΠ²Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ±ΡΠ°ΡΠ°Π»ΡΡ Π·Π° ΠΏΠΎΠΌΠΎΡΡΡ ΠΊ ΠΊΠ΅ΠΉ Π΄Π΅Π²Ρ, ΡΡΠ°Π²ΠΈΠ» Π² ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΡΡΡ Π’ΠΈΠΌ ΠΠΈΠ΄Π°. ΠΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΊΠ°Π» ΠΊΡΡΡΡ ΠΏΠΎ Π°Π½Π³ΡΠ»ΡΡΡ.
ΠΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΠΉΠ΄ΠΆ ΠΎΡ ΡΠΈΠΌ Π»ΠΈΠ΄Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΡΠΊΠ° ΠΊΠ΅ΠΉ Π΄Π΅Π²Π°.
Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ
Grunt, Webpack, Docker, Lodash, Git, Jenkins, BitBucket, TSLint, Jira, Confluence. JavaScript, ES6, TypeScript, AJAX, AngularJS, HTML5, CSS, LESS, Jasmine, Karma, NodeJS.
Π’ΠΈΠΌΠ°
Dev Team: 5 members (3 BE, 2 FE) QA Team: 3 engineers (2 manual, 1 automation); SM: 1 member; BA: 1 member.
+Scrum
+FightClub
How to fill 'Past Projects' section in UPSA?
Examples:




Last updated
Was this helpful?