ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΡΠΈΡ.
ΠΠ° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡΠ΅ΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π·Π°Π΄Π°ΡΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠΈΡΠΈ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΄Π°ΠΊΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΈΠ·Π°. Π Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° β ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΠΎΠΏΡΠΎΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΡ ΡΠΆΠ΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π»ΠΈ Π² ΡΡΠ°ΡΡΠ΅ ΠΠ°ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌ Π½Π°ΡΡΠΈΡΡΡΡ ΡΡΠ°Π²ΠΈΡΡ Π·Π°Π΄Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, Π½ΠΎ Π² Π½Π΅ΠΉ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠΊΠΎΡΠ΅Π΅ ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ . ΠΡΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½Π°Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°, ΠΏΡΠΎΠ΄Π°ΠΆΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ°ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΡΠ΅Π΄Π΅, ΠΏΠΎ ΡΡΡΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² Π±ΠΈΠ·Π½Π΅Ρ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π°ΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠ°ΡΡΠΈΠ½Ρ: Π² ΠΎΡΠ΄Π΅Π» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΠ°Π΄Π°ΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΎΡ ΡΠ°Π·Π½ΡΡ ΠΎΡΠ΄Π΅Π»ΠΎΠ², ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΈΡ Π·Π°Π΄Π°ΡΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠ°Π·ΠΌΡΡΠΎ, ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² Π±ΠΎΠΉ β ΡΡΠ°Π·Ρ ΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½Π° Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΡ (Π²Π΅Π΄Ρ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΎΠΏΠΈΡΠ°Π», ΡΡΠΎ Ρ ΠΎΡΠ΅Π», Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ΄Π΅Π»Π°Π» ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈΡΠ°Π» Π½ΡΠΆΠ½ΡΠΌ). ΠΡΠΎΠ³ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½: Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠ΅ ΡΡΠΎΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΌΠ΅ΡΡΡΠ°ΠΌΠΈ, Π΄Π΅ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π½Π°ΠΏΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ²Π°, Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΎΡΡΡΠ°Π²Π°Π½ΠΈΠ΅ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΠ΅ΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ Π½Π°ΡΠ°Π»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ (Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ) Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΡΠ°Π²ΠΈΡ Π·Π°Π΄Π°ΡΠΈ.
Π ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π½ΠΎ Π² Retail Rocket ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡ Π½Π° ΡΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΆΠ°Π»Π΅Π΅ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ β ΡΡΠΎ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ. ΠΡΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ , Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΡΠΎ ΡΠ°ΡΡΠΎ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΄Π°ΠΊΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΎΠ± ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΡΠ²Π΅ΡΡ Π½Π° Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ Π·Π°Π΄Π°ΡΠ΅.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΎΡΡΠΎΡΡ ΠΈΠ·:
User story
User story ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΎΠ»ΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ, ΡΡΠΎΠ±Ρ Π²ΠΎΠΏΠ»ΠΎΡΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ Π² ΠΆΠΈΠ·Π½Ρ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½:
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Trello:
Π Retail Rocket ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ User Stories Π² Google Docs, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π°ΡΡ ΡΠΈΠ΄Π±Π΅ΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π·Π°Π΄Π°ΡΠ° ΠΎΠ± ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠΈ NPS Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎ ΠΈ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ°ΡΠ΅ΠΌ Π½Π°ΡΡΡΠΏΠ°Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ use caseβΠΎΠ².
Use cases
Use cases ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ ΡΠ°Π³Π°ΠΌ ΠΏΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ.
ΠΠ°Π΄Π°ΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΡΡΠΌΠΈ, ΡΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ²ΠΎΠΉ use case. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ°Ρ , Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ use case Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°ΡΠ΅ΠΉ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΡΠΏΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΠΈ β ΠΠ°Π»Π΅ΡΠ΅Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΡΠΈΡΡΠΎΠ² Π΄Π»Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΡΠ°ΡΡΡΠ»ΠΎΠΊ.
Π¦Π΅Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ email-ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΉ.
ΠΡΠΈΠΌΠ΅ΡΡ use caseβΠΎΠ²:
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊ Π²Π°ΠΆΠ½Ρ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ΅ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π·Π°Π΄Π°ΡΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠ΅Π·Π΅Π½ΡΠΎΠ²Π°ΡΡ Π²Π°ΡΡ ΠΈΠ΄Π΅Ρ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
ΠΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠΆΠ΄Π°Π΅Ρ Ρ Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΎΡ ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΡΠΎΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΈΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΡΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΡ β ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ½ΡΡ ΡΠΈΡ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. Π Π΄Π°ΠΆΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΡΡΡΠ½ΡΡΡΡΡ Π²ΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°ΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, Π½ΠΎ Π½Π΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΠΌ.
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎ Π³Π°Π»Π΅ΡΠ΅Ρ. ΠΡΠ»ΠΈ Π±Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΡΠ΅Π» Ρ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°ΡΡ Π³Π°Π»Π΅ΡΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠ½ΠΊΡΠ΅ ΠΏΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΡΠΎΡΠ½ΡΡΡ:
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΏΡΠΎΠ΄Π°ΠΊΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΡΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΈ ΡΠ΅ΡΠΊΠΎ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠΈ.
Π§Π΅ΠΌ ΡΠΎΡΠ½Π΅Π΅ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π·Π°Π΄Π°ΡΠ° ΠΈ ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΠ°Π»Π΅ΠΉ Π΅ΡΡΡ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ, ΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΈΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ ΡΡΠ°ΡΠΈΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π΄ΠΎΠ»Π³ΡΡ ΠΈ ΠΏΠΎΠ΄ΡΠ°Ρ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ Π² Π²ΡΠΈΠ³ΡΡΡΠ΅: ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π° ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ Π΅Π΅ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ».
Π ΠΊΠ°ΠΊ Π²Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ?
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° 8 ΡΠ°Π³ΠΎΠ²
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ΡΡΠ΅Π· ΠΏΠΎΠ΄ΡΠΌΡΠ²Π°Π΅ΡΠ΅ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΠ²Π΅ΡΡΡΠ΅ Π½Π° Π΄Π²Π° Π²ΠΎΠΏΡΠΎΡΠ°:
ΠΠ΅ΡΠ²ΠΎΠ΅ β Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠ΄Π½ΠΎΠΉ. ΠΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΈ ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°ΠΊΡΠΈΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ.
ΠΡΠΎΡΠΎΠ΅ β Π΅ΡΡΡ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ 6 ΠΏΡΡΠ΅ΠΉ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΌΡΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΠΊΠ°ΠΊ single page application, Π³Π΄Π΅ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Ρ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· REST API. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° 8 ΡΠ°Π³ΠΎΠ².
1. Π Π°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π±ΡΠΊΠ΅Π½Π΄Π°
ΠΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ: Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ Π±ΡΠΊΠ΅Π½Π΄Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ (ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°) ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅. Π Π°Π±ΠΎΡΠ°Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, Π° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΡΡΠΏΠ½ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π²ΡΠΎΡΠΎΠΉ.
2. ΠΡΠ±ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΈΡΠΈΡΠ΅ Π½Π° Python (ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Django, Flask), Node JS (ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Express JS, Koa JS, Gatsby JS), Ruby (ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Ruby on Rails, Grape). ΠΡΠ»ΠΈ Π² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Golang (ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Gingonic, Beego, Revel). ΠΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ Microsoft β C#, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ «ΡΠΈ ΡΠ°ΡΠΏ». ΠΠ½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ CLR. Π‘# Π²ΠΎΠ±ΡΠ°Π» Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΎΡ C++, ΠΠΎΠ΄ΡΠ»Π°, Delphi, Smalltalk ΠΈ Java, Π½ΠΎ ΡΠ°Π·Π½ΠΈΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π‘# ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΠ‘. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, C# Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ C++ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², Π½ΠΎ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². ΠΠ»Π°Π²Π½ΠΎΠ΅, ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ ΡΠ·ΡΠΊ Π²Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π»ΠΈ, ΠΊΠΎΠ΄ΠΈΡΡ Π½Π° ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°Π΅ΡΠ΅.
3. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ
Π‘ΠΏΠ΅ΡΠ²Π° ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ΡΡ Π½Π° ΠΏΠ°ΡΡΠ΅ΡΠ½ MVC, Π° ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΡΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ presenter ΠΈ interactor. ΠΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ presenter ΠΈ interactor Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΡΠΎΠ²Π½ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΌΡΡΠ»ΠΎΠ²ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
Presenter ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (UI) ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»Ρ callback ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ (Interactors). Presenters Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΡ Π·Π°Π΄Π°ΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ presenters Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ (View).
Interactor ΠΏΠΎ ΡΠ°ΠΊΡΡ Π²ΠΌΠ΅ΡΠ°ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Interactor ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ½ΠΎΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π° Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, presenters, c ΠΏΠΎΠΌΠΎΡΡΡ callback.
4. QA-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠΊΠ΅Π½Π΄Π°
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΡ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ «Π²ΡΡΡΠ½ΡΡ» ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ UI/UX ΠΈ API. ΠΡΠΎΠΏΠΈΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ roadmap Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡΠΌΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ «Π²ΠΈΡΠ½Π΅Ρ» ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· Π±Π°Π³ΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΠ΅Π².
5. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ²Π°Π³Π³Π΅ΡΠ°
Swagger β ΡΡΠΎ «ΡΠΌΠ½Π°Ρ» Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ RESTful web-API. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ REST API, Π΄Π°ΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½ΠΎ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Swagger UI. Π ΡΠ΅ΠΏΠ΅ΡΡ Π½Π° ΡΡΠ΅Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ ΡΠΆΠ΅ Π½Π°ΡΠ°Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ? ΠΠ°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄ Π±ΡΠΊΠ΅Π½Π΄Π°? ΠΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π½Π΅ Π»ΡΡΡΠΈΠΉ Π²ΡΡ ΠΎΠ΄.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ²Π°Π³Π³Π΅ΡΠ°, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ΅Π½Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ²Π°Π³Π³Π΅Ρ Π΅ΡΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ API.
6. Π Π°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΠ±ΡΡΠ½ΠΎ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Angular, React, Vue. Π£ Π½ΠΈΡ Ρ Π²ΡΠ΅Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΈ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΎ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ΠΎΠΌ React, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π»Π΅Π³ΡΠ΅, ΠΏΡΠΎΡΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ.
7. QA-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ΅ΡΡΠΈΡΡΡΡ Π΄Π²ΡΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ ΡΠ΅ΡΡΠΎΠ² β Π½Π° Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². Π’Π΅ΡΡΡ Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π·Π°Π΄ΡΠΌΠ°Π»ΠΈ, ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄. ΠΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ QA-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΊΠ°ΠΊ Mocha, Chai, Jest, Ava, Enzyme, Jest β ΠΎΠ½ΠΈ ΡΠ°ΠΌΡΠ΅ Ρ ΠΎΠ΄ΠΎΠ²ΡΠ΅, ΠΏΡΠΎΡΡΡΠ΅ Π² ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΈΠ· Π²ΡΠ΅Ρ .
8. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΡΠ΅Π΄ΡΠΌΠΎΠΉ ΡΡΠ°ΠΏ, Π²Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Π³ΠΎΡΠΎΠ²ΠΎ. ΠΡ, ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ β 98%. Π§ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΏΠΎ ΠΈΡΠΎΠ³Ρ? ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, β ΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ Π²Π°ΡΠΈΡ Π΅Π³ΠΎ ΠΈΠ·Π½ΠΎΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΠΈ. Π ΡΡΠΎΠΌ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Lighthouse β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Lighthouse ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°ΡΠ΄ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π‘ΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Lighthouse Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΠΈ Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π² Π½Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π΅ΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ, Π½Π°ΡΠ°Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΡΡΠΈΡΡ Π²ΡΠ΅ «ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ» ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠ°ΡΡΠΈΡΡ ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Ρ Π²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ, Π° Π²ΠΎΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ° Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π±Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΡΡΠ½ΡΡΡΡΡ ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ΅ΡΡΡΡ. ΠΡΠ΄ΡΡΠ΅ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΈ ΡΠ°ΠΌΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π²Π° Π²ΠΎΠΏΡΠΎΡΠ°: Π²ΡΠ΅Π³Π΄Π° ΡΡΠ°Π²ΡΡΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΅ΡΠ°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, ΠΈ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ Π΄Π»Ρ Π²Π°Ρ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΡΠ΅ΡΡ. ΠΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ ΠΈΠ΄ΡΠΈ ΠΏΡΡΠ΅ΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΡ.
ΠΠ΅Π»Π°Π΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½ΡΠ»Ρ
ΠΡΠ°ΠΊ, Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠΎΡ β Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΉΠ΄ΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°? ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ? Π§ΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΆΠ΅ ΡΠΎ ΡΡΠ°ΡΡΠ° ΡΠΌΠ΅ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π½Π°Π±ΡΠΎΡΠ°ΡΡ boilerplate ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ:
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΅ΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠΏΠ΅ΡΠ²Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ! Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Ρ ΡΠ΅ΡΠΈΠ» ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ wiki-Π΄Π²ΠΈΠΆΠΎΠΊ. Π£ Π½Π°Ρ Π±ΡΠ΄ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ, ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΠ΅ Π² Markdown; ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈ (ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ) ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΡΠ°Π²ΠΊΠΈ. ΠΡΡ ΡΡΠΎ ΠΌΡ ΠΎΡΠΎΡΠΌΠΈΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ server-side rendering (ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ Π½Π°ΡΠΈΡ Π±ΡΠ΄ΡΡΠΈΡ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°).
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎΠΉΠ΄ΡΠΌΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ:
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°: git
ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, Π½ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²Π΅ΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π² git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Github. ΠΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΡΡΠ°ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ (Ρ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΠ΅Π±Π΅ΠΉΠ·ΠΈΠ», ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΡΠΎΠ³ΠΎ!).
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°: docker-compose
ΠΠ°ΡΠ½ΡΠΌ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈ ΡΠΎΠΌ ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ, Π²Π΅ΡΡΠΌΠ° Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ docker-compose.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ°ΠΉΠ» docker-compose.yml ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²ΠΊΡΠ°ΡΡΠ΅, ΡΡΠΎ ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
ΠΠ΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΉ docker/backend/.dockerignore :
ΠΠΎΡΠΊΠ΅Ρ Π² ΡΠ΅Π»ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ Π±ΡΠΊΠ΅Π½Π΄Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ gunicorn Ρ Π½Π°Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΠΈΡΠΎΠ½ΡΡΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ:
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠΎΠ½ΡΠ΅Π½Π΄. ΠΡΠΎ Π½Π΅Π³ΠΎ Π½Π° Π₯Π°Π±ΡΠ΅ Π΅ΡΡΡ ΡΠ΅Π»Π°Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ, Π½ΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΉ Π΄ΠΈΡΠΊΡΡΡΠΈΠΈ Π½Π° StackOverflow ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π² Π΄ΡΡ Π΅ Β«Π Π΅Π±ΡΡ, ΡΠΆΠ΅ 2018, Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡ Π΅ΡΡ Π½Π΅Ρ?Β» ΡΠ°ΠΌ Π²ΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ. Π― ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ Π΄ΠΎΠΊΠ΅ΡΡΠ°ΠΉΠ»Π°.
ΠΡΠ°ΠΊ, Π½Π°Ρ ΠΊΠ°ΡΠΊΠ°Ρ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π³ΠΎΡΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠ»Π½ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ!
ΠΡΠΊΠ΅Π½Π΄: ΠΊΠ°ΡΠΊΠ°Ρ Π½Π° Flask
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ Π±ΡΠΊΠ΅Π½Π΄ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΠΠΠΠ―Π’Π¬!
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: ΠΊΠ°ΡΠΊΠ°Ρ Π½Π° Express
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½Π°ΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Node.js Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (Ρ ΠΎΡΡ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΠ·Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ npm init ΡΠ΅ΡΠ΅Π· Docker, Π½Ρ Π΄Π° Π»Π°Π΄Π½ΠΎ).
Π Dockerfile ΠΌΡ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ npm run build ΠΈ npm run start β Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² package.json ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠΎΠΌΠ°Π½Π΄Π° build ΠΏΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, Π½ΠΎ ΠΎΠ½Π° Π½Π°ΠΌ Π΅ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ.
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Express ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² index.js ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
Π’Π΅ΠΏΠ΅ΡΡ docker-compose up frontend ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π½Π°Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄! ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π½Π° http://localhost:40002 ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΊΡΠ°ΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ βHello, worldβ.
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: ΡΠ±ΠΎΡΠΊΠ° Ρ webpack ΠΈ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ plain text. Π ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ App ΠΈ Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠ±ΠΎΡΠΊΡ.
ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° React ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JSX β Π΄ΠΈΠ°Π»Π΅ΠΊΡ JavaScript, ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π²ΠΈΠ΄Π°
ΠΠ΄Π½Π°ΠΊΠΎ, JavaScript-Π΄Π²ΠΈΠΆΠΊΠΈ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΠΏ ΡΠ±ΠΎΡΠΊΠΈ. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ JavaScript (Π°Π³Π°-Π°Π³Π°) ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ
Π°Ρ Π² ΡΡΠΎΠ΄Π»ΠΈΠ²ΡΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ JavaScript, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΠΌΠΏΠΎΡΡΡ, ΠΌΠΈΠ½ΠΈΡΠΈΡΠΈΡΡΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
2014 Π³ΠΎΠ΄. apt-cache search java
ΠΡΠ°ΠΊ, ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠ΅Π³Π»Π΅ΠΌ.
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π°:
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ ΠΊΡΠ°ΡΠΎΡΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ:
webpack β ΠΌΠΎΠ΄Π½ΡΠΉ ΠΌΠΎΠ»ΠΎΠ΄ΡΠΆΠ½ΡΠΉ ΡΠ±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ JS (Ρ
ΠΎΡΡ Ρ ΡΠΆΠ΅ ΡΡΠΈ ΡΠ°ΡΠ° Π½Π΅ ΡΠΈΡΠ°Π» ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°ΡΡΡΡ ΠΌΠΎΠ΄Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½);
babel β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΏΡΠΈΠΌΠΎΡΠ΅ΠΊ Π²ΡΠΎΠ΄Π΅ JSX, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ ΠΏΠΎΠ»ΠΈΡΠΈΠ»Π»ΠΎΠ² Π½Π° Π²ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ IE.
ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Ρ Π²Π°Ρ Π²ΡΡ Π΅ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π°, Π²Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ
Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΠΎΠ²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΈΠΌ webpack:
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π» babel, Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ frontend/.babelrc :
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ Π½Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ npm run build :
ΠΡΠΊΠ΅Π½Π΄: Π΄Π°Π½Π½ΡΠ΅ Π² MongoDB
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ Π²Π΄ΡΡ Π°ΡΡ Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Ρ, Π½Π°Π΄ΠΎ ΡΠΏΠ΅ΡΠ²Π° Π΅Ρ Π²Π΄ΠΎΡ Π½ΡΡΡ Π² Π±ΡΠΊΠ΅Π½Π΄. ΠΠ°ΠΆΠ΅ΡΡΡ, ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π»ΠΈΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π² Markdown ΠΊΠ°ΡΡΠΎΡΠΊΠΈ β ΠΏΠΎΡΠ° ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ORM Π΄Π»Ρ MongoDB Π½Π° ΠΏΠΈΡΠΎΠ½Π΅, Ρ ΡΡΠΈΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ORM ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ ΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π° Π²Π°ΡΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ DAO:
(ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π² Python, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π³Π»ΡΠ½ΡΡΠ΅ ΡΡΠΈ ΡΡΠ°ΡΡΠΈ!)
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ MongoCardDAO ΠΈ Π΄Π°ΡΡ Flask-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ. Π₯ΠΎΡΡ ΡΠ΅ΠΉΡΠ°Ρ Ρ Π½Π°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ β ΠΊΠ»ΠΈΠ΅Π½Ρ pymongo β Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ pymongo β MongoCardDAO ), Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π·Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΡΡ-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π΄Π΅Π»Π°ΡΡΠΈΠΉ dependency injection (ΠΎΠ½ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΠΌ ΡΠ½ΠΎΠ²Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π΄Π΅Π»Π°ΡΡ Π²ΠΎΡΠΊΠ΅Ρ ΠΈ tools).
ΠΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΡ Π² Flask-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΎΠΌ!
Π£ΠΏΡβ¦ ΠΎΡ , ΡΠΎΡΠ½ΠΎ. ΠΠ°ΠΌ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ! ΠΠ°Π²Π΅Π΄ΡΠΌ ΠΏΠ°ΠΏΠΊΡ tools ΠΈ ΡΠ»ΠΎΠΆΠΈΠΌ Π² Π½Π΅Ρ ΡΠΊΡΠΈΠΏΡΠΈΠΊ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠΈΠΉ ΠΎΠ΄Π½Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΡ:
Π£ΡΠΏΠ΅Ρ ! Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠΎ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅.
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: Redux
ΠΠ°ΡΠ½ΡΠΌ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Redux. Redux β JavaScript-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ΄Π΅Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΡΡΠΈ Π½Π΅ΡΠ²Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π²Π°ΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠΎΠ±ΡΡΠΈΡΡ , ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π° Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π΄Π»Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΌΡ ΡΠΏΠ΅ΡΠ²Π° Π²ΠΊΠ»ΡΡΠ°Π»ΠΈ Π³ΠΈΡΠΊΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΠΎΡΠΎΠΌ Π΄Π΅Π»Π°Π»ΠΈ Π·Π°ΠΏΡΠΎΡ ΡΠ΅ΡΠ΅Π· AJAX ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π² success-ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠ΅ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΠΎ Π² Redux-ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ Π½Π°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ βΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π° Π³ΠΈΡΠΊΡ Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉβ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°ΠΊ, ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΠΊΠΈΠ½Π΅Ρ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, ΠΏΠΎΡΠΎΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡ, Π° Π² Π΅Π³ΠΎ success-ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, βΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π° ΠΏΠΎΠ΄Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉβ. Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΡΡΠΎ ΡΠ°ΠΌΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ.
ΠΠ°ΡΠ½ΡΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΠΎΠ²ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠ΅ΡΠ²ΠΎΠ΅ β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Redux, Π²ΡΠΎΡΠΎΠ΅ β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠΊΡΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ React ΠΈ Redux (written by mating experts), ΡΡΠ΅ΡΡΠ΅ β ΠΎΡΠ΅Π½Ρ Π½ΡΠΆΠ½Π°Ρ ΡΡΡΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π² Π΅Ρ ΠΆΠ΅ README, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΠ΅ΡΠ²ΡΡΡΠΎΠ΅ β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Redux DevTools Extension.
ΠΠ°ΡΠ½ΡΠΌ Ρ Π±ΠΎΠΉΠ»Π΅ΡΠΏΠ»Π΅ΠΉΡΠ½ΠΎΠ³ΠΎ Redux-ΠΊΠΎΠ΄Π°: ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π΄ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΌΠΎΡΠ°Π»ΡΠ½ΠΎ Π³ΠΎΡΠΎΠ²ΡΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ Redux:
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: ΡΡΡΠ°Π½ΠΈΡΠ° ΠΊΠ°ΡΡΠΎΡΠΊΠΈ
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ SSR, Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π±Π΅Π· SSR! ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π½Π°ΡΠΈΠΌ Π³Π΅Π½ΠΈΠ°Π»ΡΠ½ΡΠΌ API Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ°ΡΡΠΎΡΠΊΠ°ΠΌ ΠΈ ΡΠ²Π΅ΡΡΡΠ°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅.
ΠΡΠ΅ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠΎΠΌ ΠΈ Π·Π°Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠΎΠΌ Π½Π΅ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠΌ:
ΠΠ°Π²Π΅Π΄ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Β«ΠΊΠ°ΡΡΠΎΡΠΊΠ°Β», ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ props ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ cardData (ΠΎΠ½ΠΎ ΠΆΠ΅ β ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ Π² mongo):
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°Π²Π΅Π΄ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠΎΠΉ. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π΅Π½ Π·Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· API ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ Π² Card. Π ΡΠ΅ΡΡΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ React-Redux way.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ»ΠΈΠΊ frontend/src/redux/actions.js ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΠ°ΡΡ ΠΈΠ· API ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡ Π½Π΅:
ΠΡ , Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π§Π’Π-Π’Π ΠΠΠΠΠΠ’! ΠΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ Π² ΡΠ΅Π΄ΡΡΡΠ΅ΡΠ΅:
(ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ²Π΅ΡΡ ΠΌΠΎΠ΄Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ.)
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ½Π΅ΡΠ΅Π½Π° Π² Redux actions, ΡΠ°ΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° CardPage Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ page.type Π² Π½Π°Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ App:
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β Π½Π°Π΄ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ page.type ΠΈ page.cardSlug Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ URL ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², ΠΌΡ ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ Π³Π»ΡΠΏΠΎ. ΠΠΎΡ ΠΏΡΡΠΌ ΡΠΎΠ²ΡΠ΅ΠΌ Π³Π»ΡΠΏΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π³ΡΠ»ΡΡΠΊΠΎΠΉ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ!
Π’Π°ΠΊ, ΡΠ΅ΠΊΡΠ½Π΄ΠΎΡΠΊΡβ¦ Π° Π³Π΄Π΅ ΠΆΠ΅ Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ? ΠΡ , Π΄Π° ΠΌΡ Π²Π΅Π΄Ρ Π·Π°Π±ΡΠ»ΠΈ ΡΠ°ΡΠΏΠ°ΡΡΠΈΡΡ Markdown!
ΠΠΎΡΠΊΠ΅Ρ: RQ
ΠΠ°ΡΡΠΈΠ½Π³ Markdown ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ HTML Π΄Π»Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° β ΡΠΈΠΏΠΈΡΠ½Π°Ρ Β«ΡΡΠΆΡΠ»Π°ΡΒ» Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΡΠΌΠΎ Π½Π° Π±ΡΠΊΠ΅Π½Π΄Π΅ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π²ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ β Π²ΠΎΡΠΊΠ΅ΡΠ°Ρ .
ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ Π·Π°Π΄Π°Ρ; ΠΌΡ Π²ΠΎΠ·ΡΠΌΡΠΌ Redis ΠΈ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠΊΡ RQ (Redis Queue), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π΄Π°Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ pickle ΠΈ ΡΠ°ΠΌΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΏΠ°ΡΠ½ΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠ΅ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅Π΄ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π²Π°ΠΉΡΠΈΠ½Π³!
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠΉΠ»Π΅ΡΠΏΠ»Π΅ΠΉΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π²ΠΎΡΠΊΠ΅ΡΠ°.
ΠΠ»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΡΡΠΈΠ½Π³Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠΊΡ mistune ΠΈ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΆΠΎΠ±Ρ, ΠΏΡΠΎΠΊΠΈΠ΄ΡΠ²Π°ΡΡΠΈΠΉ Π²Π°ΠΉΡΠΈΠ½Π³ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ kwargs-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²ΠΎ Π²ΡΠ΅ ΡΠ°ΡΠΊΠΈ. (ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΠΠΠ«Π Π²Π°ΠΉΡΠΈΠ½Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π½Π΅Π»ΡΠ·Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ RQ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ.) Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΠ°ΡΠΊΠΈ Π½Π΅ ΡΡΠ°Π»ΠΈ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π²Π°ΠΉΡΠΈΠ½Π³Π° β ΡΠΎ Π΅ΡΡΡ ΠΎΡ ΠΠ‘ΠΠ₯ Π½Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², β Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°Π²Π°ΡΡ ΠΈΠ· Π²Π°ΠΉΡΠΈΠ½Π³Π° ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΠΎΠ΅:
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΡΠ°ΡΠΊΠ΅ ΠΈ ΡΠ°Π΄ΡΠ΅ΠΌΡΡ ΠΆΠΈΠ·Π½ΠΈ:
Π Π°Π΄ΡΠ΅ΠΌΡΡ ΠΆΠΈΠ·Π½ΠΈ? Π’ΡΡΡ, Ρ Ρ ΠΎΡΠ΅Π» ΡΠΊΠ°Π·Π°ΡΡ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π²ΠΎΡΠΊΠ΅Ρ:
ΠΠΈΠΈΠΈβ¦ ΠΎΠ½ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ! ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Π΅Π΄Ρ ΠΌΡ Π½Π΅ ΡΡΠ°Π²ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΡΠΊΠΈ!
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ Π½Π°ΡΡ ΡΡΠ»Π·Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π°: Π°) Π½Π΅ ΠΏΠ°Π΄Π°Π»Π°, Π΅ΡΠ»ΠΈ ΠΊΠ°ΡΡΠΎΡΠΊΠ° ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π° (ΠΊΠ°ΠΊ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅); Π±) ΡΡΠ°Π²ΠΈΠ»Π° ΡΠ°ΡΠΊΡ Π½Π° ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΌΠ°ΡΠΊΠ΄Π°ΡΠ½Π°.
ΠΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠΌ, ΠΌΡ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅:
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ SSR, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ Π½Π°ΡΡ Π²ΠΎΠ·Π½Ρ Ρ React Ρ ΠΎΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ-ΡΠΎ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΠ΅ single page application Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ single page. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Π½Π°ΡΡ ΡΡΠ»Π·Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΎΡΡ Π΄Π²Π΅ (ΠΠ ΠΠΠΠ, Π ΠΠΠ! ΠΠΠΠ, Π― Π’ΠΠΠΠ Π¬ ΠΠΠ ΠΠΠ’Π ΠΠΠΠΠΠΠΠΠ !) ΠΊΠ°ΡΡΠΎΡΠΊΠΈ, ΡΡΡΠ»Π°ΡΡΠΈΠ΅ΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°, ΠΈ ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΉΠΌΡΠΌΡΡ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ ΠΈ ΡΠΎΠ·Π΅ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π°ΡΠ΅ ΡΡΠ΄Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ. Π₯Π²Π°ΡΠΈΡ ΡΡΠΎ ΡΠ΅ΡΠΏΠ΅ΡΡ!
Π‘ΠΏΠ΅ΡΠ²Π° Π½Π°Π²Π΅ΡΠΈΠΌ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΠΊΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ HTML ΡΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Ρ Π½Π°Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Ρ Π±ΡΠΊΠ΅Π½Π΄Π°, Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½Π°Ρ Π½Π° React, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ React-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΠΊΡΡ.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π³Π»ΡΠΏΠ΅Π½ΡΠΊΠΈΠΉ ΡΠ΅Π΄ΡΡΡΠ΅Ρ ΠΏΠΎΠ΄ ΡΡΠΎ Π΄Π΅Π»ΠΎ:
ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ°ΡΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ URL ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΡΡΠΎΡΠΊΠ°ΠΌΠΈ β Π΄Π°ΠΆΠ΅ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Hello, world-ΠΊΠ°ΡΡΠΎΡΠΊΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ demo-ΠΊΠ°ΡΡΠΎΡΠΊΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π²ΠΏΠ΅ΡΡΠ΄-Π½Π°Π·Π°Π΄ ΡΠΎΠΆΠ΅ ΠΎΡΠ²Π°Π»ΠΈΠ»Π°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ Ρ history, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΈΠ½ΠΈΡΡ ΡΡΠΎ!
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ URL Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠΠ°Π·Π°Π΄Β» ΡΠ»ΠΎΠΌΠ°Π΅ΡΡΡ!
Π Π²ΠΎΡ ΠΊΠ°ΠΊ β Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ navigate:
ΠΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΡΠΎΡΠΈΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄: server-side rendering
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ (Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄) ΡΠΈΡΠ΅ΡΠΊΠΈ β SEO-Π΄ΡΡΠΆΠ΅Π»ΡΠ±ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π² React-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ , Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° React, ΠΈ Π΅ΡΡ ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΠΎΡΠΎΠΌ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ½ΠΎΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ.