Angular JavaScript kullanarak bir kavram kanıtı üzerinde çalışıyorum.
Angular JavaScript kodu farklı tarayıcılarda (Firefox ve Chrome) nasıl hata ayıklanır?
Angular JavaScript kullanarak bir kavram kanıtı üzerinde çalışıyorum.
Angular JavaScript kodu farklı tarayıcılarda (Firefox ve Chrome) nasıl hata ayıklanır?
Yanıtlar:
1. Chrome
Hata Ayıklama AngularJS in chrome için AngularJS Batarang kullanabilirsiniz . (Eklenti üzerinde yapılan son incelemelerden, AngularJS Batarang'ın artık bakımının yapılmadığı görülüyor. Chrome'un çeşitli sürümlerinde test edildiğinde çalışmıyor)
İşte açıklama ve Demo için Bağlantı:
Chrome eklentisini buradan indirin: hata ayıklama için krom eklentisi AngularJS
Bu bağlantıya da başvurabilirsiniz: ng-book: AngularJS Hata Ayıklama
Açısal hata ayıklama için ng-inspect'i de kullanabilirsiniz.
2. Firefox
For Firefox yardımıyla Firebug kodu hata.
Ayrıca bu Firefox Eklentilerini kullanın: AngScope: Firefox için Eklentiler (AngularJS Ekibinin resmi uzantısı değil)
3. AngularJS'de Hata Ayıklama : Bağlantıyı Kontrol Edin: AngularJS'de Hata Ayıklama
ng-inspect
Batarang'ın size baş ağrısı yapıp yapmadığına bakın .
IMHO, en sinir bozucu deneyim, görsel bir öğeyle ilgili belirli bir kapsamın değerini almaktan / belirlemekten gelir. Sadece kendi kodumda değil, aynı zamanda angular.js'de de çok sayıda kesme noktası yaptım, ancak bazen bu en etkili yol olmuyor. Aşağıdaki yöntemler çok güçlü olsa da, gerçekten üretim kodunda kullanıyorsanız kesinlikle kötü uygulama olarak kabul edilir, bu yüzden onları akıllıca kullanın!
IE olmayan tarayıcıların çoğunda, bir öğeyi sağ tıklayıp "Öğeyi İncele" yi tıklayarak bir öğeyi seçebilirsiniz. Alternatif olarak, örneğin Chrome'daki Öğeler sekmesindeki herhangi bir öğeyi de tıklayabilirsiniz. En son seçilen öğe, $0
konsolda değişken olarak saklanacaktır .
İzolasyon kapsamı oluşturan bir yönerge olup olmadığına bağlı olarak kapsamı angular.element($0).scope()
veya ile alabilirsiniz angular.element($0).isolateScope()
( $($0).scope()
$ etkinse kullanın ). Batarang'ın en son sürümünü kullandığınızda tam olarak elde ettiğiniz şey budur. Değeri doğrudan değiştiriyorsanız scope.$digest()
, değişiklikleri kullanıcı arayüzünde yansıtmak için kullanmayı unutmayın .
Hata ayıklama için gerekli değildir. scope.$eval(expression)
bir ifadenin beklenen değere sahip olup olmadığını hızlıca kontrol etmek istediğinizde çok kullanışlıdır.
Arasındaki fark scope.bla
ve scope.$eval('bla')
prototip miras değerlerini dikkate almaz eski olduğunu. Resmin tamamını görmek için aşağıdaki pasajı kullanın (değeri doğrudan değiştiremezsiniz, ancak $eval
yine de kullanabilirsiniz !)
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))
}
};
İle kullanın scopeEval($($0).scope())
.
Bazen ngModel
bir direktif yazarken değerleri izlemek isteyebilirsiniz . Kullanım $($0).controller('ngModel')
ve denetlemek alacak $formatters
, $parsers
, $modelValue
, $viewValue
$render
ve her şeyi.
ayrıca kullanabileceğiniz $ log var! Konsolunuzu çalışmasını istediğiniz şekilde kullanır!
hatayı / uyarıyı / bilgiyi, konsolunuzun size normal şekilde gösterdiği şekilde gösterme!
bunu kullan> Belge
Sorunun yanıtlanmasına rağmen, ng-müfettişine bir göz atmak ilginç olabilir.
Ng-müfettişini dene. Http://ng-inspector.org/ web sitesinden Firefox eklentisini indirin . Firefox eklenti menüsünde mevcut değildir.
http://ng-inspector.org/ - web sitesi
http://ng-inspector.org/ng-inspector.xpi - Firefox Eklentisi
Maalesef eklentilerin ve tarayıcı uzantılarının çoğu yalnızca değerleri size gösteriyor ancak kapsam değişkenlerini düzenlemenize veya açısal işlevleri çalıştırmanıza izin vermiyorlar. Tarayıcı konsolunda (tüm tarayıcılarda) $ kapsam değişkenlerini değiştirmek istiyorsanız jquery'yi kullanabilirsiniz. JQuery'yi AngularJS'den önce yüklerseniz, angular.element bir jQuery seçicisine geçilebilir. Böylece bir kontrolörün kapsamını inceleyebilirsiniz.
angular.element('[ng-controller="name of your controller"]').scope()
Örnek: $ kapsam değişkeninin değerini değiştirmeniz ve sonucu tarayıcıda görmeniz ve ardından tarayıcı konsolunu yazmanız yeterlidir:
angular.element('[ng-controller="mycontroller"]').scope().var1 = "New Value";
angular.element('[ng-controller="mycontroller"]').scope().$apply();
Tarayıcınızda değişiklikleri anında görebilirsiniz. $ Apply () kullanmamızın nedeni şudur: dış açısal bağlamdan güncellenen herhangi bir kapsam değişkeni, bağlamayı güncellemeyecektir, kullanarak kapsamın değerlerini güncelledikten sonra özet döngüsünü çalıştırmanız gerekir scope.$apply()
.
Bir $ kapsam değişken değerini gözlemlemek için, o değişkeni çağırmanız yeterlidir.
Örnek: Chrome veya Firefox'ta web konsolunda $ kapsam.var1 değerini görmek istiyorsanız şunu yazın:
angular.element('[ng-controller="mycontroller"]').scope().var1;
Sonuç hemen konsolda gösterilecektir.
Kullanmak istediğiniz debugger
yere çağrı ekleyin .
someFunction(){
debugger;
}
In console
tarayıcınızın web geliştirici araçları sekmesi, konuylaangular.reloadWithDebugInfo();
Hata ayıklamayı düşündüğünüz sayfayı ziyaret edin veya yeniden yükleyin ve hata ayıklayıcının tarayıcınızda göründüğünü görün.
var rootEle = document.querySelector("html");
var ele = angular.element(rootEle);
kapsam () $ kapsamını öğeden (veya üst öğesinden), öğe üzerindeki kapsam () yöntemini kullanarak getirebiliriz:
var scope = ele.scope();
enjektör()
var injector = ele.injector();
Bu enjektörle, daha sonra uygulamamızın içindeki hizmetler, diğer denetleyiciler veya başka herhangi bir nesne gibi herhangi bir Angular nesneyi somutlaştırabiliriz.
Kodunuza 'hata ayıklayıcı' ekleyebilir ve uygulamayı yeniden yükleyebilirsiniz, bu da kesme noktasını oraya koyar ve 'adım atabilir' veya çalıştırabilirsiniz.
var service = {
user_id: null,
getCurrentUser: function() {
debugger; // Set the debugger inside
// this function
return service.user_id;
}
Geliştirici araçlarında yerleşik tarayıcıları kullanarak hata ayıklayabilirsiniz.
geliştirici araçlarını tarayıcıda açın ve kaynak sekmesine gidin.
Ctrl + P kullanarak hata ayıklamak istediğiniz dosyayı açın ve dosya adını arayın
kodun sol tarafına tıklayarak bir satıra kesme noktası ekleyin.
sayfayı yenile.
Hata ayıklama için kullanılabilecek birçok eklenti var, "Chrome için Hata Ayıklayıcı" eklentisini kullanarak krom eklentisi Debug Angular Application'ı kullanmak için başvurabilirsiniz
Visual Studio Code için (Visual Studio Değil) do Ctrl+ Shift+P
Arama çubuğuna Chrome için Hata Ayıklayıcı yazın, kurun ve etkinleştirin.
Sizin de launch.json
dosyaya bu yapılandırma ekleyin:
{
"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"
},
]
}
Uzantının eklenmesi için Chrome'u uzaktan hata ayıklama etkin olarak başlatmanız gerekir.
Chrome kısayoluna sağ tıklayın ve özellikleri seçin "target" alanında --remote-debugging-port = 9222 ekleyin Veya bir komut isteminde /chrome.exe --remote-debugging-port = 9222 komutunu çalıştırın
Bir terminalde / Applications / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --remote-debugging-port = 9222 komutunu yürütün.
Bir terminalde google-chrome --remote-debugging-port = 9222'yi başlatın
Eklentiler artık çalışmadığından, bulduğum en yararlı araç seti Visual Studio / IE kullanmaktır çünkü JS'nizde kesme noktaları ayarlayabilir ve verilerinizi bu şekilde inceleyebilirsiniz. Elbette Chrome ve Firefox'un genel olarak çok daha iyi geliştirme araçları var. Ayrıca, iyi ol 'console.log () çok yardımcı oldu!
Belki Angular 2 ve üzeri uygulamalarda hata ayıklamak için Angular Augury A Google Chrome Geliştirici Araçları uzantısını kullanabilirsiniz .