Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² Qt Creatorβ€”ArcGIS AppStudio

Π’Ρ‹Π²ΠΎΠ΄ Π² консоль

ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ AppStudio являСтся использованиС сообщСний console.log вашСго ΠΊΠΎΠ΄Π° QML, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти сообщСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² консоли Qt Creator ΠΈ подходят для всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Π° инсталляция Π½Π°Π±ΠΎΡ€Π° Qt. НСобходим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ AppStudio.

Для запуска прилоТСния Π² Qt Creator Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Запуск Π² мСню Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ > Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ > AppStudio. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ Alt+Shift+R Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° Qt Creator.

Π Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Qt Creator

ВСрсия Qt Creator Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с AppStudio вСрсии 4.0 обСспСчиваСт Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ инструмСнтам ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Qt Creator. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 Π² Qt Creator, Π»ΠΈΠ±ΠΎ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π»Π΅Π²ΠΎΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° Qt Creator.

Π‘ΠΌ. Ρ€Π°Π·Π΄Π΅Π» ВзаимодСйствиС с ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Qt для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± использовании инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² Qt Creator.

Π₯отя докумСнтация Qt содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ C ++, для использования этого языка трСбуСтся лицСнзия Qt SDK, которая Π½Π΅ прСдоставляСтся Π² AppStudio.

Π’ΠΎΡ‡ΠΊΠΈ останова

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Qt Creator, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ достигаСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… строк ΠΊΠΎΠ΄Π°, пСрСдавая Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС прилоТСния ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ построчно ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ.

МоТно Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ способами:

  • НаТмитС F9 (F8 Π² macOS) с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° строкС, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова.
  • Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ слСва ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° строки.
  • Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π² пустоС мСсто Π²ΠΈΠ΄Π° Π’ΠΎΡ‡ΠΊΠΈ останова ΠΈ ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки Π² появившСмся ΠΎΠΊΠ½Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова.
  • Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² Π²ΠΈΠ΄Π΅ Π’ΠΎΡ‡ΠΊΠΈ останова Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки Π² появившСмся ΠΎΠΊΠ½Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова.

Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ остановится Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π³Π΄Π΅ Π²Ρ‹ установитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ Qt Creator, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΎΠΏΡ†ΠΈΠΈ для возобновлСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, остановки прилоТСния ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова, Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² Π²ΠΈΠ΄Π΅ Π’ΠΎΡ‡ΠΊΠΈ останова Π»ΠΈΠ±ΠΎ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова. Π’ этом ΠΎΠΊΠ½Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ останова, Π° Ρ‚Π°ΠΊΠΆΠ΅ условия Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ остановится Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ΅ останова, количСство Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ° останова Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ остановкой прилоТСния, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для автоматичСского ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΡ€ΠΈ достиТСнии Ρ‚ΠΎΡ‡ΠΊΠΈ останова.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π΅Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· F9 (F8 Π² macOS), Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΈΠ»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΈΠ»ΠΈ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всС Ρ‚ΠΎΡ‡ΠΊΠΈ останова.

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… останова см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π΅ΠΊ останова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Qt.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ QML

Помимо Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ возникновСния Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, JavaScript Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ QML. НапримСр, слишком активная Ρ€Π°Π±ΠΎΡ‚Π° JavaScript Π² нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт QML Profiler для поиска ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, отслСТивая, Π² частности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript, использованиС памяти ΠΈ события Π²Π²ΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ QML Profiler,сначала ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Qt Creator. Π—Π°Ρ‚Π΅ΠΌ, с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ > QML Profiler. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ QML Profiler Π² Qt Creator. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Π°ΠΌ дСйствия Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ QML Profiler. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ QML Profiler Π΅ΡΡ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° сцСны повСдСния вашСго прилоТСния. Π’ вашСм Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½Ρ‹Π΅ значСния Π·Π° врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΎ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части своСго ΠΊΠΎΠ΄Π°.

Для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ QML Profiler см.ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ QML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Qt.


ΠžΡ‚Π·Ρ‹Π² ΠΏΠΎ этому Ρ€Π°Π·Π΄Π΅Π»Ρƒ?

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ устранСниС распространённых ошибок Π² JavaScript

Π’Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ JavaScript заставляСт Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π²Ρ‹Π΄ΠΎΡ…ΡˆΠΈΠΌΡΡ ΠΈ ΠΈΠ·ΠΌΠΎΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΌ, поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подсказки ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ лишними. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΠ· пСсСн ΠΌΡ‹ постараСмся Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки Π² ΠΊΠΎΠ΄Π΅ Π½Π° JS ΠΈ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ.

Бвойство Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ

let girl = {
    name: "Lucky",
    location: "Hollywood",
    profession: "star",
    thingsMissingInHerLife: true,
    lovely: true,
    cry: function() {
        return "cry, cry, cries in her lonely heart"
    }
}

console.log(girl.named.lucky)

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Β«Uncaught TypeError: Cannot read property β€˜lucky’ of undefinedΒ». Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ girl Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ свойства named, хотя Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ свойство name. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ свойство girl.named Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΎ просто Π½Π΅ сущСствуСт. Если ΠΌΡ‹ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ girl.named.lucky Π½Π° girl.name, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²Π΅Ρ€Π½Ρ‘Ρ‚ Π½Π°ΠΌ Β«LuckyΒ».

Бвойство β€” Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, привязанноС ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ JavaScript. ΠŸΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ большС ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ здСсь (ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° английском языкС).

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ошибок TypeError

Ошибки Ρ‚ΠΈΠΏΠ° TypeError ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ дСйствия с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСняСтС .bold() ΠΊ числу, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ свойство undefined ΠΈΠ»ΠΈ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ. НапримСр, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ girl(), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π½Π΅ функция. Π’ послСднСм случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Β«Uncaught TypeError: yourVariable.bold is not a functionΒ» ΠΈ Β«girl is not a functionΒ».

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ этих ошибок Π½Π°Π΄ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ girl? И Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ girl.named? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ это изучая ΠΊΠΎΠ΄, выводя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

console.log, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ debugger ΠΈΠ»ΠΈ просто Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π² имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² консоли. Π£Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТащимся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Если Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ условиС ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊ try..catch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

Если Π²Π΅Ρ€ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ пСсни Β«Baby One More TimeΒ», слово Β«hitΒ» Π² строчкС Β«Hit me baby, one more timeΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π‘Ρ€ΠΈΡ‚Π½ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Ρ‘ Π±Ρ‹Π²ΡˆΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ» Π΅ΠΉ Π΅Ρ‰Ρ‘ Ρ€Π°Π·. Π­Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π΅Ρ‰Ρ‘ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ количСству Π·Π²ΠΎΠ½ΠΊΠΎΠ² Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. По сути это рСкурсия, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² случаС пСрСполнСния стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ².

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ сообщСния ΠΎΠ± ошибкС зависят ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Π½ΠΎ выглядят ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Error: Out of stack space (Edge)
InternalError: too much recursion (Firefox)
RangeError: Maximum call stack size exceeded (Chrome)

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Ссли Π² рСкурсии Π½Π΅ прСдусмотрСн Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ случай ΠΈΠ»ΠΈ Ссли ΠΊΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ обращаСтся ΠΊ этому ΡΠ»ΡƒΡ‡Π°ΡŽ.

function oneMoreTime(stillBelieve=true, loneliness=0) {
    if (!stillBelieve && loneliness < 0) return
    loneliness++
    return oneMoreTime(stillBelieve, loneliness)
}

Π’ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ stillBelieve

Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, ΠΈ поэтому ΠΌΡ‹ Ρ€Π°Π· Π·Π° Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ oneMoreTime, увСличивая одиночСство, ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Если ΠΆΠ΅ Π‘Ρ€ΠΈΡ‚Π½ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° своих Π΄Ρ€ΡƒΠ·Π΅ΠΉ, это ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ Π΅Ρ‘ одиночСство, ΠΎΠ½Π° пСрСстанСт Π²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ большС ΠΆΠ΄Π°Ρ‚ΡŒ Π·Π²ΠΎΠ½ΠΊΠ° ΠΎΡ‚ Π±Ρ‹Π²ΡˆΠ΅Π³ΠΎ ΠΏΠ°Ρ€Ρ‚Π½Ρ‘Ρ€Π°.

function oneMoreTime(stillBelieve=true, loneliness=0) {
    if (!stillBelieve && loneliness < 0) return
    loneliness--
    stillBelieve = false
    return oneMoreTime(stillBelieve, loneliness)
}

Π•ΡΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ случаи с бСсконСчными Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° систСма Π½Π΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ сообщСниС ΠΎΠ± ошибкС, Π½ΠΎ вмСсто этого страница, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ исполняСтся ΠΊΠΎΠ΄, зависаСт. Π­Ρ‚ΠΎ происходит Π² случаС Ρ†ΠΈΠΊΠ»Π°

while Π±Π΅Π· условия Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

let worldEnded = false

while (worldEnded !== true) {
  console.log("Keep on dancin' till the world ends")
}

Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

let worldEnded = false

while (worldEnded !== true) {
  console.log("Keep on dancin' till the world ends")
  worldEnded = true
}

ΠžΡ‚Π»Π°Π΄ΠΊΠ° бСсконСчных Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ рСкурсий

Для Π½Π°Ρ‡Π°Π»Π°, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ, Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ, Ссли Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Chrome ΠΈΠ»ΠΈ Edge, ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ссли Ρƒ вас Firefox. Π—Π°Ρ‚Π΅ΠΌ просмотритС ΠΊΠΎΠ΄: Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ‚Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ создаёт бСсконСчный Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ. Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ β€” Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ†ΠΈΠΊΠ» ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

debugger ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… итСрациях. Если ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ, Π²Ρ‹ это ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ стоило Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ debugger самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π² Chrome ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Β Scope. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«nextΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ руководство Π½Π° английском языкС ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Chrome’s DevTools, Π° здСсь β€” для Firefox.

Ошибка синтаксиса

SyntaxError β€” вСроятно самая распространённая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ошибок Π² JavaScript. Π­Ρ‚ΠΈ ошибки Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Ссли Π²Ρ‹ Π½Π΅ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° синтаксиса языка. ΠšΠΎΠΏΠΈΡ€ΡƒΡ посыл пСсни Π‘Ρ€ΠΈΡ‚Π½ΠΈ Β«EverytimeΒ», JavaScript Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ скобкам ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌ: Β«Π’Ρ‹ Π½ΡƒΠΆΠ½Ρ‹ ΠΌΠ½Π΅, ΠΊΡ€ΠΎΡˆΠΊΠΈΒ».

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок. Bracket Pair Colorizer Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ скобки Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ, Π° Prettier ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструмСнт статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ быстро Π½Π°ΠΉΡ‚ΠΈ ошибки. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΈ с минимальной Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сильно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²Ρ‹ станСтС Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ сильнСС Π² JavaScript, Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΈ Π²Ρ‡Π΅Ρ€Π°.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Oops, I did it again: A guide to debugging common JavaScript errors

ΠžΡ‚Π»Π°Π΄ΠΊΠ° Node.js с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google Chrome

ΠžΡ‚Π»Π°Π΄ΠΊΠ° (debugging)β€Šβ€”β€ŠΡΡ‚ΠΎ процСсс выявлСния ΠΈ устранСния ошибок Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… прилоТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Π½Π΅Ρ‡Ρ‚ΠΎ большСС, Ρ‡Π΅ΠΌ просто просто Π²Ρ‹Π²ΠΎΠ΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π—Π°Π΄Π°Ρ‡Π° этой ΡΡ‚Π°Ρ‚ΡŒΠΈ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ способ эффСктивной ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Node.js ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ послСднСй вСрсии Google Chrome DevTools.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ console.log Π½Π΅ самый Π»ΡƒΡ‡ΡˆΠΈΠΉΒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚?

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

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ рядом ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ ΡƒΒ console.log. Π’ частности, ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прилоТСния Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Настройка Google Chrome для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈΒ Node.js

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Chrome 57+ функция ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Node.js Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, поэтому Π½Π΅Ρ‚ нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΏΠ°Π½Π΅Π»ΠΈ Experimental Feature, ΠΊΠ°ΠΊ это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π² старых вСрсиях.

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Google Chrome Π΄ΠΎ послСднСй вСрсии (Ссли Π²Ρ‹ этого Π΅Ρ‰Π΅ Π½Π΅ сдСлали) ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Node.js 6.4+.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, запуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Node.js с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π°β€Šβ€”β€Šinspect.

$ node --inspect <your_file>.js

Β 

Запуск прилоТСния Π½Π° Node.js Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈβ€Šβ€”β€ŠDebugging Mode.

Β 

Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ URL-адрСс, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉΡΡ с Β«chrome-devtools: //Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отобразится Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, Π° вмСсто Π½Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу Β«about: inspectΒ» Π² Google Chrome.

Β 

Ѐункция β€œInspect” Π² инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°β€Šβ€”β€ŠChrome DevTools.

Β 

НаконСц, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Open dedicated DevTools for NodeΒ» (Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов DevTools для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ NodeΒ»), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠΎΠ΄Π° своСго прилоТСния.

Β 

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°Β Node

Β 

Если этих срСдств Π²Π°ΠΌ ΠΌΠ°Π»ΠΎ, посмотритС,Β ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Node.jsΒ , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ Π΅Π³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Ρ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ².

Chrome DevTools в дСйствии

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части этой ΡΡ‚Π°Ρ‚ΡŒΠΈ я Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Chrome DevTools Π² дСйствии Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ прилоТСния Π½Π° Express.

'use strict'

const express = require('express')
const app = express()

const PORT = process.env.PORT || 3000

function capitalize (str) {
  const firstLetter = str.charAt(0) // we can check what's inside here
  return `${firstLetter.toUpperCase()}${str.slice(1)}`
}

app.get('/:name?', (req, res) => {
  const name = req.params.name ? capitalize(req.params.name) : 'World'
  res.send(`Hello ${name}!`)
})

app.listen(PORT, () => console.log(`App listening on *:${PORT}`))

Π­Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ прилоТСния Π½Π° Express, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π°Β github.

Π”Π°Π²Π°ΠΉΡ‚Π΅ запустим Π΅Π³ΠΎ с Ρ„Π»Π°Π³ΠΎΠΌβ€Šβ€”β€Šinspect ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Chrome ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Node ΠΏΠΎ инструкции, описанной Π²Ρ‹ΡˆΠ΅.

На этом этапС Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ доступ ΠΊΠΎ всСм функциям, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ (breakpoints), ΠΊΠ°Ρ€Ρ‚Π° привязки ΠΊ исходному ΠΊΠΎΠ΄Ρƒ (source map), ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° снимка ΠΊΡƒΡ‡ΠΈ (heap snapshot), ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, горячая Π·Π°ΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… JavaScript (hot-swapping) ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Β 

ИспользованиС Breakpoints для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния Π½Π°Β Express.

Β 

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ обратимся ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ (breakpoints) для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ произвСсти Β«Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ Π·Π°ΠΌΠ΅Π½ΡƒΒ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Β 

ПодмСна JavaScript-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π»Π΅Ρ‚ΡƒΒ (1). ПодмСна JavaScript-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π»Π΅Ρ‚ΡƒΒ (2).

Β 

Π§Π΅ΠΌ Π΅Ρ‰Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½ Chrome Π² качСствС инструмСнта для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‚Π°ΠΊ это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ клиСнтской, Π½ΠΎ ΠΈ сСрвСрной части JavaScript-прилоТСния, ΠΈ всё это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ интСрфСйса ?.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈΒ Jacopo Daeli: β€œDebugging Node.js with Google Chrome”

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ | Flexberry PLATFORM Documentation

ΠžΡ‚Π»Π°Π΄ΠΊΠ°

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript ΠΈ Ember.js с использованиСм Chrome Web Tools

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ массивных SPA Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ JavaScript с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ стандартной консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome (Chrome Web Tools).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Ember.js Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π΄Π΄ΠΎΠ½Π° Ember Inspector

НаиболСС Ρ‡Π°ΡΡ‚ΠΎΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ инструмСнта:
  • Elements β€” HTML-ΠΊΠΎΠ΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ страницы.
  • Console β€” JavaScript-консоль. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΠΎΠΌ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ являСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст всСго Π²Π΅Π±-прилоТСния. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΊΠΎΠ΄ остановлСн (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ останова), Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ контСкстом Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ мСсто, Π³Π΄Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.
  • Sources β€” ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π΅Π± страницы. НСпосрСдствСнно Π² этой Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ JavaScript-ΠΊΠΎΠ΄.
  • Network β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠ΅Ρ‚ΡŒΡŽ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтским ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠΌ.
  • Ember β€” Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π°Π΄Π΄ΠΎΠ½ Ember Inspector, Ρ‚ΠΎ Π² этой Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя просто ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ β€œΠΏΠΎΠ΄ капот” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°: ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Routes прилоТСния, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Promises ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π°

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ останова (breakpoints). Π’ΠΎΡ‡ΠΊΡƒ останова ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π° строчку ΠΊΠΎΠ΄Π° JavaScript, Π»ΠΈΠ±ΠΎ, ΠΏΡ€ΠΈ нСобходимости, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ JS ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ DOM. Π­Ρ‚ΠΎ дСлаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Elements:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ JS-Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· DevTools ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Π² Ctrl+P ΠΈ ввСдя Π½Π°Π·Π²Π°Π½ΠΈΠ΅ искомого Ρ„Π°ΠΉΠ»Π°, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Sources. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Π½Π° Π½ΠΎΠΌΠ΅Ρ€ строки. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ПКМ Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Ρ‚ΡŒ условиС остановки.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π°Π²Ρ‹ΠΉ сайдбар ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Call Stack) [3], Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ выраТСния для отслСТивания (Watch) [2]. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Scope ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ контСксты, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Breakpoints находится список Ρ‚ΠΎΡ‡Π΅ΠΊ останова, ΡΡ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠ°Ρ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Ρ†Π²Π΅Ρ‚ΠΎΠΏ. Π’ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части сайдбара находятся ΠΊΠ½ΠΎΠΏΠΊΠΈ пошагового исполнСния [1], ΠΊΠ½ΠΎΠΏΠΊΠ° игнорирования Ρ‚ΠΎΡ‡Π΅ΠΊ останова ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ остановку исполнСния ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ [6].

ЗначСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ консоль (Π²ΠΊΠ»Π°Π΄ΠΊΠ° Console), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π΄Π΅Π» Watch ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ сайдбара ΠΈΠ»ΠΈ просто наводя ΠΌΡ‹ΡˆΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ запросов

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ запросы ΠΊ Π±Π΅ΠΊΠ΅Π½Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Network. Π’ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ отобраТаСтся Ρ‚Π°ΠΉΠΌΠ»Π°ΠΉΠ½ исполнСния запросов, ΠΈ ΠΈΡ… список [1]. ПослС Π²Ρ‹Π±ΠΎΡ€Π° запроса Π² спискС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ запросС [2], Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ [3] ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ΠΉ JSON [4].

ΠžΡ‚Π»Π°Π΄ΠΊΠ° C# с использованиСм Visual Studio

ΠžΡ‚Π»Π°Π΄ΠΊΠ° C# ΠΊΠΎΠ΄Π° проводится Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ JS-ΠΊΠΎΠ΄Π°, ΠΎ Π½Π΅ΠΉ написано Π²Ρ‹ΡˆΠ΅. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ инструмСнты срСды Visual Studio (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания использована VS2017) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ΠŸΠΎΠΏΠ°ΡΡ‚ΡŒ Π² интСрфСйс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΡ‰Π΅ всСго с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ установки Ρ‚ΠΎΡ‡ΠΊΠΈ останова.

Π’ мСню ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ настройки срабатывания Ρ‚ΠΎΡ‡ΠΊΠΈ останова. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ логичСскоС условиС, Ρ‚Π°ΠΊ ΠΈ количСство ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΉ Π² строку. ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Output window, Π° Π½Π΅ просто остановку.

Рассмотрим ΠΎΠΊΠ½ΠΎ Visual Studio Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

  1. Π’ΠΊΠ»Π°Π΄ΠΊΠΈ Locals, Watch. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ контСкстС (Locals) ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Watch). ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ просто наводя Π½Π° Π½Π΅Ρ‘ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ.
  2. Π’ΠΊΠ»Π°Π΄ΠΊΠ° Call Stack ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Exception Settings ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ….
  3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Diagnostic Tools находится информация ΠΎΠ± использовании ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ памяти ΠΈ рСсурсов процСссора, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° Ρ‚Π°ΠΉΠΌΠ»Π°ΠΉΠ½Π΅. ΠšΡ€ΠΎΠΌΠ΅ этого, Π½Π° Ρ‚Π°ΠΉΠΌΠ»Π°ΠΉΠ½ наносятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ASP.NET Π½Π° Ρ‚Π°ΠΉΠΌΠ»Π°ΠΉΠ½ наносятся запросы ΠΊ сСрвСру) ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. НаТатиС Π½Π° событиС Π½Π° Ρ‚Π°ΠΉΠΌΠ»Π°ΠΉΠ½Π΅ позволяСт ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ Historical Debugging.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° Mono-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

1.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

1.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker pull flexberry/monodevelop:latest

2.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ XServer для Windows, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ XServer

3.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker run -dti --network host -e "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/projects/scripts" -e "DISPLAY=XX.XX.XX.XX:0.0" -v d:/projects:/root/projects flexberry/monodevelop:latest /usr/bin/mate-terminal --disable-factory

2.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ XServer ΠΏΠΎΠ΄ windows.

4.Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠΈΠΌΡΡ ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: monodevelop&

5.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² свойствах ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ: 0.0.0.0

4.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

ΠšΡ€ΠΎΠΌΠ΅ этого Π² свойствах Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сборку. Π‘Π±ΠΎΡ€ΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π² Visual Studio, Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² Mono.

6.Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ MdbConverter.exe.

Π’ Visual Studio ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ: MdbConverter\pdb2mdb\bin\Debug\MdbConverter.exe . d:\projects /root/projects

5.Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠΈΠΌΡΡ ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

6.ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π² свойствах ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ:

7.Π’ Visual Studio ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ:

MdbConverter.exe. с:/catalog:/childrencatalog

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ MdbConverter Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  1. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git clone https://github.com/Flexberry/mono
  2. git checkout MdbConverter
  3. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Visual Studio ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ mono\mcs\tools\pdb2mdb\MdbConverter.csproj
  4. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Build.

8.Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС

Окно ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² MonoDevelop выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π Π°Π±ΠΎΡ‚Π° с Π½ΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с Visual Studio Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² PhpStorm | Руководство ΠΏΠΎ PhpStorm

ПослСднСС обновлСниС: 10.07.2017 г.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ: 07.07.2017 Π³.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ

Π’ этом руководствС описываСтся ΠΎΡ‚Π»Π°Π΄ΠΊΠ° JavaScript-ΠΊΠΎΠ΄Π° Π² PhpStorm. ВсС дСйствия, описанныС здСсь, Π±Ρ‹Π»ΠΈ воспроизвСдСны с ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π½Π° PhpStorm 2016.1.2.

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ задумывался, Ρ‡Ρ‚ΠΎ происходит Π² памяти Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ DOM ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с JavaScript? Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PhpStorm ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ JavaScript-ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ поэтапно, провСряя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (ΠΈ Π΄Π°ΠΆΠ΅ измСняя ΠΈΡ…) Π²ΠΎ врСмя выполнСния скрипта. Π”Π°Π²Π°ΠΉ посмотрим, ΠΊΠ°ΠΊ это дСлаСтся.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°

Помимо ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript-ΠΊΠΎΠ΄Π°, c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PhpStorm ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ PHP-ΠΊΠΎΠ΄Π°.


1. Установка Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript-ΠΊΠΎΠ΄Π° Π² PhpStorm ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ JetBrains IDE Support для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome. Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ обСспСчиваСт связь ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит Π² IDE, ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Если Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π΅ установится автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‚ΠΎ Ρ‚Π΅Π±Π΅ придётся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°

Π’Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Live Edit. Π­Ρ‚ΠΎ позволяСт Ρ‚Π΅Π±Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы, Π²ΠΈΠ΄Π΅Ρ‚ΡŒ измСнСния ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° PHP, JS, HTML, CSS. Π’Ρ‹ ΠΏΡ€Π°Π²ΠΈΡˆΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² IDE β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ отобраТаСтся Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Если Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΏΡ€ΠΈ запускС сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² IDE, Ρ‚ΠΎ PhpStorm автоматичСски запустит Π΅Π³ΠΎ. Если Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π΅ установлСно ΠΏΡ€ΠΈ запускС сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Ρ‚ΠΎ PhpStorm ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ ΠΎΠ± этом.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉ Chrome, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈ ΠΊ настройкам ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈ Ρ€Π°Π·Π΄Π΅Π» Extensions ΠΈΠ»ΠΈ Π² адрСсной строкС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π°Π±Π΅Ρ€ΠΈ:

    chrome://extensions

  2. Найди ΠΈ установи Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ JetBrains IDE Support Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ Chrome.
  3. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Chrome.

ПослС установки Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ JavaScript-ΠΊΠΎΠ΄Π° Π² PhpStorm.


2. Установка Ρ‚ΠΎΡ‡Π΅ΠΊ останова

Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ PhpStorm ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. Π’ΠΎΡ‡ΠΊΠΈ останова β€” это строки ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ приостанавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ позволяСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ JavaScript-ΠΊΠΎΠ΄Π°. Π’Ρ‹ моТСшь ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова, Ρ‰Ρ‘Π»ΠΊΠ½ΡƒΠ² Π² любой строкС ΠΊΠΎΠ΄Π° c Π»Π΅Π²ΠΎΠΉ стороны ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ помСстив курсор Π½Π° строку ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ горячиС клавиши Ctrl + F8 (Cmd + F8 Π½Π° Mac OS X). IDE ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ останова, ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ с Π»Π΅Π²ΠΎΠΉ стороны ΠΎΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°

НаТми здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для этого руководства.


3. Запуск сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

ПослС добавлСния Ρ‚ΠΎΡ‡Π΅ΠΊ останова, Ρ‚Ρ‹ моТСшь Π½Π°Ρ‡Π°Ρ‚ΡŒ сСанс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈΠ»ΠΈ создав ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript-ΠΊΠΎΠ΄Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню PhpStorm [Run β†’ Edit Configurations…]. Π’Π°ΠΊΠΆΠ΅ Ρ‚Ρ‹ моТСшь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкстноС мСню Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нуТдаСтся Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, Π²Ρ‹Π±Ρ€Π°Π² ΠΏΡƒΠ½ΠΊΡ‚ Debug <filename>.

ПослСдний способ создаст ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π·Π° тСбя, Π° Ρ‚Π°ΠΊΠΆΠ΅ запустит Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

4. ΠžΡ‚Π»Π°Π΄ΠΊΠ°

ПослС запуска сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, PhpStorm приостанавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ останова ΠΈ выдСляСт строку исходного ΠΊΠΎΠ΄Π°, которая Π΅Ρ‰Ρ‘ Π½Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Π—Π°Ρ‚Π΅ΠΌ Π² IDE открываСтся ΠΎΠΊΠ½ΠΎ инструмСнта Debug, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π³ΠΎ Ρ‚Ρ‹ моТСшь ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….


4.1. ПошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΊΠΎΠ½ΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов ΠΈΠ»ΠΈ горячих клавиш Ρ‚Ρ‹ моТСшь ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ:

  • Step Into (F7) β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ выраТСния, Ρ‚Π°ΠΊΠΈΠΌ способом ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.
  • Step Over (F8) β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ выраТСния Π² Ρ†Π΅Π»ΠΎΠΌ, Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π²Π³Π»ΡƒΠ±ΡŒ стСка выполнСния.
  • F9 β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ останова.

4.2. НаблюдСниС

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


4.3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚ΠΎΡ‡Π΅ΠΊ останова ΠΈ условныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ‹ занимаСшься ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°. Если ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. А тСбя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит Π² ΠΊΠΎΠ΄Π΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова условной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ останова.

Для этого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню IDE [Run β†’ View Breakpoints] ΠΈΠ»ΠΈ горячих клавиш Ctrl + Shift + F8 (Cmd + Shift + F8 Π½Π° Mac OS X) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Breakpoints ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ условиС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠ° останова являСтся допустимой, Π³Π΄Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, ΠΊΠΎΠ³Π΄Π° пСрСмСнная ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° i Ρ€Π°Π²Π½Π° 3, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. НапримСр, Ρ‚Ρ‹ моТСшь вывСсти сообщСниС Π½Π° консоль ΠΏΡ€ΠΈ достиТСнии Ρ‚ΠΎΡ‡ΠΊΠΈ останова, ΠΏΡ€ΠΈ этом, Π½Π΅ останавливая Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π° просто показывая трассировку выполнСния ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ останова послС Π΅Ρ‘ срабатывания ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² зависимости ΠΎΡ‚ срабатывания Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ останова.


4.4. ИзмСнСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°

ΠŸΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, которая позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ прямо Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°. НапримСр, Ρ‚Ρ‹ моТСшь ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для тСстирования ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ условия. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ врСмя выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡƒΠ½ΠΊΡ‚Π° контСкстного мСню Set value… (F2) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Variables ΠΎΠΊΠ½Π° инструмСнта Debug.

ПослС установки Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠΎΠ΄Π°.

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡƒΠ½ΠΊΡ‚ контСкстного мСню Evaluate Expression…, Ρ‚Ρ‹ моТСшь Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ любоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ врСмя сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для быстрой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ условия, Π²Ρ‹Π·ΠΎΠ²Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.


5. ΠšΠ°Ρ€Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°

*

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Ρ‚Π΅Π±Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ использовании ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ JavaScript-ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ CoffeeScript ΠΈΠ»ΠΈ TypeScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² JavaScript.

НапримСр, ΠΏΡ€ΠΈ использовании ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ вСрсии jQuery Ρ‚Ρ‹ моТСшь Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π΅Π³ΠΎ исходному ΠΊΠΎΠ΄Ρƒ. PhpStorm ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° распознаСт ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚Π΅Π±Π΅ исходный ΠΊΠΎΠ΄ jQuery, Π° Π½Π΅ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с языками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² JavaScript, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ идСя ΠΊΠ°Ρ€Ρ‚ ΠΊΠΎΠ΄Π°. Π’Ρ‹ моТСшь ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² ΠΊΠΎΠ΄Π΅ CoffeeScript ΠΈΠ»ΠΈ TypeScript ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сСанс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ выполняСмый JavaScript-ΠΊΠΎΠ΄ с исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ. Он ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² CoffeeScript ΠΈΠ»ΠΈ TypeScript, Π΄Π°ΠΆΠ΅ Ссли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ фактичСски выполняСт ΠΊΠΎΠ΄ Π½Π° JavaScript.


6. Плагин Spy-js

*

Π’Π°ΠΊΠΆΠ΅ Π² PhpStorm для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript-ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Spy-js. Он позволяСт Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Π±Π΅Π· Ρ‚ΠΎΡ‡Π΅ΠΊ останова ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. Spy-js ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ исполнСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ послС запуска ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅ Spy-js Ρ‚Ρ‹ моТСшь Π½Π°ΠΉΡ‚ΠΈ Π² Π±Π»ΠΎΠ³Π΅ PhpStorm.

ΠŸΡƒΠ½ΠΊΡ‚ являСтся ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ руководства: ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² PhpStorm.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² Firefox с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Debugger. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция

А Π²Ρ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Firefox встроСн ΠΎΠ±Π°Π»Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Debugger для языка JavaScript. Π”Π°Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π±Ρ‹Π» встроСн Π² «Лису» Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Quantum. На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ инструмСнтарий для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² своСм ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ соотвСтствовал соврСмСнным тСхнологичСским трСбованиям ΠΊ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Π’Π΅Π΄ΡŒ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, любоС соврСмСнноС, ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ содСрТит ΠΊΠΎΠ΄ JavaScript, поэтому ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² Firefox β€” это ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Debugger Π² Firefox

Π‘Π°ΠΌ Π”Π΅Π±Π°Π³Π³Π΅Ρ€ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ с использованиСм Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ React, Redux ΠΈ Babel. ИмСнно поэтому получился Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ, ΡˆΡƒΡΡ‚Ρ€Ρ‹ΠΉ, Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ. Плюс, использованиС популярных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ тСсный ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ с сообщСством соврСмСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ВсС Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΎΠ»Π½Π΅.

Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ React β€” лСгковСсный, лСгкотСстируСмый ΠΈ прост Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’ Debugger примСняСтся React Storybook, поэтому ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ скоростного использования интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ докумСнтирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π’Π΅ΡΡŒ Β«FrontΒ» написан с использованиСм Babel. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ класс ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. И тСхнология построСна Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄.

Redux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для взаимодСйствия с API интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° для CLI JS. НаличиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСлСкторов Π² Redux позволяСт Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π‘Π°ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Debugger-ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² Firefox Π±Ρ‹Π» Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ Π½Π° GitHub. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ программистам со всСго ΠΌΠΈΡ€Π° ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π­Ρ‚ΠΎ Π΄Π°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ колоссального Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π±Ρ‹Π» протСстирован Ρ‚Π΅ΠΌΠΈ, для ΠΊΠΎΠ³ΠΎ ΠΎΠ½ создавался Π΅Ρ‰Π΅ Π½Π° стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π΅ΠΌ Π² процСссС создания добавился Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ планировался ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² процСссС ΠΎΠ±Ρ‰Π΅ΠΉ Β«Ρ€Π°Π±ΠΎΡ‚Ρ‹Β» Π½Π°Π΄ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ программисты прСдоставляли ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… трудностях Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΈ ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… функциях Debugger.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ получился качСствСнным. А ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Firefox ΠΈ дальшС ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ систСмС β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ Π½Π° Π“ΠΈΡ‚Π₯Π°Π±Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инструмСнты Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° смогли ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² Firefox ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Debugger

По старинкС часто для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° примСняСтся console.log. Π”Π°, это, бСзусловно, частично спасало ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π½ΠΎ «консоль» Π½Π΅ способна ΠΏΠΎ-настоящСму ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. ВсС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ console, Ρ‚Π°ΠΊ это «рассказываСт» Π²Π°ΠΌ ΠΎ вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Firefox Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ настоящий ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ;
  • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ debugger.html.

ПослС запуска ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Ρ‚Ρ€ΠΈ части:

  1. Π±Π»ΠΎΠΊ со списком Ρ„Π°ΠΉΠ»ΠΎΠ² слСва;
  2. Π±Π»ΠΎΠΊ с самим ΠΊΠΎΠ΄ΠΎΠΌ прилоТСния Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅;
  3. панСль с инструмСнтами справа.

Нам для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ большС интСрСсна сама панСль инструмСнтария Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². На Π½Π΅ΠΉ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅:

  • toolbar;
  • использованиС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для отслСТивания;
  • Ρ‚ΠΎΡ‡ΠΊΡƒ останова;
  • стэк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²;
  • возмоТности примСнСния.

НуТно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° JavaScript Π² Firefox ΠΎΡ‚ стандартной «Консоли» являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ способСн Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Β«ΠΏΡ€ΠΎΠ³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡΒ» Π² исходный ΠΊΠΎΠ΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ строкС, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π”Π΅Π±Π°Π³Π³Π΅Ρ€ смог Π²ΡΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ, Π° Π²Ρ‹ смогли ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

ДобавляйтС Ρ‚ΠΎΡ‡ΠΊΠΈ останова, добавляйтС списки Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΆΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΠΊΠ° Π”Π΅Π±Π°Π³Π³Π΅Ρ€ станСт Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ Π² Β«Ρ‚ΠΎΡ‡ΠΊΠ΅Β». ПослС старта ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, наводя Π½Π° Π½ΠΈΡ… курсором. Помимо этого, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ якорСй, Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ², Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов ΠΈ Ρ‚.Π΄.

Π’Π°ΠΊΠΆΠ΅, ΠΏΠΎΠΊΠ° ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Firefox стоит Π² Β«ΠΏΠ°ΡƒΠ·Π΅Β» Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ останова, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ»Π±Π°Ρ€. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта построчно.

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊΠΎ всСму, Π² Debugger Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для отслСТивания. Для этого Π½ΡƒΠΆΠ½ΠΎ всСго лишь Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°Π½Π΅Π»ΠΈ «ВыраТСния для отслСТивания». Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅:

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

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² Firefox способСн ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ JavaScript, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° React/Redux. Π’ Ρ†Π΅Π»ΠΎΠΌ Π”Π΅Π±Π°Π³Π³Π΅Ρ€ позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ спутанный ΠΈ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Ρ… программистов.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Π² Firefox, Π² частности сам Debugger, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Для этого ΠΊΠΎΠΌΠ°Π½Π΄Π° Firefox ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список инструкций, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π° своСм ПК. ВсС, Ρ‡Ρ‚ΠΎ остаСтся, β€” это Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… страницу Π½Π° GitHub ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вас интСрСсуСт.

Β 

ΠžΡ‚Π»Π°Π΄ΠΊΠ° Express

Π’ Express ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ debug для рСгистрации ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ сопоставлСниях ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… функциях ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ€Π΅ΠΆΠΈΠΌΠ΅ прилоТСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° β€œΠ·Π°ΠΏΡ€ΠΎΡ-отвСт”.

debug ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ вСрсиСй console.log, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ console.log, Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠΎΠ΄Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ символы коммСнтария ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ debug. Π’Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ условно Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ срСды ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ DEBUG.

Для просмотра всСх Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Express, ΠΏΡ€ΠΈ запускС прилоТСния Π·Π°Π΄Π°ΠΉΡ‚Π΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды DEBUG Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ express:*.


$ DEBUG=express:* node index.js

Π’ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°.


> set DEBUG=express:* & node index.js

ΠŸΡ€ΠΈ запускС этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² стандартном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, созданном с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Express, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄:


$ DEBUG=express:* node ./bin/www
  express:router:route new / +0ms
  express:router:layer new / +1ms
  express:router:route get / +1ms
  express:router:layer new / +0ms
  express:router:route new / +1ms
  express:router:layer new / +0ms
  express:router:route get / +0ms
  express:router:layer new / +0ms
  express:application compile etag weak +1ms
  express:application compile query parser extended +0ms
  express:application compile trust proxy false +0ms
  express:application booting in development mode +1ms
  express:router use / query +0ms
  express:router:layer new / +0ms
  express:router use / expressInit +0ms
  express:router:layer new / +0ms
  express:router use / favicon +1ms
  express:router:layer new / +0ms
  express:router use / logger +0ms
  express:router:layer new / +0ms
  express:router use / jsonParser +0ms
  express:router:layer new / +1ms
  express:router use / urlencodedParser +0ms
  express:router:layer new / +0ms
  express:router use / cookieParser +0ms
  express:router:layer new / +0ms
  express:router use / stylus +90ms
  express:router:layer new / +0ms
  express:router use / serveStatic +0ms
  express:router:layer new / +0ms
  express:router use / router +0ms
  express:router:layer new / +1ms
  express:router use /users router +0ms
  express:router:layer new /users +0ms
  express:router use / <anonymous> +0ms
  express:router:layer new / +0ms
  express:router use / <anonymous> +0ms
  express:router:layer new / +0ms
  express:router use / <anonymous> +0ms
  express:router:layer new / +0ms

ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запросС, адрСсованном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ΄Π΅ Express:


  express:router dispatching GET / +4h
  express:router query  : / +2ms
  express:router expressInit  : / +0ms
  express:router favicon  : / +0ms
  express:router logger  : / +1ms
  express:router jsonParser  : / +0ms
  express:router urlencodedParser  : / +1ms
  express:router cookieParser  : / +0ms
  express:router stylus  : / +0ms
  express:router serveStatic  : / +2ms
  express:router router  : / +2ms
  express:router dispatching GET / +1ms
  express:view lookup "index.pug" +338ms
  express:view stat "/projects/example/views/index.pug" +0ms
  express:view render "/projects/example/views/index.pug" +1ms

Для просмотра ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Π·Π°Π΄Π°ΠΉΡ‚Π΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ DEBUG Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ express:router. Аналгичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для просмотра ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прилоТСния, Π·Π°Π΄Π°ΠΉΡ‚Π΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ DEBUG Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ express:application ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

express

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ express, Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ debug, ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия пространства ΠΈΠΌΠ΅Π½ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ опрСдСляСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ прилоТСния.

НапримСр, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сгСнСрировано с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ $ express sample-app, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ debug) ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:


$ DEBUG=sample-app:* node ./bin/www

МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько пространств ΠΈΠΌΠ΅Π½ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΏΡƒΡ‚Π΅ΠΌ Π²Π²ΠΎΠ΄Π° списка ΠΈΠΌΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ:


$ DEBUG=http,mail,express:* node index.js

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ debug ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° страницС debug.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Chrome

Из этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с JavaScript Π² DevTools. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ посмотритС Π²ΠΈΠ΄Π΅ΠΎΠ²Π΅Ρ€ΡΠΈΡŽ этого руководства Π½ΠΈΠΆΠ΅.

Π¨Π°Π³ 1. ВоспроизвСдСниС ошибки #

Поиск сСрии дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ воспроизводят ΠΎΡˆΠΈΠ±ΠΊΡƒ, всСгда являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ . Π”Π΅ΠΌΠΎ откроСтся Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.

    Open Demo

  2. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 5 Π² тСкстовоС ΠΏΠΎΠ»Π΅ Number 1 .

  3. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 1 Π² тСкстовоС ΠΏΠΎΠ»Π΅ НомСр 2 .

  4. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ 1 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ 2 . ΠœΠ΅Ρ‚ΠΊΠ° ΠΏΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ гласит: 5 + 1 = 51 . Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ 6 . Π­Ρ‚ΠΎ ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

    Рисунок 1 . Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ 5 + 1 — 51. Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 6.

Π¨Π°Π³ 2. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом ΠΏΠ°Π½Π΅Π»ΠΈ Β«Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈΒ» #

DevTools прСдоставляСт мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… инструмСнтов для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ CSS, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° страницы профилирования. ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСтСвых запросов.ПанСль Sources — это Ρ‚ΠΎ мСсто, Π³Π΄Π΅ Π²Ρ‹ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ JavaScript.

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ DevTools, Π½Π°ΠΆΠ°Π² Command + Option + I (Mac) ΠΈΠ»ΠΈ Control + Shift + I (Windows, Linux). Π­Ρ‚ΠΎΡ‚ ярлык ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ панСль консоли .

    Рисунок 2 . Консоль ПанСль

  2. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ .

    Рисунок 3 . ПанСль Sources

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс ΠΏΠ°Π½Π΅Π»ΠΈ Sources состоит ΠΈΠ· 3 частСй:

Рисунок 4 .3 части ΠΏΠ°Π½Π΅Π»ΠΈ Sources UI

  1. ПанСль File Navigator . Π—Π΄Π΅ΡΡŒ пСрСчислСны всС Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ страницСй.
  2. ПанСль Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° . ПослС Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ File Navigator содСрТимоС этого Ρ„Π°ΠΉΠ»Π° отобраТаСтся здСсь.
  3. ПанСль ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript . Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JavaScript страницы. Если вашС ΠΎΠΊΠ½ΠΎ DevTools ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅, эта панСль отобраТаСтся справа ΠΎΡ‚ ΠΏΠ°Π½Π΅Π»ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° .

Π¨Π°Π³ 3. ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ останова #

РаспространСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ — Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² console.log () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ значСния Π² качСствС сцСнария. выполняСт. НапримСр:

  function updateLabel () {
var addend1 = getNumber1 ();
console.log ('Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅1:', Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅1);
var addend2 = getNumber2 ();
console.log ('Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅2:', Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅2);
var sum = addend1 + addend2;
консоль.ΠΆΡƒΡ€Π½Π°Π» ('сумма:', сумма);
label.textContent = addend1 + '+' + addend2 + '=' + сумма;
}

ΠœΠ΅Ρ‚ΠΎΠ΄ console.log () ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ останова , ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ быстрСС. Π’ΠΎΡ‡ΠΊΠ° останова позволяСт Π²Π°ΠΌ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄ Π² сСрСдинС Π΅Π³ΠΎ выполнСния ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС значСния Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ΠΎΡ‡ΠΊΠΈ останова ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько прСимущСств ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ console.log () :

  • ΠŸΡ€ΠΈ использовании console.log () Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ исходный ΠΊΠΎΠ΄, Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ консоль .log () , Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ страницу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСния Π² консоли. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡Π΅ΠΊ останова Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π΄Π°ΠΆΠ΅ Π½Π΅ зная, ΠΊΠ°ΠΊ ΠΎΠ½ структурирован.
  • Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… console.log () Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡Π΅ΠΊ останова DevTools ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΌ значСния всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Иногда Π½Π° ваш ΠΊΠΎΠ΄ Π²Π»ΠΈΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅Ρ‚Π΅.

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ошибки быстрСС, Ρ‡Π΅ΠΌ консоль .log () ΠΌΠ΅Ρ‚ΠΎΠ΄.

Если Π²Ρ‹ сдСлаСтС шаг Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ смоТСтС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ обоснованноС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ нСвСрная сумма ( 5 + 1 = 51 ) вычисляСтся Π² ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Π΅ событий click , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с Add НомСр 1 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹, вСроятно, Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Ρ‚ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° click выполняСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ. Π’ΠΎΡ‡ΠΊΠΈ останова ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ это:

  1. На ΠΏΠ°Π½Π΅Π»ΠΈ ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π’ΠΎΡ‡ΠΊΠΈ останова ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π».DevTools ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ событий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Animation ΠΈ Clipboard .

  2. Рядом с ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ΅ΠΉ событий ΠœΡ‹ΡˆΡŒ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ . DevTools ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список событий ΠΌΡ‹ΡˆΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ click ΠΈ mousedown . Рядом с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ событиСм Π΅ΡΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ.

  3. УстановитС Ρ„Π»Π°ΠΆΠΎΠΊ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ . DevTools Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ настроСн Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΡƒΠ·Ρƒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ любого Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий.

    Рисунок 5 . Π€Π»Π°ΠΆΠΎΠΊ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½

  4. Π’Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΊ дСмонстрации, снова Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ 1 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ 2 . DevTools приостанавливаСт Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ выдСляСт строку ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Sources . DevTools слСдуСт ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° этой строкС ΠΊΠΎΠ΄Π°:

      function onClick () { 

    Если Π²Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°, Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнария , ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ строкС.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ : Если Π²Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ строкС, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ рСгистрируСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий click Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ посСщаСтС. Π’Ρ‹ Π±Ρ‹Π»ΠΈ приостановлСны Π² ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Π΅ click Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΎ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ просмотра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ всС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°.

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий — это лишь ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‚ΠΎΡ‡Π΅ΠΊ останова, доступных Π² DevTools.Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ всС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сцСнарии. Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡Π΅ΠΊ останова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π¨Π°Π³ 4. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ #

Одна ΠΈΠ· частых ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ошибок — Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнария Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС. ПошаговоС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° позволяСт Π²Π°ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строкС Π·Π° Ρ€Π°Π·, ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΎΠ½ выполняСтся, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ порядкС, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ прямо сСйчас:

  1. На ΠΏΠ°Π½Π΅Π»ΠΈ Β«Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ Β» DevTools Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для пошагового выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ onClick () , ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строкС Π·Π° Ρ€Π°Π·. DevTools выдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку ΠΊΠΎΠ΄Π°:

      if (inputsAreEmpty ()) { 
  2. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ . DevTools выполняСт inputsAreEmpty () , Π½Π΅ заходя Π² Π½Π΅Π³ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ DevTools пропускаСт нСсколько строк ΠΊΠΎΠ΄Π°.Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ inputsAreEmpty () ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, поэтому Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if Π½Π΅ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.

Π­Ρ‚ΠΎ основная идСя пошагового выполнСния ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ посмотритС Π½Π° ΠΊΠΎΠ΄ Π² get-start.js , Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ошибка, вСроятно, находится Π³Π΄Π΅-Ρ‚ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ updateLabel () . ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Ρ‚ΠΎΡ‡ΠΊΠΈ останова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π±Π»ΠΈΠΆΠ΅ ΠΊ вСроятному мСсту ошибки.

Π¨Π°Π³ 5: УстановитС Ρ‚ΠΎΡ‡ΠΊΡƒ останова ΠΏΠΎ строкС ΠΊΠΎΠ΄Π° #

Π’ΠΎΡ‡ΠΊΠΈ останова ΠΏΠΎ строкС ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным Ρ‚ΠΈΠΏΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. Когда Ρƒ вас Π΅ΡΡ‚ΡŒ конкрСтная строка ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° строку ΠΊΠΎΠ΄Π°:

  1. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° послСднюю строку ΠΊΠΎΠ΄Π° Π² updateLabel () :

      label.textContent = addend1 + '+' + addend2 + '=' + сумма;  
  2. Π‘Π»Π΅Π²Π° ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ строки этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 32 .Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ 32 . DevTools ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ синий Π·Π½Π°Ρ‡ΠΎΠΊ ΠΏΠΎΠ²Π΅Ρ€Ρ… 32 . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° этой строкС Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠ° останова Π½Π° строкС ΠΊΠΎΠ΄Π°. DevTools Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всСгда приостанавливаСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ этой строки ΠΊΠΎΠ΄Π°.

  3. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнария . Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ достигнСт строки 32. Π’ строках 29, 30 ΠΈ 31 DevTools распСчатываСт значСния addend1 , addend2 ΠΈ sum справа ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС.

    Рисунок 6 . DevTools Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ°ΡƒΠ·Ρƒ Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ΅ останова Π½Π° строкС ΠΊΠΎΠ΄Π° Π² строкС 32

Π¨Π°Π³ 6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… #

ЗначСния addend1 , addend2 ΠΈ сумма выглядят ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Они Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это строки. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Π° для объяснСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ошибки. ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. DevTools прСдоставляСт мноТСство инструмСнтов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄ 1. ПанСль Β«ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия» #

Когда Π²Ρ‹ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° строкС ΠΊΠΎΠ΄Π°, панСль ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² настоящСС врСмя, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ссли ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ. Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Когда Π²Ρ‹ Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° строкС ΠΊΠΎΠ΄Π°, панСль Scope пуста.

Рисунок 7 . ΠžΠ±Π»Π°ΡΡ‚ΡŒ ΠžΠ±Π»Π°ΡΡ‚ΡŒ

ΠœΠ΅Ρ‚ΠΎΠ΄ 2: ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° выраТСниями #

Π’ΠΊΠ»Π°Π΄ΠΊΠ° ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° выраТСниями позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Как слСдуСт ΠΈΠ· названия, Watch Expressions Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ любоС допустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ JavaScript Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Watch Expression.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ прямо сСйчас:

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Watch .

  2. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ .

  3. Π’ΠΈΠΏ Π’ΠΈΠΏ суммы .

  4. НаТмитС Enter. DevTools ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сумму Ρ‚ΠΈΠΏΠ° : "строка" . Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ справа ΠΎΡ‚ двоСточия являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вашСго Watch Expression.

    Рисунок 8 . ПанСль Watch Expression (Π²Π½ΠΈΠ·Ρƒ справа) послС создания суммы Ρ‚ΠΈΠΏΠ° Watch Expression.Если вашС ΠΎΠΊΠ½ΠΎ DevTools большоС, панСль Watch Expression находится справа, Π½Π°Π΄ панСлью Π’ΠΎΡ‡ΠΊΠΈ останова ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ событий .

Как ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, сумма оцСниваСтся ΠΊΠ°ΠΊ строка, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ числом. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ошибки.

ΠœΠ΅Ρ‚ΠΎΠ΄ 3: Консоль #

Помимо просмотра сообщСний console.log () , Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² JavaScript. Π§Ρ‚ΠΎ касаСтся ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ консоль для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… исправлСний ошибок.ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сСйчас:

  1. Если Ρƒ вас Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ящик консоли, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Escape, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ. Он открываСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π° DevTools.

  2. Π’ консоли Π²Π²Π΅Π΄ΠΈΡ‚Π΅ parseInt (addend1) + parseInt (addend2) . Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ приостановлСны Π½Π° строкС ΠΊΠΎΠ΄Π°, Π² области дСйствия ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся addend1 ΠΈ addend2 .

  3. НаТмитС Enter. DevTools ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ распСчатываСт 6 , Ρ‡Ρ‚ΠΎ ΠΈ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ дСмонстрации.

    Рисунок 9 . ПанСль консоли послС ΠΎΡ†Π΅Π½ΠΊΠΈ parseInt (addend1) + parseInt (addend2) .

Π¨Π°Π³ 7. ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ исправлСниС #

Π’Ρ‹ нашли исправлСниС для ошибки. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ исправлСниС, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ запустив Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠΈΠ΄Π°Ρ‚ΡŒ DevTools, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ исправлСниС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ JavaScript прямо Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС DevTools. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сСйчас:

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сцСнария .
  2. Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку 31, var sum = addend1 + addend2 , Π½Π° var sum = parseInt (addend1) + parseInt (addend2) .
  3. НаТмитС Command + S (Mac) ΠΈΠ»ΠΈ Control + S (Windows, Linux), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ измСнСния.
  4. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова . Он измСнится Π½Π° синий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½. Пока это установлСно, DevTools ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ установлСнныС Π²Π°ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ останова.
  5. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΌΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ значСниями. Π”Π΅ΠΌΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассчитываСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс примСняСт исправлСниС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Π² вашСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π­Ρ‚ΠΎ Π½Π΅ исправит ΠΊΠΎΠ΄ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΡΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π²Π°ΡˆΡƒ страницу.Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π° Π²Π°ΡˆΠΈΡ… сСрвСрах.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги #

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ максимально эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Chrome DevTools ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ JavaScript. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π² этом руководствС, ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π²Π°ΠΌ бСсчислСнноС количСство часов.

Π’ этом руководствС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° способа установки Ρ‚ΠΎΡ‡Π΅ΠΊ останова. DevTools ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… способов, Π² Ρ‚ΠΎΠΌ числС:

  • УсловныС Ρ‚ΠΎΡ‡ΠΊΠΈ останова, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ условиС истинно.
  • Π’ΠΎΡ‡ΠΊΠΈ останова для ΠΏΠΎΠΉΠΌΠ°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π½Π΅ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.
  • Π’ΠΎΡ‡ΠΊΠΈ останова XHR, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ URL совпадаСт с прСдоставлСнной Π²Π°ΠΌΠΈ подстрокой.

Π‘ΠΌ. Β«ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ останова», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π•ΡΡ‚ΡŒ нСсколько элСмСнтов управлСния ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΡΠ½Π΅Π½Ρ‹ Π² этом руководствС. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· строку ΠΊΠΎΠ΄Π°Β».

Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ JavaScript ΠΊΠ°ΠΊ профСссионал

Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ JavaScript ΠΊΠ°ΠΊ профСссионал | Иди ΠΈ сдСлай Π²Π΅Ρ‰ΠΈ Иди ΠΈ сдСлай Π²Π΅Ρ‰ΠΈ

Мой процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост.Π­Ρ‚ΠΎ всСго лишь Π΄Π²Π° шага, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ послСдний Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°. Если Π² ΠΎΠΊΠ½Π΅ консоли ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка, ΠΎΠ½ сообщит Π²Π°ΠΌ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка. Начни Ρ‚Π°ΠΌ. Если Π½Π΅Ρ‚, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ самому ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ запускаСмому Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ ΠΊΠΎΠ΄Π° Π² вашСм скриптС.
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ console.log () для рСгистрации всСй своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠΊΠ½Π΅ консоли. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π·Π°Ρ…Π²Π°Ρ‚ элСмСнта Π² DOM с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ querySelector, зарСгистрируйтС Π΅Π³ΠΎ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ элСмСнт.ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π΅Π΄Π΅Ρ‚ сСбя Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ.

Π― Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π΄, ΠΊΠΎΠ³Π΄Π° Π½Π° этой Π½Π΅Π΄Π΅Π»Π΅ Π‘Ρ‚ΠΈΠ² Π“Ρ€ΠΈΡ„Ρ„ΠΈΡ‚ выпустил Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ± ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ console.log () .

Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ я Π½Π°ΠΏΠΈΡˆΡƒ описаниС совСтов Π² Π΅Π³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ, Π° ΠΏΠΎΠΊΠ° посмотритС Π΅Π³ΠΎ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅Π΅ Π²ΠΈΠ΄Π΅ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивно. Π― ΡƒΠ·Π½Π°Π» Ρ‚ΠΎΠ½Π½Ρƒ!


πŸš€ ПослСдний шанс ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ! Новая сСссия Vanilla JS Academy Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ.Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ сСгодня ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΡŒΡ‚Π΅ 25%. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ.

ΠŸΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ? Π― ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ элСктронныС письма ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΡƒΠ΄Π½ΠΈΠΉ дСнь с Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°, инструмСнтами, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ интСрСсными Π²Π΅Ρ‰Π°ΠΌΠΈ со всСго Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ 12 100+ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Ρ‹ΠΌ подписчикам.


Π‘Π΄Π΅Π»Π°Π½ΠΎ с ❀️ Π² ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠ΅. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅, вСсь ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ бСсплатно Π² соотвСтствии с Π›ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π― Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ нСрСгулярно дСлюсь мыслями, Π½Π΅ связанными с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

VS Code ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript — ADTmag

Новости

VS Code ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript

ЕТСмСсячноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Microsoft для своСго Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ популярного кроссплатформСнного Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π° Visual Studio с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ содСрТит Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript.

Работая с Node.js ΠΈ Chrome, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСсяцСв, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся ΠΎΠΏΡ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π·Π° июнь 2020 Π³ΠΎΠ΄Π° ΠΈΠ»ΠΈ VS Code 1.47.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ возмоТности ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, пСрСчислСнныС Π½Π° Π΅Π³ΠΎ сайтС GitHub, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ…
  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° процСссов Node.js Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅
  • ΠžΠΏΠΎΡ€Π° профилирования
  • ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° скриптов npm
  • АвтоматичСская ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°
  • ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ для КИП
  • Π›ΡƒΡ‡ΡˆΠ΅Π΅ Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² консоли ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
  • ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния
  • ОТиданиС Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня
  • ΠœΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ источники с красивым ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Microsoft Edge ΠΈ WebView2
  • Π›ΡƒΡ‡ΡˆΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ источников ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ останова
  • ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сообщСниС Π½Π° этой Π½Π΅Π΄Π΅Π»Π΅, ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ VS Code 1.47 списков:

  • ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°: Π­Ρ‚ΠΎ обСспСчиваСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΡ… ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π·Π½Π°Ρ‡ΠΊΠ°ΠΌΠΈ Π² области Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
  • [Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ.] Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° этих Π·Π½Π°Ρ‡ΠΊΠ° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π»Π΅Π²ΠΎΠΉ части области Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎ запуск ΠΈΠ»ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ выполняСтся ΠΎΠ΄Π½ΠΈΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ. (источник: Microsoft).
  • МСнСС Π·Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ CALL STACK: Π­Ρ‚ΠΎ достигаСтся Π·Π° счСт сокрытия ΡƒΠ·Π»ΠΎΠ² сСанса ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠΎ тСхничСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ большой цСнности для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • Новый псСвдоним ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Set Next Statement для Jump to Cursor: Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Jump to Cursor Π±ΠΎΠ»Π΅Π΅ доступной для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ· Visual Studio, ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° псСвдоним ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Set Next Statement.
  • ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ останова ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ: Π’ прСдставлСнии BREAKPOINTS ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ останова отобраТаСтся Π΅Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

Помимо всСго этого ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript, выпуск VS Code Π·Π° июнь 2020 Π³ΠΎΠ΄Π° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚:

ВсС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ прСдставлСно Π² анонсС.


Об Π°Π²Ρ‚ΠΎΡ€Π΅

Дэвид Π Π°ΠΌΠ΅Π» — Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ Converge360.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JavaScript с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ настоящСго ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π΅ Π·Π½Π°Π»ΠΈ — Smashing Magazine

Об Π°Π²Ρ‚ΠΎΡ€Π΅

Дастин Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ — ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΈ солидный Турналист ΠΈ тСхничСский ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π±Ρ€Π°Π» Π·ΡƒΠ±Ρ‹ Π² Π³Π°Π·Π΅Ρ‚Π½ΠΎΠΌ бизнСсС ΠΈ Π² ΠΈΠ³Ρ€Π°Ρ… ΠΏΠΎ Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ .Π’ настоящСС врСмя он… Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΎ Дастин Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ ↬

JavaScript Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для любого ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΠΎΠ³ΠΎ Π²Π΅Π±-прилоТСния, поэтому Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π½Π°Π±ΠΎΡ€Π° инструмСнтов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Firefox JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрый ΠΊΠΎΠ΄ Π±Π΅Π· ошибок.

console.log ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ-настоящСму ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ваш ΠΊΠΎΠ΄. Для этого Π²Π°ΠΌ понадобится ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript. Новый ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ JavaScript Π² Firefox ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ быстрый ΠΊΠΎΠ΄ Π±Π΅Π· ошибок.Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, основанноС Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… JavaScript с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² послСднСй вСрсии Firefox Developer Edition, Π° Π·Π°Ρ‚Π΅ΠΌ запуститС debugger.html , Π½Π°ΠΆΠ°Π² Option + Cmd + S Π½Π° Mac ΠΈΠ»ΠΈ Shift + Ctrl + S Π² Windows. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ: панСль списка источников, панСль источников ΠΈ панСль инструмСнтов.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр

ПанСль инструмСнтов подраздСляСтся Π½Π° панСль инструмСнтов, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ выраТСния, Ρ‚ΠΎΡ‡ΠΊΠΈ останова, стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ области.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр

ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ использованиС

console.log

Π—Π°ΠΌΠ°Π½Ρ‡ΠΈΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ console.log для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ² Π² свой ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π²Π΅Ρ€Π½ΠΎ? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ debugger.html для пошагового выполнСния ΠΊΠΎΠ΄Π° прилоТСния todo для поиска значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ debugger.html , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, просто Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² строку ΠΊΠΎΠ΄Π°. Π’ΠΎΡ‡ΠΊΠΈ останова говорят ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π² строку 13 Ρ„Π°ΠΉΠ»Π° app.js .

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π²ΡŒΡŽ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π°Π΄Π°Ρ‡Ρƒ Π² список. Код остановится Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ addTodo, ΠΈ ΠΌΡ‹ смоТСм ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. НавСдитС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ якоря, Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅:

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² панСль Β«ΠžΠ±Π»Π°ΡΡ‚ΠΈΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° сцСнарий приостановлСн, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π½Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов. Кнопка воспроизвСдСния / ΠΏΠ°ΡƒΠ·Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ написано Π½Π° Π±Π°Π½ΠΊΠ΅. Β«Step OverΒ» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ строку ΠΊΠΎΠ΄Π°, Β«Step InΒ» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Β«Step OutΒ» выполняСт сцСнарий Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° тСкущая функция Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для наблюдСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ Watch Expression, ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π½ΠΈΠΌ, ΠΏΠΎΠΊΠ° Π²Ρ‹ выполняСтС ΠΊΠΎΠ΄. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ выраТСния Β«titleΒ» ΠΈ Β«to-doΒ», ΠΈ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ выдаст значСния, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ доступны. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π°:

  • Π’Ρ‹ ΡˆΠ°Π³Π°Π΅Ρ‚Π΅ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ;
  • Π’Ρ‹ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ значСния;
  • Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эта проклятая ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ debugger.html для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ React / Redux. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

  • ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ.
  • Π‘ΠΌ. Π‘Ρ…Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° слСва (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² классС).
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ функциям.
  • Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΏΠ°ΡƒΠ·Ρƒ ΠΈ просмотритС свойства ΠΈ состояниС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
  • Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ вашСго прилоТСния чСрСдуСтся с Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ.

НаконСц, ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ .html позволяСт Π²Π°ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ обфусцированный ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ошибки, Ρ‡Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ с распространСнными Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ React / Redux. ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π·Π½Π°Π΅Ρ‚ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ приостановили Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², структуру ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈ свойства. Π’ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Амит Π—ΡƒΡ€, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Firefox для погруТСния Π² ΠΊΠΎΠ΄ Π½Π° JS Kongress:

Если вас интСрСсуСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ .html , ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΡƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Mozilla. ΠœΡ‹ создали ΡΠ΅Ρ€ΠΈΡŽ руководств, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ своСго ΠΊΠΎΠ΄Π°.

DevTools с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ debugger.html Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²ΡƒΡ… Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ вмСстС с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ всСх Firefox DevTools. ΠœΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ DevTools с использованиСм соврСмСнных Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… доступными для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. А ΠΊΠΎΠ³Π΄Π° тСхнология ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ расти дальшС всСго, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ наша нСбольшая Π³Ρ€ΡƒΠΏΠΏΠ° Π² Mozilla.

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

debugger.html построСн с использованиСм React, Redux ΠΈ Babel. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ React Π»Π΅Π³ΠΊΠΈΠ΅, тСстируСмыС ΠΈ простыС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ React Storybook для быстрого создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ докумСнтирования ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Наши ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Jest ΠΈ Enzyme, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ JavaScript (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, React). Наш интСрфСйс Babel позволяСт Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ класс Component ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π»Π΅Π²ΠΎΠΉ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ.ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ интСрСсныС Π²Π΅Ρ‰ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова ΠΊ функциям, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°.

ДСйствия Redux — это чистый API для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½ΠΎ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ успСхом ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ JS-ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° CLI. Π’ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Redux Π΅ΡΡ‚ΡŒ сСлСкторы для запроса Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Наш ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ тСст redux запускаСт дСйствия Redux ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Наши ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ тСсты ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ дСйствий Redux ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π‘Π°ΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для тСстирования.

На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ полагались Π½Π° сообщСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Mozilla. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π½Π° GitHub, ΠΈ наша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ со всСго ΠΌΠΈΡ€Π°. Когда ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ, автоматичСскиС тСсты Π±Ρ‹Π»ΠΈ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ развития сообщСства. ВСсты ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π³Ρ€Π΅ΡΡΠΈΡŽ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ сдСлали, Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов для дСйствий Redux ΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΡ‚ΠΎΠΊΠ° для Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Redux. ЀактичСски, сообщСство Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ нашС ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Flow ΠΈ Jest ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ протСстирован.

Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ большС людСй задСйствовано, Ρ‚Π΅ΠΌ сильнСС инструмСнты. Наша основная ΠΊΠΎΠΌΠ°Π½Π΄Π° всСгда Π±Ρ‹Π»Π° нСбольшой (2 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°), Π½ΠΎ Π² срСднСм Ρƒ нас 15 участников Π² нСдСлю. БообщСство ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠ΅Ρ‡Ρ‚Π°Π»ΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ стСки Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для 24 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚Ρ‹ WebPack ΠΈ Angular Π² Π΄Π΅Ρ€Π΅Π²Π΅ исходных тСкстов.

ΠœΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС Firefox DevTools Π½Π° GitHub, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠ°Ρ аудитория.ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹, Ссли Π²Ρ‹ внСсСтС свой Π²ΠΊΠ»Π°Π΄. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° страницу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° GitHub для debugger.html . ΠœΡ‹ создали ΠΏΠΎΠ»Π½Ρ‹ΠΉ список инструкций ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° JavaScript для Ρ‡Π΅Π³ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ — Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², сСрвСров, Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ², Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ². И Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ способы Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ, Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· GitHub.

ПослСднюю Π²Π΅Ρ€ΡΠΈΡŽ Firefox (ΠΈ DevTools) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ здСсь.

(rb, ra, yk, il)

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… JavaScript

by Priyanka Garg

Моя цСлСвая аудитория для этого ΡƒΡ€ΠΎΠΊΠ° — Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ простой ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов Chrome для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π°Π·Π°Π΄ я Π±Ρ‹Π» Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ! ПослС Π΄ΠΎΠ»Π³ΠΎΠΉ Π±ΠΎΡ€ΡŒΠ±Ρ‹ я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ продвинулся Π² своСм ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ. Π’ настоящСС врСмя я ΠΏΡ€ΠΎΡ…ΠΎΠΆΡƒ ΡΡ‚Π°Ρ€ΡˆΡƒΡŽ Ρ„Π°Π·Ρƒ иммСрсивного ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ курса, Π³Π΄Π΅ я создаю ΠΏΠΎΠ»Π½Ρ‹Π΅ прилоТСния.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь я ΡƒΠ·Π½Π°ΡŽ ΠΈ Π½Π°Ρ‚Ρ‹ΠΊΠ°ΡŽΡΡŒ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅Ρ‰Π΅ΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ — ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, которая ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ Π²Π°ΠΌ Тизнь.

Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ — это Π΄Π΅Π»Π°Ρ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡Π½Π΅Ρ‚Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° (ΠΈΠ»ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв) ваш ΠΊΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚; Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² вашСм ΠΊΠΎΠ΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠžΠ¨Π˜Π‘ΠšΠ. И Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π΅ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, Π° скорСС ΠΎ настройкС для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ вашСго ΠΊΠΎΠ΄Π° для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ программирования.

Если Π²Ρ‹ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ΅Ρ‚Π΅ΡΡŒ Π² срСдС ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, скорСС всСго, Ρƒ вас Π΅ΡΡ‚ΡŒ установка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ Π½Π°Π±ΠΎΡ€ тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСстируСт Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’Ρ‹ написали ΠΊΠΎΠ΄, ΠΈ Π² Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки, ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ошибки, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π½Π°Π±ΠΎΡ€ΠΎΠΌ тСстов, бСсполСзны.

Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности ΠΎ Ρ‚ΠΎΠΌ, насколько ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° — ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ совСтам для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я ΠΏΠΈΡˆΡƒ срСдство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ°Π»ΠΈΠ½Π΄Ρ€ΠΎΠΌΠ° Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ FreeCodeCamp.МоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Π’ этом случаС ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π°Π±ΠΎΡ€Π° тСстов для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ этот Π½Π°Π±ΠΎΡ€ тСстов Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. (Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния логичСской ошибки. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°Π±ΠΎΡ€ тСстов Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.)

Π‘ΠΎΠ²Π΅Ρ‚: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ консоль инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° .

Π― Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π² консоли с Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ тСстовым ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Β«undefinedΒ».Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ» Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния. Π― быстро Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ Π·Π°Π±Ρ‹Π» Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ «истину», Ссли строка оказалась ΠΏΠ°Π»ΠΈΠ½Π΄Ρ€ΠΎΠΌΠΎΠΌ.

Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΎΡ‡Π΅Π½ΡŒ простая ошибка. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρƒ вас Π±ΡƒΠ΄ΡƒΡ‚ ошибки, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π°ΡˆΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Один ΠΈΠ· ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… — это console.log ( s>) Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Однако я Π±Ρ‹ посовСтовал Π²Π°ΠΌ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° . Π’ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΎΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

ΠžΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² стСкС Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ пошагово Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ.

Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΈΠΌ нСсколько Ρ€Π°Π·. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° стрСлки Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅? Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ…ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… измСнСния.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ займСмся Ρ‚Ρ€ΡŽΠΊΠΎΠΌ.

Π£Π»ΠΎΠ²ΠΊΠ°: сдСлайтС ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ настройку ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Как Π²ΠΈΠ΄Π½ΠΎ Π²Ρ‹ΡˆΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ΠΈ консоли ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.Однако, Ссли я Ρ…ΠΎΡ‡Ρƒ снова Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° консоли, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² всСго ΠΎΠ΄Π½Ρƒ строку, ΠΌΠ½Π΅ придСтся ΠΏΠ΅Ρ€Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π΅.

Π”Π°ΠΆΠ΅ послС этого я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС ΠΎΠ± ошибкС:

Π­Ρ‚Π° ошибка связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ я использовал ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константу . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ придСтся ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΈ Π½ΠΎΠ²ΡƒΡŽ консоль ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я мСняю свой ΠΊΠΎΠ΄. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы, ΠΏΡ€Π°Π²Π΄Π°?

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ. Π’ вашСй систСмС создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ cd Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°: index.js ΠΈ index.html. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ HTML-ΠΊΠΎΠ΄ Π² index.html:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСститС свой ΠΊΠΎΠ΄ ΠΈΠ· консоли Π² index.js. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, я запустил ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² строкС 2 ΠΊΠΎΠ΄Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запуститС Ρ„Π°ΠΉΠ» index.html Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ»ΠΈ консоль (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ). Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ вноситС измСнСния Π² index.js, Π²Ρ‹ просто Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΒ» Π½Π° этой Π²ΠΊΠ»Π°Π΄ΠΊΠ΅, ΠΈ ΠΊΠΎΠ΄ запускаСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. НС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, Π½Π΅ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Π½ΠΎΠ²ΠΎ.

Π”Π΅Ρ€ΠΆΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² index.js ΠΈ поэкспСримСнтируйтС !!

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ мысли

Если Π²Ρ‹ ΡƒΠΆΠ΅ это Π·Π½Π°Π»ΠΈ, ΠΏΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Π²Ρ‹ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Ρ†Π΅Π½Π½Ρ‹Π΅ 4 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹;)

НаконСц, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ — это Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ! НС Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… — ΠΎΠ½ΠΈ Π½Π°ΡƒΡ‡Π°Ρ‚ вас Ρ†Π΅Π½Π½Π΅ΠΉΡˆΠΈΠΌ ΡƒΡ€ΠΎΠΊΠ°ΠΌ программирования … Π° ΠΏΠΎΡ‚ΠΎΠΌ … О! ΠΊΡƒΠ΄Π° Π²Ρ‹ пойдСтС…

Как ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ прилоТСния ΠΈ тСсты JavaScript

Π’ ΠΌΠΈΡ€Π΅ бизнСса сущСствуСт мноТСство ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaScript.Π₯отя клиСнтскиС прилоТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ использования JavaScript, Π² послСдниС Π³ΠΎΠ΄Ρ‹ создавалось всС большС ΠΈ большС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Node.js.

ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠ² тСстовых Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ сталкиваСмся, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ довольно слоТно ΠΈ ΠΈΠ·-Π·Π° этого ΠΈΡ… Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ΠšΡ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ этим ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ основным ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ядром ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, написанным Π½Π° Node.js? Express, Sequelize, Middleware Π²Π΅Π·Π΄Π΅ ΠΈ спагСтти-ΠΊΠΎΠ΄.Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ MongoDB, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ нСприятныС Π²Π΅Ρ‰ΠΈ здСсь ΠΈ Ρ‚Π°ΠΌ, ΠΈ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ срСду своСго ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Π²Π΅Ρ‰ΠΈ довольно слоТно ΠΈΠ·-Π·Π° мноТСства абстракций ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ. Π˜Ρ‚Π°ΠΊ, написаниС тСста — это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ пониманию повСдСния ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ повСдСния ΠΊΠΎΠ΄Π° ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ, являСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ шагом. Π§Π°Ρ‰Π΅ всСго ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΈΡˆΡƒΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, всСгда Π΅ΡΡ‚ΡŒ слишком ΡƒΠΌΠ½Ρ‹Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠ΅ хакСрскиС абстракции вмСсто абстракций Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для достиТСния этой Ρ†Π΅Π»ΠΈ, поэтому ΠΊΠΎΠ΄ Π½Π΅ совсСм понятСн Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»ΠΎΡ…ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΠΊΠΎΠ΄ΠΎΠΌ.

Π’ΠΎΠ³Π΄Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ писал тСст, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ / ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ бизнСс-кСйс, Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, ΠΎΠ½ / ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. Π’ JavaScript это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выглядит Ρ‚Π°ΠΊ:

 

1

console.log («НаконСц-Ρ‚ΠΎ я здСсь» + пСрСмСнная);

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Командная строка — это Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для ΠΊΠΎΠ΄Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.Но Π½Π° самом Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ строки Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот Π²ΠΈΠ΄ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для простых Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° Π±Π΅Π· большого количСства ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚Π΅ Π² слоТныС структуры if-else ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ΄ с мноТСством ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов ΠΈ условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ постоянно ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ (ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ссли происходит состояниС x ΠΈ y, ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΌΠ½Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚), Ρ‚ΠΎΠ³Π΄Π° такая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно нСприятной.

JavaScript, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, прСдоставляСт Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого. Π­Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.По сути, это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово для установки Ρ‚ΠΎΡ‡ΠΊΠΈ останова Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ΠΎΡ‡ΠΊΠ° останова — это этап, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄ вашСго прилоТСния останавливаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° воспроизвСдСниС Π²ΠΈΠ΄Π΅ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΈ Π²Ρ‹ просто останавливаСтС Π²ΠΈΠ΄Π΅ΠΎ Π²ΠΎ врСмя воспроизвСдСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ дСйствия, происходящСго Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° здСсь:

ВаТная Ρ†ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ECMAScript:

[…] Если ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ отсутствуСт ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ³ΠΎ эффСкта.

Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ случай, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запускаСтС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с node index.js. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ производствСнная срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Node.js, ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Node.js ΡƒΠΌΠ΅Π½, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ. Π’ основном это Π²Ρ‹Π·Π²Π°Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Запуск ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° всСгда сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ привязку ΠΊ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΡƒ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ просмотр ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Π΄Ρ€Π° трассировки стСка ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, тяТСлая опСрация, которая замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ вашСго прилоТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΡ€ΠΈ запускС прилоТСния Node.js, Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --inspect . Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ вашСго прилоТСния Node.js Π½Π° 127.0.01: 9229 . ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° Π² основном Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ node-inspect, инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Chrome ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь: https://nodejs.org/de/docs/guides/debugging-getting-started/. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв выполняСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ довольно слоТным для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠ»ΠΎΡ…ΠΎΠΉ структурой.Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ 🀷 Настройка слишком слоТна для нСбольшой ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, поэтому Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простой console.log вмСсто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. Π’ клиСнтских прилоТСниях это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Chrome ΠΈ Firefox ΠΈΠΌΠ΅ΡŽΡ‚ свои собствСнныС инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ ΠΊΠΎΠ΄Ρƒ JavaScript Π²Π΅Π±-сайта. Но Π² прилоТСниях Node.js Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Β«Ρ€Π΅ΠΆΠΈΠΌΠ΅Β». Но для этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ndb.

ndb — это ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ способ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ для Node.js, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Chrome DevTools — ОписаниС рСпозитория GitHub для ndb

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ndb довольно просто. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Node.js с ndb yarn start. ndb рСкомСндуСтся ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ глобально. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ndb ΠΊΠ°ΠΊ devDependency ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ сцСнария Node.js для запуска вашСго прилоТСния с прСфиксом ndb.

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° запускС ΠΏΠΎΠ»Π½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΠ³ΠΎ прилоТСния Node.js с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ndb, Π½ΠΎ ndb становится довольно ΠΌΠΎΡ‰Π½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ практичСски ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ процСссу Node.js. НапримСр, ΠΏΡ€ΠΈ тСстировании прилоТСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ndb yarn test, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ваши тСстовыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти тСсты Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² срСдС Node.js, Ρƒ вас Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ возмоТности ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π― ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Node.js, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь: игСлигСль / Π½Π΄Π±-Π²ΠΈΡ‚Ρ€ΠΈΠ½Π° ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ для дСмонстрации ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Node.js ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π»Π΅Π³ΠΊΠΎ

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ просто прСдоставляСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ index.js ΠΈ экспортируСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ add, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ складываСт ΠΈΡ…. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ покрываСтся тСстом Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ tests . Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ странным, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° всС Π΅Ρ‰Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Ρ‹ JavaScript. Никогда Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого Π² производствСнном ΠΊΠΎΠ΄Π΅ . Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ просто для дСмонстрации. Π€Π°ΠΉΠ» package.json Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ создаСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сцСнария, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ:

 

4

"start": "node cli.js ",

5

" start: debug ":" ndb node cli.js ",

7

" test: debug ":" ndb jest "

Если Π²Ρ‹ запуститС start ΠΈΠ»ΠΈ start: debug ΠΎΠ½ запустит ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«CLIΒ», Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ test ΠΈΠ»ΠΈ test: debug для запуска тСстов. ЕдинствСнноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ с суффиксом : debug Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ndb с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.ΠŸΡ€ΠΈ ΠΈΡ… запускС откроСтся ΠΎΠΊΠ½ΠΎ Chrome Π² Chrome Dev Tools.Если Ρƒ вас установлСны Ρ‚ΠΎΡ‡ΠΊΠΈ останова с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ фактичСски остановится Π½Π° этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… снимках экрана:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Chrome Dev Tools

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΡ‡ΠΊΠΈ останова Chrome Dev Tools

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Chrome Dev Tools Π±Π΅Π· настройки большого количСства шаблонов, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ndb супСр ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΌ . Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ доступной для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ сниТаСт прСпятствия для фактичСского использования Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

НаиболСС ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ функциями здСсь, вСроятно, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто навСсти курсор Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ значСния, Π½Π΅ помСщая ΠΈΡ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ console.log, ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π‘ΡƒΠΏΠ΅Ρ€ классно. Π•ΡΡ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² этом Π²ΠΈΠ΄Π΅ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Chrome:

И ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Node.js. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ndb, ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ своим ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ❀️ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΈ Бпасибо, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ это. Π’Ρ‹ Ρ€ΠΎΠΊ 🀘 Π’Π°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠΎΠΈΠΌΠΈ ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ Π² Π±Π»ΠΎΠ³Π΅, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Β«ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² JavaScriptΒ», Β«Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠ΄Π½ΠΎΡ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Vue.js Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Β» ΠΈΠ»ΠΈ «АвтоматичСскиС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅Ρ€Ρ‹ для PythonΒ». Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, просто ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ здСсь. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° мСня Π² Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠΉ Π»ΠΈΡ‡Π½Ρ‹ΠΉ сайт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² курсС ΠΌΠΎΠΈΡ… статСй Π² Π±Π»ΠΎΠ³Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

Как Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ JavaScript (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ Π² 2019 Π³ΠΎΠ΄Ρƒ πŸ™‚

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния — громоздкая Π·Π°Π΄Π°Ρ‡Π°.Иногда Π²Ρ‹ ΡΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ со своими Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Π±Π΅Π· Π»ΠΈΡˆΠ½ΠΈΡ… Ρ…Π»ΠΎΠΏΠΎΡ‚, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π½ΠΈ малСйшСго прСдставлСния ΠΎ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΈ происхоТдСнии ошибок.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°?

ΠžΡ‚Π»Π°Π΄ΠΊΠ° — это, ΠΏΠΎ сути, Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ источники этих ошибок ΠΈ исправляСм ΠΈΡ…. Когда Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ JavaScript, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ довольно ΠΈΠ·Π½ΡƒΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Поиск ошибок ΠΈ ΠΈΡ… устранСниС ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ ΠΈ для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ….

Π’ΠΎΡ‚ Π³Π΄Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ появляСтся Β« console.log () Β». ΠœΡ‹ всС согласимся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ соблазн Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НС ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ°Π»ΠΎ Π·Π½Π°ΡŽΡ‚ ΠΎΠ± инструмСнтах, прСдоставляСмых Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ инструмСнтов ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ спасСниСм для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ это обсуТдСниС с самого console.log () ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΌ слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΅Π³ΠΎ использования.

консоль.log ()

ΠœΡ‹ пишСм console.log () Π² нашСм ΠΊΠΎΠ΄Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, доступны Π»ΠΈ значСния Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ. Нам Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… значСния. Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ соглашСниС ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования Π½Π΅ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, поэтому Π½Π΅ рСкомСндуСтся снова ΠΈ снова Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ этот console.log () Π² ΠΊΠΎΠ΄Π΅.

ΠšΡ€ΠΎΠΌΠ΅ этого, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ консоли.log (), ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ прСдставлСния.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ для бСспроблСмной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ консоль для рСгистрации строк ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π°. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π£Π΄ΠΎΠ±Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ console.Π±Ρ€Π΅Π²Π½ΠΎ(). Но здСсь для осмотра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…. На ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡƒΠΉΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий.

Рисунок 1: ЗначСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², зарСгистрированных Π½Π° консоли

Π˜Ρ‚Π°ΠΊ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ console.log () для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ массива ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ этого, console.table ().

Π”Π°Π»Π΅Π΅ рассмотрим console.table ()

Когда ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² консоль.table () Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° рСгистрируСтся Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ структурС, ΠΈ становится Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ значСния. Π­Ρ‚ΠΎ сэкономит Π½Π°ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ².

Рисунок 2: ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄, сгСнСрированный console.table ()

Π­Ρ‚ΠΈ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² области видимости, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΈΠ· ΠΎΠΊΠ½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Chrome.

Π’ΠΎΡ‡ΠΊΠΈ останова

Π’ΠΎΡ‡ΠΊΠ° останова — это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠ°ΡƒΠ·Ρ‹. Он останавливаСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ провСряСт значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова, написав Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² самом ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ пСрСйдя Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ источников Π² элСмСнтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Рисунок 3: Π’ΠΎΡ‡ΠΊΠΈ останова Π² исходном ΠΊΠΎΠ΄Π΅

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ исходного ΠΊΠΎΠ΄Π° Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Π² настоящСС врСмя Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ эта строка Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ° останова ΠΈ остановит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ элСмСнта управлСния.

Рисунок 4: ΠžΠΏΡ†ΠΈΠΈ , доступныС для Ρ‚ΠΎΡ‡Π΅ΠΊ останова

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

ПослС установки Ρ‚ΠΎΡ‡Π΅ΠΊ останова Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄ построчно ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ останова. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π² сам ΠΊΠΎΠ΄.

Рисунок 5: Π—Π°ΠΏΠΈΡΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² ΠΊΠΎΠ΄

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«debuggerΒ» для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ части ΠΊΠΎΠ΄Π°.Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ такая ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ Ρ‚ΠΎΡ‡Π΅ΠΊ останова. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово debugger остановит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ°.

Π’Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ строк ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π΅ΠΊ останова Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ вСсьма Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’ΠΎΡ‡ΠΊΠΈ останова ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ поискС ошибок, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈ Π½Π°ΠΌ приходится ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Ρ‹, написанныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.