Я работаю над доказательством концепции, используя Angular JavaScript.
Как отладить Angular код JavaScript в разных браузерах (Firefox и Chrome)?
Я работаю над доказательством концепции, используя Angular JavaScript.
Как отладить Angular код JavaScript в разных браузерах (Firefox и Chrome)?
1. Chrome
Для Debug AngularJS в хром вы можете использовать AngularJS Batarang. (Из недавних обзоров на плагине кажется, что AngularJS Batarang больше не поддерживается. Протестировано в разных версиях хром не работает)
Вот ссылка для описания и демонстрации:
Загрузите chrome plugin отсюда: chrome plugin для отладки AngularJS
Вы также можете сослаться на эту ссылку: ng-book: Отладка AngularJS
Вы также можете использовать ng-inspect для отладки angular.
2. Firefox
Для Firefox с помощью Firebug вы можете отлаживать код.
Также используйте надстройки Firefox: AngScope: надстройки для Firefox (не официальное расширение командой AngularJS)
3. Отладка AngularJS: проверьте ссылку: Отладка AngularJS
IMHO, самый неприятный опыт связан с получением/установкой значения определенной области, связанной с визуальным элементом. Я сделал много точек останова не только в своем собственном коде, но также и в angular.js, но иногда это просто не самый эффективный способ. Хотя приведенные ниже методы очень эффективны, они, безусловно, считаются плохой практикой, если вы действительно используете в производственном коде, поэтому используйте их с умом!
Во многих браузерах, отличных от IE, вы можете выбрать элемент, щелкнув правой кнопкой мыши элемент и нажав "Осмотреть элемент". Кроме того, вы также можете щелкнуть любой элемент на вкладке Элементы в Chrome, например. Последний выбранный элемент будет храниться в переменной $0 в консоли.
В зависимости от того, существует ли директива, которая создает область изоляции, вы можете получить область видимости с помощью angular.element($0).scope() или angular.element($0).isolateScope() (используйте $($0).scope(), если включен параметр $). Это именно то, что вы получаете, когда используете последнюю версию Batarang. Если вы меняете значение напрямую, не забудьте использовать scope.$digest(), чтобы отразить изменения в пользовательском интерфейсе.
Не обязательно для отладки. scope.$eval(expression) очень удобно, если вы хотите быстро проверить, имеет ли выражение ожидаемое значение.
Разница между scope.bla и scope.$eval('bla') заключается в том, что первая не учитывает прототипно унаследованные значения. Используйте сниппет ниже, чтобы получить всю картину (вы не можете напрямую изменить значение, но вы можете использовать $eval в любом случае!)
scopeCopy = function (scope) {
var a = {};
for (x in scope){
if (scope.hasOwnProperty(x) &&
x.substring(0,1) !== '$' &&
x !== 'this') {
a[x] = angular.copy(scope[x])
}
}
return a
};
scopeEval = function (scope) {
if (scope.$parent === null) {
return hoho(scope)
} else {
return angular.extend({}, haha(scope.$parent), hoho(scope))
}
};
Используйте его с scopeEval($($0).scope()).
Иногда вы можете отслеживать значения в ngModel при написании директивы. Используйте $($0).controller('ngModel'), и вы сможете проверить $formatters, $parsers, $modelValue, $viewValue $render и все.
существует также $log, который вы можете использовать! он использует вашу консоль так, чтобы вы ее работали!
показывает сообщение об ошибке/предупреждении/информацию о том, как обычно показывает ваша консоль!
используйте это > Документ
Несмотря на ответ на вопрос, было бы интересно взглянуть на ng-inspector
Попробуйте ng-inspector. Загрузите надстройку для Firefox с веб-сайта http://ng-inspector.org/. Он недоступен в меню добавления Firefox.
http://ng-inspector.org/ - веб-сайт
http://ng-inspector.org/ng-inspector.xpi - надстройка Firefox
К сожалению, большинство надстроек и расширений браузера просто показывают вам значения, но они не позволяют вам редактировать переменные области или запускать функции angular. Если вы хотите изменить переменные $scope в консоли браузера (во всех браузерах), вы можете использовать jquery. Если вы загружаете jQuery перед AngularJS, angular.element может быть передан селектор jQuery. Таким образом, вы можете проверить область действия контроллера с помощью
angular.element('[ng-controller="name of your controller"]').scope()
Пример: Вам нужно изменить значение переменной $scope и увидеть результат в браузере, а затем просто ввести консоль браузера:
angular.element('[ng-controller="mycontroller"]').scope().var1 = "New Value";
angular.element('[ng-controller="mycontroller"]').scope().$apply();
Вы можете сразу увидеть изменения в своем браузере. Причина, по которой мы использовали $apply(), - это: любая переменная области, обновленная извне angular контекста, не обновит привязку, вам нужно запустить цикл дайджест после обновления значений области с помощью scope.$apply().
Для наблюдения значения переменной $scope вам просто нужно вызвать эту переменную.
Пример: Вы хотите увидеть значение $scope.var1 в веб-консоли в Chrome или Firefox, просто введите:
angular.element('[ng-controller="mycontroller"]').scope().var1;
Результат будет немедленно показан на консоли.
var rootEle = document.querySelector("html");
var ele = angular.element(rootEle);
Объем() Мы можем получить $scope из элемента (или его родителя) с помощью метода scope() на Элемент:
var scope = ele.scope();
инжектор()
var injector = ele.injector();
С помощью этого инжектора мы можем затем создать экземпляр любого объекта Angular внутри нашего приложения, такого как службы, другие контроллеры или любой другой объект
Добавьте вызов debugger, где вы собираетесь его использовать.
someFunction(){
debugger;
}
На вкладке console инструментов веб-разработчика браузера введите angular.reloadWithDebugInfo();
Посетите или перезагрузите страницу, которую вы собираетесь отлаживать, и посмотрите, как отладчик отображается в вашем браузере.
Вы можете добавить "отладчик" в свой код и перезагрузить приложение, которое помещает точку останова, и вы можете "перешагнуть" или запустить.
var service = {
user_id: null,
getCurrentUser: function() {
debugger; // Set the debugger inside
// this function
return service.user_id;
}
Для кода Visual Studio (не Visual Studio) выполните Ctrl + Shift + P
введите Debugger для Chrome в строке поиска, установите его и включите.
в файле Lanche.json добавьте эту конфигурацию:
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost/mypage.html",
"webRoot": "${workspaceRoot}/app/files",
"sourceMaps": true
},
{
"name": "Launch index.html (without sourcemaps)",
"type": "chrome",
"request": "launch",
"file": "${workspaceRoot}/index.html"
},
]
}
Вы должны запустить Chrome с удаленной отладкой, чтобы расширение было прикреплено к нему.
Щелкните правой кнопкой мыши ярлык Chrome и выберите свойства В поле "target" добавьте -remote-debugging-port = 9222 Или в командной строке выполните /chrome.exe --remote-debugging-port = 9222
В терминале выполните /Applications/Google \Chrome.app/Contents/MacOS/Google\Chrome -remote-debugging-port = 9222
В терминале запустите google-chrome -remote-debugging-port = 9222
Поскольку надстройки больше не работают, самый полезный набор инструментов, которые я нашел, - это использование Visual Studio/IE, потому что вы можете установить контрольные точки в своем JS и проверить свои данные таким образом. Конечно, Chrome и Firefox имеют гораздо лучшие инструменты для разработчиков в целом. Кроме того, хороший ol 'console.log() был очень полезен!
Возможно, вы можете использовать Angular Augury Расширение инструментальных средств Google Chrome Dev для отладки Angular 2 и выше приложений.