SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Отладка в процессе
разработки
Курс Frontend-разработки на Javascript + Vue/React
Отладка
• Отладкой называется процесс исследования приложения, над
которым ведется работа, с целью установления причин сбоев в его
работе, и исправление таких ошибок.
• Отладка необходима при разработке для устранения ошибок
работы приложения. Отладка помогает понять, почему возникает
ошибка и какие действия необходимо предпринять для
исправления ошибки.
• Чем быстрее и точнее производится отладка приложения, тем
быстрее идет разработка приложения и тем более устойчивым к
дефектам будет приложение.
Рефакторинг
• Рефакторинг – процесс переработки кода работающего
приложения с целью улучшения его производительности или
архитектурной простоты.
• Рефакторинг является, по сути, «переписыванием» уже
работающего кода. Применяется, в основном, для:
• Улучшения качества кода приложения – изменение структуры, архитектуры и
применяемых технологий
• Оптимизация производительности и требовательности кода к ресурсам
• Избавление от старых зависимостей и технологий
Отладка Frontend-приложений
• Отладка клиентского веб-приложения осуществляется, в основном,
в браузере.
• Chrome Developer Tools предлагает мощный и разнообразный
инструментарий, позволяющий осуществлять отладку приложений
на разных уровнях и с различных сторон.
Точки останова Javascript
• Точка останова – возможность приостановить выполнение
Javascript-кода в любой точке и рассмотреть значения,
задействованные в этом месте кода.
• Отладка по точкам останова позволяет:
• Просмотреть значения переменных
• Проследить за выполнением кода и последовательностью вызова функций
• Отлавливать ошибки выполнения кода в не известных заранее местах
• Точку останова можно установить и в тексте скрипта при помощи
ключевого слова debugger. Однако следует вычищать эти точки из
результирующих скриптов!
Точки останова
• Поставить точку останова можно во вкладке Sources, выбрав
нужный файл скрипта слева и нажав на номер строки.
• Не забывайте снимать точки останова по завершении отладки!
Доступ к текущему узлу
• В Chrome DevTools, выбрав какой-либо элемент в DOM-дереве, к
нему можно получить доступ в консоли разработки при помощи
предопределенной переменной $0.
• С этим узлом можно проделывать все операции, как и в обычном
скрипте. Как правило, это используется для написания
экспериментальных скриптов, которые затем переносятся в
основной скрипт.
DOM-точки останова
• DOM Breakpoints – возможность отследить, какой Javascript-код
отвечает за изменение структуры дерева документа в каком-то
конкретном месте, например:
• Изменение атрибутов элемента
• Удаление элемента
• Изменение внутренностей элемента
• Эта возможность бывает полезна в случаях, когда вы работаете с
чужим кодом и нужно узнать, в каком месте осуществляется
операция на странице, с которой вы намерены работать.
DOM Breakpoint
• Для установки точки останова на узле документа найдите его во
вкладке Elements в дереве, нажмите правой кнопкой мыши и
нажмите Break On > один из необходимых вариантов.
• Не забывайте снимать точки останова по завершении отладки!
Снимается точка останова так же, как и устанавливается.
Список обработчиков
• В панели разработки имеется возможность просмотреть список
всех обработчиков событий, установленных на элемент.
• В этом списке фигурируют как собственные, так и делегированные
обработчики.
• Просматривать список обработчиков удобно для того, чтобы
отыскать в чужом коде место, в котором на данный элемент
устанавливается обработчик, и отыскать сам код обработчика.
• Список обработчиков доступен во вкладке Elements -> Event
Listeners.
Данные сайта
• Под данными сайта подразумеваются все данные, которые сайт
сохраняет на компьютере пользователя. К ним относятся:
• Cookie
• localStorage, sessionStorage
• IndexedDB, WebSQL
• Инструмент Application в инструментах отладки позволяет
просмотреть все данные сайта и при необходимости –
модифицировать.
Сетевая активность
• Сетевая активность – общее название для всех запросов, которые
делает веб-сайт в течение всего времени, что сайт открыт в
браузере пользователя.
• Инструмент Network позволяет отследить все запросы, которые
делает сайт, просмотреть их содержимое и HTTP-заголовки
запросов и ответов, а также сымитировать ситуации различной
скорости интернет-соединения.
Сенсоры
• Вкладка Сенсоры (в дополнительной панели инструментов)
позволяет искусственно задать значения, которые отдадут странице
сенсоры браузера.
• К таким сенсорам относят:
• Геолокация
• Ориентация экрана и угол поворота устройства
• Тачпад
• Переопределение работы сенсоров позволяет тестировать
приложения без необходимости создавать физические условия для
тестирования.
Профайлинг
• Профайлинг – процесс записи работы приложения в течение
некоторого времени с предоставлением подробного отчета. Такой
отчет используется для:
• Оценки общей производительности выполнения кода
• Оценки корректности работы кода в целом
• Оценки затрат на выполнение отдельных операций или функций в коде
• Профайлинг в Chrome DevTools расположены во вкладке
Permormance. В этой вкладке можно построить подробный профиль
работы приложения и далее анализировать на предмет слабых
мест.
Замер времени исполнения кода
• В приложении порой требуется узнать точно, сколько по времени
работал тот или иной код. В консольных командах есть инструмент,
позволяющий сделать естественный замер без необходимости
писать собственный код:
console.time('1');
console.time('2');
// Some code
console.timeEnd('1');
// Some code
console.timeEnd('2');
Покрытие кода
• Покрытие кода – инструмент, позволяющий увидеть, насколько
полно задействован весь написанный для приложения код во время
его работы.
• Чем выше покрытие кода приложения – тем, конечно, лучше. Тем не
менее, в современных приложениях нередко существует много
неиспользуемого кода, подтягиваемого вместе с фреймворками
или библиотеками.
• Покрытие кода можно просмотреть во вкладке Coverage
дополнительной панели инструментов.
Дополнительные материалы
Документация по инструментам отладки в Chrome
https://developers.google.com/web/tools/chrome-devtools/open
Небольшой пример отладки кода
https://medium.com/devschacht/brandon-morelli-learn-how-to-debug-
javascript-with-chrome-devtools-4a8fb7db375c

Contenu connexe

Tendances

JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЯковенко Кирилл
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...sqadays8
 
XPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverXPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverИлья Кожухов
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
Emmet - инструмент для веб-разработчика
Emmet - инструмент для веб-разработчикаEmmet - инструмент для веб-разработчика
Emmet - инструмент для веб-разработчикаFDConf
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkGeorgy Turevich
 
Сидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDСидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDStanislav Sidristy
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0matroskin1980
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияbearoff
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 

Tendances (20)

JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
 
XPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriverXPath локаторы в Selenium WebDriver
XPath локаторы в Selenium WebDriver
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
Emmet - инструмент для веб-разработчика
Emmet - инструмент для веб-разработчикаEmmet - инструмент для веб-разработчика
Emmet - инструмент для веб-разработчика
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
Selenium vs AJAX
Selenium vs AJAXSelenium vs AJAX
Selenium vs AJAX
 
Сидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDDСидристый Станислав: Паттерны и антипаттерны BDD
Сидристый Станислав: Паттерны и антипаттерны BDD
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 

Similaire à Отладка веб-приложений на Javascript

Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практикеDenis Tuchin
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and AngularSQALab
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Ivan Ruchkin
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Alexey Kostin
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаTatyanazaxarova
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 

Similaire à Отладка веб-приложений на Javascript (20)

Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
Devtools
DevtoolsDevtools
Devtools
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"Владимир Никонов "Вызовы при разработке enterprise продукта"
Владимир Никонов "Вызовы при разработке enterprise продукта"
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
 
Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...Tool View Interface of Integrated Development Environment / Исследование инте...
Tool View Interface of Integrated Development Environment / Исследование инте...
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Построение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кодаПостроение систем автоматического протоколирования Си/Си++ кода
Построение систем автоматического протоколирования Си/Си++ кода
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 

Plus de Denis Latushkin

Дополнительные возможности Javascript
Дополнительные возможности JavascriptДополнительные возможности Javascript
Дополнительные возможности JavascriptDenis Latushkin
 
Нестатичное позиционирование и верстка форм
Нестатичное позиционирование и верстка формНестатичное позиционирование и верстка форм
Нестатичное позиционирование и верстка формDenis Latushkin
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSDenis Latushkin
 
Габаритные свойства, блочная модель и псевдоэлементы CSS
Габаритные свойства, блочная модель и псевдоэлементы CSSГабаритные свойства, блочная модель и псевдоэлементы CSS
Габаритные свойства, блочная модель и псевдоэлементы CSSDenis Latushkin
 
Основы работы с таблицами стилей CSS
Основы работы с таблицами стилей CSSОсновы работы с таблицами стилей CSS
Основы работы с таблицами стилей CSSDenis Latushkin
 
Продвинутый HTML
Продвинутый HTMLПродвинутый HTML
Продвинутый HTMLDenis Latushkin
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с GitDenis Latushkin
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложенияDenis Latushkin
 
Основы языка HTML
Основы языка HTMLОсновы языка HTML
Основы языка HTMLDenis Latushkin
 
Введение во фронтенд-разработку
Введение во фронтенд-разработкуВведение во фронтенд-разработку
Введение во фронтенд-разработкуDenis Latushkin
 
Использование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииИспользование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииDenis Latushkin
 
Объектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptОбъектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptDenis Latushkin
 
Приемы верстки страниц
Приемы верстки страницПриемы верстки страниц
Приемы верстки страницDenis Latushkin
 

Plus de Denis Latushkin (13)

Дополнительные возможности Javascript
Дополнительные возможности JavascriptДополнительные возможности Javascript
Дополнительные возможности Javascript
 
Нестатичное позиционирование и верстка форм
Нестатичное позиционирование и верстка формНестатичное позиционирование и верстка форм
Нестатичное позиционирование и верстка форм
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
 
Габаритные свойства, блочная модель и псевдоэлементы CSS
Габаритные свойства, блочная модель и псевдоэлементы CSSГабаритные свойства, блочная модель и псевдоэлементы CSS
Габаритные свойства, блочная модель и псевдоэлементы CSS
 
Основы работы с таблицами стилей CSS
Основы работы с таблицами стилей CSSОсновы работы с таблицами стилей CSS
Основы работы с таблицами стилей CSS
 
Продвинутый HTML
Продвинутый HTMLПродвинутый HTML
Продвинутый HTML
 
Основы работы с Git
Основы работы с GitОсновы работы с Git
Основы работы с Git
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложения
 
Основы языка HTML
Основы языка HTMLОсновы языка HTML
Основы языка HTML
 
Введение во фронтенд-разработку
Введение во фронтенд-разработкуВведение во фронтенд-разработку
Введение во фронтенд-разработку
 
Использование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложенииИспользование сторонних библиотек в веб-приложении
Использование сторонних библиотек в веб-приложении
 
Объектное и прототипное программирование в Javascript
Объектное и прототипное программирование в JavascriptОбъектное и прототипное программирование в Javascript
Объектное и прототипное программирование в Javascript
 
Приемы верстки страниц
Приемы верстки страницПриемы верстки страниц
Приемы верстки страниц
 

Отладка веб-приложений на Javascript

  • 1. Отладка в процессе разработки Курс Frontend-разработки на Javascript + Vue/React
  • 2. Отладка • Отладкой называется процесс исследования приложения, над которым ведется работа, с целью установления причин сбоев в его работе, и исправление таких ошибок. • Отладка необходима при разработке для устранения ошибок работы приложения. Отладка помогает понять, почему возникает ошибка и какие действия необходимо предпринять для исправления ошибки. • Чем быстрее и точнее производится отладка приложения, тем быстрее идет разработка приложения и тем более устойчивым к дефектам будет приложение.
  • 3. Рефакторинг • Рефакторинг – процесс переработки кода работающего приложения с целью улучшения его производительности или архитектурной простоты. • Рефакторинг является, по сути, «переписыванием» уже работающего кода. Применяется, в основном, для: • Улучшения качества кода приложения – изменение структуры, архитектуры и применяемых технологий • Оптимизация производительности и требовательности кода к ресурсам • Избавление от старых зависимостей и технологий
  • 4. Отладка Frontend-приложений • Отладка клиентского веб-приложения осуществляется, в основном, в браузере. • Chrome Developer Tools предлагает мощный и разнообразный инструментарий, позволяющий осуществлять отладку приложений на разных уровнях и с различных сторон.
  • 5. Точки останова Javascript • Точка останова – возможность приостановить выполнение Javascript-кода в любой точке и рассмотреть значения, задействованные в этом месте кода. • Отладка по точкам останова позволяет: • Просмотреть значения переменных • Проследить за выполнением кода и последовательностью вызова функций • Отлавливать ошибки выполнения кода в не известных заранее местах • Точку останова можно установить и в тексте скрипта при помощи ключевого слова debugger. Однако следует вычищать эти точки из результирующих скриптов!
  • 6. Точки останова • Поставить точку останова можно во вкладке Sources, выбрав нужный файл скрипта слева и нажав на номер строки. • Не забывайте снимать точки останова по завершении отладки!
  • 7. Доступ к текущему узлу • В Chrome DevTools, выбрав какой-либо элемент в DOM-дереве, к нему можно получить доступ в консоли разработки при помощи предопределенной переменной $0. • С этим узлом можно проделывать все операции, как и в обычном скрипте. Как правило, это используется для написания экспериментальных скриптов, которые затем переносятся в основной скрипт.
  • 8. DOM-точки останова • DOM Breakpoints – возможность отследить, какой Javascript-код отвечает за изменение структуры дерева документа в каком-то конкретном месте, например: • Изменение атрибутов элемента • Удаление элемента • Изменение внутренностей элемента • Эта возможность бывает полезна в случаях, когда вы работаете с чужим кодом и нужно узнать, в каком месте осуществляется операция на странице, с которой вы намерены работать.
  • 9. DOM Breakpoint • Для установки точки останова на узле документа найдите его во вкладке Elements в дереве, нажмите правой кнопкой мыши и нажмите Break On > один из необходимых вариантов. • Не забывайте снимать точки останова по завершении отладки! Снимается точка останова так же, как и устанавливается.
  • 10. Список обработчиков • В панели разработки имеется возможность просмотреть список всех обработчиков событий, установленных на элемент. • В этом списке фигурируют как собственные, так и делегированные обработчики. • Просматривать список обработчиков удобно для того, чтобы отыскать в чужом коде место, в котором на данный элемент устанавливается обработчик, и отыскать сам код обработчика. • Список обработчиков доступен во вкладке Elements -> Event Listeners.
  • 11. Данные сайта • Под данными сайта подразумеваются все данные, которые сайт сохраняет на компьютере пользователя. К ним относятся: • Cookie • localStorage, sessionStorage • IndexedDB, WebSQL • Инструмент Application в инструментах отладки позволяет просмотреть все данные сайта и при необходимости – модифицировать.
  • 12. Сетевая активность • Сетевая активность – общее название для всех запросов, которые делает веб-сайт в течение всего времени, что сайт открыт в браузере пользователя. • Инструмент Network позволяет отследить все запросы, которые делает сайт, просмотреть их содержимое и HTTP-заголовки запросов и ответов, а также сымитировать ситуации различной скорости интернет-соединения.
  • 13. Сенсоры • Вкладка Сенсоры (в дополнительной панели инструментов) позволяет искусственно задать значения, которые отдадут странице сенсоры браузера. • К таким сенсорам относят: • Геолокация • Ориентация экрана и угол поворота устройства • Тачпад • Переопределение работы сенсоров позволяет тестировать приложения без необходимости создавать физические условия для тестирования.
  • 14. Профайлинг • Профайлинг – процесс записи работы приложения в течение некоторого времени с предоставлением подробного отчета. Такой отчет используется для: • Оценки общей производительности выполнения кода • Оценки корректности работы кода в целом • Оценки затрат на выполнение отдельных операций или функций в коде • Профайлинг в Chrome DevTools расположены во вкладке Permormance. В этой вкладке можно построить подробный профиль работы приложения и далее анализировать на предмет слабых мест.
  • 15. Замер времени исполнения кода • В приложении порой требуется узнать точно, сколько по времени работал тот или иной код. В консольных командах есть инструмент, позволяющий сделать естественный замер без необходимости писать собственный код: console.time('1'); console.time('2'); // Some code console.timeEnd('1'); // Some code console.timeEnd('2');
  • 16. Покрытие кода • Покрытие кода – инструмент, позволяющий увидеть, насколько полно задействован весь написанный для приложения код во время его работы. • Чем выше покрытие кода приложения – тем, конечно, лучше. Тем не менее, в современных приложениях нередко существует много неиспользуемого кода, подтягиваемого вместе с фреймворками или библиотеками. • Покрытие кода можно просмотреть во вкладке Coverage дополнительной панели инструментов.
  • 17. Дополнительные материалы Документация по инструментам отладки в Chrome https://developers.google.com/web/tools/chrome-devtools/open Небольшой пример отладки кода https://medium.com/devschacht/brandon-morelli-learn-how-to-debug- javascript-with-chrome-devtools-4a8fb7db375c