Я працюю над доведенням концепції за допомогою Angular JavaScript.
Як налагодити кутовий код JavaScript у різних браузерах (Firefox та Chrome)?
Я працюю над доведенням концепції за допомогою Angular JavaScript.
Як налагодити кутовий код JavaScript у різних браузерах (Firefox та Chrome)?
Відповіді:
1. Хром
Для налагодження AngularJS в хромі можна використовувати AngularJS Batarang . (З останніх оглядів плагіну здається, що AngularJS Batarang більше не підтримується. Тестоване в різних версіях хрому не працює)
Ось посилання для опису та демонстрації:
Завантажте хромовий плагін звідси: хромований плагін для налагодження AngularJS
Ви також можете посилатися на це посилання: ng-book: Налагодження AngularJS
Ви також можете використовувати ng-Inspection для налагодження кутових.
2. Firefox
Для Firefox за допомогою Firebug ви можете налагодити код.
Також використовуйте ці додатки для Firefox : AngScope: надбудови для Firefox (не офіційне розширення від команди AngularJS)
3. Налагодження AngularJS : Перевірте посилання: Налагодження AngularJS
ng-inspect
якщо Батаранг доставляє вам головний біль.
ІМХО, найвиразніше досвід отримує / встановлює значення конкретного обсягу, пов’язаного з візуальним елементом. Я робив багато точок перерви не тільки у власному коді, але й у самому 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-інспектора
Спробуйте ng-інспектор. Завантажте додаток для Firefox з веб-сайту http://ng-inspector.org/ . Він недоступний у меню додавання Firefox у меню.
http://ng-inspector.org/ - веб-сайт
http://ng-inspector.org/ng-inspector.xpi - надбудова Firefox
На жаль, більшість доповнень та розширень браузера просто показують вам значення, але вони не дозволяють вам редагувати змінні обсягу або виконувати кутові функції. Якщо ви хочете змінити змінні $ range у консолі браузера (у всіх браузерах), тоді ви можете використовувати jquery. Якщо ви завантажите jQuery перед AngularJS, angular.element може бути переданий селектором jQuery. Таким чином, ви можете перевірити сферу роботи контролера
angular.element('[ng-controller="name of your controller"]').scope()
Приклад: Вам потрібно змінити значення змінної $ range і побачити результат у браузері, а потім просто ввести консоль браузера:
angular.element('[ng-controller="mycontroller"]').scope().var1 = "New Value";
angular.element('[ng-controller="mycontroller"]').scope().$apply();
Ви можете побачити зміни у своєму браузері негайно. Причина, за якою ми застосували $ apply (), полягає в тому, що будь-яка змінна область, що оновлюється за межами кутового контексту, не оновлює прив'язку, потрібно виконати цикл дайджесту після оновлення значень області scope.$apply()
.
Щоб спостерігати значення змінної $ range, вам просто потрібно викликати цю змінну.
Приклад: Ви хочете побачити значення $ range.var1 на веб-консолі в Chrome або Firefox, просто введіть:
angular.element('[ng-controller="mycontroller"]').scope().var1;
Результат буде показаний на консолі негайно.
Додайте дзвінок туди, debugger
де ви його маєте намір використовувати.
someFunction(){
debugger;
}
На console
вкладці інструментів веб-розробників веб-переглядача виберітьangular.reloadWithDebugInfo();
Відвідайте або перезавантажте сторінку, яку ви хочете налагодити, і побачите, як налагоджувач з’являється у вашому браузері.
var rootEle = document.querySelector("html");
var ele = angular.element(rootEle);
range () Ми можемо отримати область $ з елемента (або його батьківського), використовуючи метод range () для елемента:
var scope = ele.scope();
інжектор ()
var injector = ele.injector();
За допомогою цього інжектора ми зможемо інсталювати будь-який кутовий об’єкт у нашій програмі, наприклад служби, інші контролери або будь-який інший об'єкт
Ви можете додати "код налагодження" у свій код і перезавантажити додаток, яке ставить туди перерву, і ви можете "переступити" або запустити.
var service = {
user_id: null,
getCurrentUser: function() {
debugger; // Set the debugger inside
// this function
return service.user_id;
}
Налагоджувати можна за допомогою браузерів, вбудованих в інструменти для розробників.
відкрийте інструменти для розробників у веб-переглядачі та перейдіть на вкладку "джерело".
відкрийте файл, який ви хочете налагодити, використовуючи Ctrl + P та шукайте ім'я файлу
додайте точку розриву на рядок, натиснувши ліву частину коду.
оновіть сторінку.
Для налагодження доступно багато плагінів, на які ви можете звернутися за допомогою хромованого додатка Налагоджувальний кутовий додаток, використовуючи плагін "Налагоджувач для хрому".
Для коду Visual Studio (не для Visual Studio) робіть Ctrl+ Shift+P
Введіть налагоджувач для Chrome на панелі пошуку, встановіть його та увімкніть його.
У свій launch.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 Tools для налагодження програм Angular 2 та вище.