ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΡΠ°
ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΉΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° 3 ΠΌΠΈΠ½.
ΠΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠ°ΠΉΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Β«Android StudioΒ», ΠΊ Π½Π΅ΠΉ ΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ Java SDK. ΠΡΡ ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΠ, ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ ΡΠ°ΠΌΡΡ ΠΌΠ°Π»ΠΎΡΡΡ Π·Π½Π°Π½ΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠ°ΠΉΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° 3 ΠΌΠΈΠ½ΡΡΡ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡ ΠΠ°ΠΌ. ΠΡΡΠ°ΡΠΈ, ΡΠ°ΠΉΡ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ°Π·Ρ 2 Π²Π΅ΡΡΠΈΠΈ: ΠΏΠΎΠ΄ IOS ΠΈ Android.
ΠΠ½Π»Π°ΠΉΠ½ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, Ρ Π²ΡΡΡΠ΅ΡΠΈΠ» ΡΠ°ΠΉΡ Β«GoNativeΒ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄. Π’ΠΎΠ³Π΄Π° Π²ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ Π±ΡΠ»ΠΈ ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΈ ΡΡΠΎΡ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²ΠΈΠ». Π― ΡΠ΄Π΅Π»Π°Π» ΡΠ΅Π±Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π»ΡΠ±ΠΈΠΌΡΠΌ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠΈΠ½ΠΎΡΠ΅Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΠΠ½Π΄ΡΠΎΠΈΠ΄ Π’Π ΠΠΎΠΊΡΠ°. ΠΠ΅Π΄Π°Π²Π½ΠΎ, ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΎΠΏΡΡΡ Π·Π° ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ°ΠΉΡΠ° ΠΈ Π½Π°ΠΉΡΠΈ ΡΡΠΎΡ ΡΠ°ΠΉΡ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π° Π²ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΠ»Π°ΡΠ½ΡΠ΅. ΠΡΡ ΠΆΠ΅ Ρ Π΅Π³ΠΎ Π½Π°ΡΠ΅Π», ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡ Ρ Π²Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ.
Π§ΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΡΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ 3 ΠΏΠΎΠ»Ρ: 1 β Π°Π΄ΡΠ΅Ρ ΡΠ°ΠΉΡΠ°; 2 β Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ; 3 β ΠΏΠΎΡΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ΄Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠ΅Π³ΠΎ. ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π½Π° Π»ΡΠ±ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΠΎΠΏΡΠΎΡΡ β Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ²Π΅ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ !
ΠΠ°ΠΊ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ 7 ΡΡΡΠΎΠΊ JSON
Π ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ²ΡΠΎΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌ iOS ΠΈ Android ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ΅Π±Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠ°ΠΉΡΠΎΠ² ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ. ΠΠ³ΠΎ ΡΠ°ΡΡΠΊΠ°Π· Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠ΅Ρ ΡΠ°ΠΌΡΡ ΡΠ΅ΠΌΠΈ ΡΡΡΠΎΠΊ JSON-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΉΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠ±Π·ΠΎΡ
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π²ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π²Π΅Π±-ΡΠ°ΠΉΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π·Π° Β«ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅Β» ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΡΠ΅ΠΌΡ ΡΡΡΠΎΠΊ JSON, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΡΠ°Π½ΠΆΠ΅Π²ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π§ΡΠΎ, Π΅ΡΠ»ΠΈ Ρ ΡΠΊΠ°ΠΆΡ Π²Π°ΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ, Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΡΠ²Π°ΡΡ ΡΠ°ΠΉΡ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Π½Π΅ΠΊΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ, ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΠΈΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΡΠ΅ΡΡΡΡΠ° ΠΊ Π²ΠΈΠ΄Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΡΠ° ΠΊ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π²ΡΡΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ URL?
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²ΠΎΡ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΡ JSON, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ API, Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ?Β».
ΠΠΎΠΊΠ° Π²Ρ ΡΠ°Π·ΠΌΡΡΠ»ΡΠ΅ΡΠ΅ Π½Π°Π΄ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ Ρ Ρ ΠΎΡΡ Π·Π΄Π΅ΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ Ρ Π²ΡΡΡΠΎΠΈΠ» Π² ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Ρ github.com, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ β ΡΡΠΎ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π²ΡΠΎΠ΄Π΅ Π²Π΅ΡΡ Π½Π΅ΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΠΊΠΎΠ΄ ΡΠ°ΠΉΡΠ°.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ, Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΡΡ ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ΄ΡΡ ΡΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, Π° Π½Π΅ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Β«ΠΏΡΠΎΡΠΌΠΎΡΡΡΠΈΠΊΠ°Β» Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ?Β».
ΠΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΎΡΠ²Π΅ΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° Π΄Π°Π½Π½Π°Ρ ΡΡΠ°ΡΡΡ. ΠΡΠ»ΠΈ Π² Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ , ΡΠΎ ΡΡΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π·Π΄Π΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π²Π΅Π±-ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ JavaScript-ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π°ΡΠΈΠ²Π½ΡΠΌ API, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π·Π° Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ.
ΠΠ·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΠΉ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ QR-ΠΊΠΎΠ΄ΠΎΠ²
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, QR-ΠΊΠΎΠ΄ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π½ΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ·ΠΎΠ²Π° JavaScript-ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄ΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π΅ΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΡΡΠ°Π»ΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π² Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° HTML5.
ΠΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΡ ΠΊΡΡΡΠΈΡΡΡ Π²ΠΎΠΊΡΡΠ³ Π²ΠΎΠΏΡΠΎΡΠ° ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ±Π΅Π΄ΠΈΡ: ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° HTML5 ΠΈΠ»ΠΈ Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΡ API. Π§ΡΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ, Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ΅ΠΌΠ° ΡΠΎΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ², ΠΈ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ΅ΠΊΡ ΡΠΈΠ½Π΅ΡΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ, ΠΏΠΎΠ»Π°Π³Π°ΡΡΡ Π»ΠΈΡΡ Π½Π° ΡΡΠΎ-ΡΠΎ ΠΎΠ΄Π½ΠΎ.
Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΠ°Ρ :
ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ?
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ HTML ΠΈ JS Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΊΡΡΠ°ΡΠΈ.
β1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²Π΅Π±
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, WebSocket β ΡΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° Π²Π΅Π±. ΠΠ»Ρ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΎΠΊ ( WKWebView Π΄Π»Ρ iOS ΠΈ WebView Π΄Π»Ρ Android) Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Β«ΡΠΌΡΠ»ΠΈΡΡΠ΅ΡΒ» WebSocket.
ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ. ΠΡΠΎ Π²Π΅Π΄ΡΡ Π½Π°Ρ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
β2. Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π±Π΅Π· ΡΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΡΡΠΎΠΈΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ QR-ΠΊΠΎΠ΄ΠΎΠ², ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ ΠΈ JS-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½Π½ΡΡ ΠΊ ΡΡΡΠ°Π½ΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ
ΠΠ΅Π»Π°Π΅ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½ΡΠ»Ρ
ΠΡΠ°ΠΊ, Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠΎΡ β Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΉΠ΄ΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°? ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ? Π§ΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΆΠ΅ ΡΠΎ ΡΡΠ°ΡΡΠ° ΡΠΌΠ΅ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ?
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π½Π°Π±ΡΠΎΡΠ°ΡΡ 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, ΠΈ Π΅ΡΡ ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΏΠΎΡΠΎΠΌ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ½ΠΎΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ.