ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ трСбования

БСгодня ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ наша продуктовая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈ создании Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΠΈΡ‡.

На этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ нСоТиданностСй, особСнно Ссли Π½Π΅ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΠΈΡ‡ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ участники ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, поэтому ΠΏΡ€ΠΎΠ΄Π°ΠΊΡ‚-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° созданиС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π΄ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°. И ваТная Ρ‡Π°ΡΡ‚ΡŒ этого процСсса β€” ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΠΈΡΠ°Ρ‚ΡŒ трСбования ΠΊ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ

Вопрос описания Π·Π°Π΄Π°Ρ‡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π»ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Как ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π½ΠΎ Π² Π½Π΅ΠΉ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ большС ΠΏΡ€ΠΎ административныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, Π° сСгодня Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ скорСС ΠΎ тСхничСских. Π­Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ ваТная ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ любого бизнСса, ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. КаТдая компания, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π°ΡΡΡ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-срСдС, ΠΏΠΎ сути прСвращаСтся Π² бизнСс ΠΏΠΎ производству ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Но нСсмотря Π½Π° это, ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈ Π² области управлСния трСбованиями, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ часто Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: Π² ΠΎΡ‚Π΄Π΅Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ постоянно ΠΏΠ°Π΄Π°ΡŽΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΡ‚Π΄Π΅Π»ΠΎΠ², трСбования Π² этих Π·Π°Π΄Π°Ρ‡Π°Ρ… описаны Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΎ, ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ выпускаСтся Π² Π±ΠΎΠΉ – сразу ΠΆΠ΅ возвращаСтся Π½Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ (вСдь постановщик Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° описал, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π», Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сдСлал Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ посчитал Π½ΡƒΠΆΠ½Ρ‹ΠΌ). Π˜Ρ‚ΠΎΠ³ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½: нСпрСдсказуСмыС сроки выполнСния Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΡ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ мСсяцами, дСмотивированная ΠΊΠΎΠΌΠ°Π½Π΄Π°, напряТСнныС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π°, Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, отставаниС ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π­Ρ‚ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π°Ρ‚ΡŒ простой Ρ€Π΅Ρ†Π΅ΠΏΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ Π½Π°Ρ‡Π°Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ смСло Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ (Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ) всСм, ΠΊΡ‚ΠΎ ставит Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ Ρ€Π°Π·Π½Ρ‹Ρ… компаниях ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ написанию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π½ΠΎ Π² 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, ΠΈ Π΅Ρ‰Ρ‘ ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ снова ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *