Bölüm 19 / 20
Tarayıcı DevTools
Elements, Console, Network, Sources.
14 dakikalık okuma
Bu hattın on sekiz dersinde defalarca "DevTools'ta bak" dedik. Bu ders o cümlenin karşılığını tek yerde topluyor. DevTools bir lüks değil, ön yüz geliştiricisinin asıl teşhis aracıdır: CSS'in neden tutmadığı, isteğin neden 401 döndüğü, sayfanın neden takıldığı ve ekran okuyucunun ne duyduğu tahmin edilerek değil okunarak bulunur. Deneyimli bir geliştiriciyi ayıran şey daha çok komut bilmesi değil, hangi soruyu hangi panelde soracağını bilmesidir — bu dersin asıl konusu odur.
01Ne öğreneceksin
- Panelleri ve hangi sorunun hangi panelde çözüldüğünü
- Komut menüsü — tek başına en çok işe yarayan kısayol
- Elements: kaskad okuma, kutu diyagramı, flex/grid denetleyicileri, durum zorlama
- Erişilebilirlik ağacını okumak
- Console:
$0,$$, canlı ifadeler veconsole.log'un bir tuzağı - Network: zaman dökümü, kısıtlama, isteği
curlolarak kopyalama, engelleme - Sources: koşullu kesme noktası, günlük noktası, XHR ve olay kesme noktaları
- Kapsam ve çağrı yığını okumak; kaynak eşlemesi
- Application: depolama, çerezler, bfcache testi
- Performance, Lighthouse, Coverage ve Rendering benzetimleri
- Teşhis akışı: bir hatayı hangi sırayla ararsın
02Açmak ve komut menüsü
| Kısayol | İş |
|---|---|
| F12 · Ctrl+Shift+I | DevTools'u aç |
| Ctrl+Shift+C | Öge seçme kipi — sayfada tıkladığın ögeye git |
| Ctrl+Shift+P | Komut menüsü |
| Ctrl+Shift+M | Cihaz emülasyonu |
| Ctrl+Shift+R | Önbelleği yok sayarak yenile |
| Ctrl+P (Sources) | Dosyaya git |
| Esc | Alttaki çekmeceyi aç/kapat (herhangi bir panelde konsol) |
Komut menüsü (Ctrl+Shift+P) menülerde kaybolmayı bitirir: yazdığın kelimeye göre komut arar. Sık kullanılanlar: "screenshot" (tam sayfa ya da tek öge ekran görüntüsü), "coverage", "rendering", "sensors", "disable JavaScript", "show accessibility". Tek bir kısayol öğrenecek olsan bu olmalı.
Alttaki çekmece (Esc) da bilinmelidir: hangi panelde olursan ol konsolu ya da başka bir sekmeyi (Coverage, Rendering, Network conditions) yanına açar — Elements'te CSS düzenlerken konsolu görmek için panel değiştirmen gerekmez.
03Elements: yapı ve stil
2. derste "kaynak kod ≠ DOM" demiştik; Elements paneli canlı DOM'u gösterir. HTML'i çift tıklayıp düzenleyebilir, ögeyi sürükleyebilir, sağ tıkla gizleyebilir ya da silebilirsin — hepsi geçicidir, yenilemede kaybolur.
| Bölme | Cevapladığı soru |
|---|---|
| Styles | Bu ögeye hangi kurallar uygulandı, hangisi kazandı? Ezilenler üstü çizili görünür; geçersiz bildirimler uyarı simgesi alır (7. ders) |
| Computed | Son değer ne ve hangi dosyanın hangi satırından geldi? |
| Kutu diyagramı | İçerik, dolgu, kenarlık ve dış boşluk kaç piksel (8. ders) |
| Layout | Sayfadaki tüm flex ve grid kapsayıcıları; hat numaralarını ve alan adlarını ekranda gösterir (9-10. ders) |
| Accessibility | Ögenin rolü, hesaplanan adı ve adın kaynağı (5. ders) |
| Event Listeners | Bu ögede hangi dinleyiciler var, hangi dosyadan bağlandı (16. ders) |
Durum zorlama: Styles bölmesindeki :hov düğmesi
:hover, :focus, :focus-visible,
:active ve :visited durumlarını sabitler. Fareyi çekince kaybolan
stilleri incelemenin tek pratik yolu budur — odak halkalarını denetlerken sürekli
kullanılır.
DOM kesme noktaları: bir ögeye sağ tıklayıp Break on → subtree modifications / attribute modifications / node removal seçersen, o ögeyi hangi kodun değiştirdiğini yakalarsın. "Bu sınıfı kim ekliyor" ya da "bu satır neden siliniyor" sorularının en hızlı cevabıdır ve üçüncü parti betiklerle uğraşırken hayat kurtarır.
Son olarak Elements'te renk seçicisi kontrast oranını gösterir (6. ders) ve
::before/::after gibi sözde ögeler ağaçta ayrı satır olarak
görünür.
04Console: log'un ötesi
$0 // Elements'te SEÇİLİ öge ($1, $2… önceki seçimler)
$("sel") // document.querySelector kısayolu
$$("sel") // querySelectorAll — DİZİ döndürür (map/filter çalışır)
$x("//tr") // XPath ile seçim
copy($0) // panoya kopyala
getEventListeners($0) // ögedeki dinleyiciler
monitorEvents($0, "click") // olayları konsola akıt (bitince unmonitorEvents)
queryObjects(Promise) // bellekteki tüm örnekler
console.table(kayitlar); // dizi/nesne → tablo
console.group("Yükleme"); … console.groupEnd();
console.time("ciz"); … console.timeEnd("ciz");
console.count("tıklama");
console.assert(sonuc.length > 0, "liste boş geldi");
console.trace(); // buraya nereden gelindi
console.dir(el); // ögeyi DOM ağacı değil NESNE olarak göster
console.log'un tuzağı
Bir nesneyi günlüklediğinde konsol çoğu zaman canlı referansı tutar:
satırı açtığın anda nesnenin o anki hâlini görürsün, günlüklendiği andaki hâlini
değil. "Loga baktım değer doğruydu ama kod yanlış çalışıyor" şaşkınlığının sebebi budur.
Anlık görüntü istiyorsan console.log(structuredClone(nesne)) ya da
console.log(JSON.parse(JSON.stringify(nesne))) yaz — ya da doğrusunu yap ve
kesme noktası koy. Konsolun ikinci tuzağı, günlük satırlarının üretimde kalmasıdır:
hassas veri sızdırır ve döngü içinde ciddi yavaşlık üretir; derleme adımında temizlenir
ya da bir günlük sarmalayıcısı kullanılır.
Canlı ifadeler (göz simgesi) bir ifadeyi konsolun üstünde sürekli günceller:
document.activeElement yazarsan odağın nerede olduğunu klavyeyle gezerken
canlı izlersin — 5. ve 16. derslerdeki odak yönetimini denetlemenin en pratik yoludur.
Konsolun filtre çubuğu ve seviye seçicisi (Errors/Warnings/Info) gürültüyü keser; Preserve log seçeneği sayfa değişse bile günlüğü korur — yönlendirme sırasında kaybolan hataları yakalamak için gerekir.
05Network: ağda ne oldu
1. derste zaman dökümünü görmüştük. Günlük kullanımda en çok işe yarayanlar:
- Filtre satırı: tür düğmeleri (Fetch/XHR, JS, CSS, Img) ve arama.
status-code:404,larger-than:500k,method:POST,-domain:analytics.examplegibi filtreler yazılabilir. - Disable cache: panel açıkken önbelleği devre dışı bırakır — "değişikliğim neden görünmüyor" sorusunun ilk kontrolü.
- Kısıtlama (throttling): Slow 4G ya da özel bir profil. Offline ile çevrimdışı davranışını test edersin. Ağ kısıtlaması CPU'yu yavaşlatmaz; onun için Performance panelindeki CPU kısıtlaması kullanılır.
- Sağ tık → Copy → Copy as cURL / Copy as fetch: isteği başlıkları ve çerezleriyle birlikte kopyalar. Bir sorunu takıma bildirirken ya da terminalden yeniden denerken en hızlı yol budur.
- Sağ tık → Block request URL: bir kaynağı engelleyip sayfanın onsuz nasıl davrandığını görürsün (üçüncü parti betiğin etkisini ölçmek için).
- Sağ tık → Replay XHR: isteği yeniden gönderir.
- HAR olarak dışa aktarma: tüm oturumu dosyaya kaydeder — çerez ve belirteç içerir, paylaşmadan önce temizlenmelidir.
Bir isteğe tıklayınca: Headers (durum kodu, istek/yanıt başlıkları), Payload (gönderilen gövde — 3. derste "gerçekte ne gitti" sorusunun cevabı), Preview (biçimlendirilmiş JSON), Response (ham gövde), Timing (zaman dökümü), Initiator (bu isteği hangi kod satırı başlattı — kaynağı bilinmeyen istekleri bulmanın yolu).
1. derste konuştuğumuz CORS ikiliği burada görünür: konsolda hata vardır ama Network'te
istek başarılı görünebilir; ayrıca basit olmayan isteklerde ayrı bir OPTIONS
satırı bulunur.
06Sources: hata ayıklama
Hata ayıklamak console.log serpiştirmek değildir. Kesme noktası
koyduğunda kodu durdurup o andaki tüm değişkenleri, çağrı zincirini ve kapsamı
görürsün — üstelik kodu değiştirmeden.
| Kesme noktası türü | Ne zaman |
|---|---|
| Satır (satır numarasına tıkla) | Temel kullanım |
| Koşullu (sağ tık → Add conditional breakpoint) | Döngünün 400. turunda durmak: i === 400 — en çok işe yarayanı |
| Günlük noktası (Logpoint) | Durmadan değer yazdır — kodu değiştirmeden console.log etkisi |
| XHR/fetch | Adresinde belirli bir metin geçen istek atılınca dur |
| Olay dinleyicisi | Herhangi bir click'te dur — hangi kodun çalıştığı bilinmiyorsa |
| DOM | Öge değiştirildiğinde dur (3. bölüm) |
debugger; | Koda gömülü kesme noktası — commit etmeyi unutma |
Durduğunda sağ bölmede: Scope (yerel, kapanış ve küresel değişkenler — 14. derste kapanışın içindekileri burada görmüştük), Call Stack (buraya nereden gelindi), Watch (izlenen ifadeler), Breakpoints (hepsini tek yerden aç/kapat). Adım komutları: devam et, üzerinden atla (step over), içine gir (step into), dışına çık (step out).
Üç pratik ayrıntı:
- Kaynak eşlemesi (18. ders) sayesinde küçültülmüş kod yerine özgün dosyanı görürsün. Göremiyorsan üretim yapısında eşleme yayınlanmamıştır.
- Kod biçimlendirme ({} düğmesi) tek satıra sıkışmış kodu okunur hâle getirir.
- Ignore list: kütüphane dosyalarını listeye ekleyerek adımlarken onların içine girmeni engellersin — çağrı yığını da sadeleşir.
Local overrides ise az bilinen güçlü bir özelliktir: sunucudan gelen bir dosyayı yerel bir kopyayla değiştirir ve yenilemeye rağmen korur. Kaynağına erişemediğin bir ortamda (üretim ya da başka takımın servisi) bir düzeltmeyi denemenin en hızlı yoludur.
07Application ve depolama
- Local Storage / Session Storage: anahtar-değer çiftlerini görüntüle, düzenle,
sil. Bu sitedeki
kariyer:<dugum-id>ilerleme kayıtlarını vekariyer:temadeğerini buradan görebilirsin. - Cookies: ad, değer, alan adı, yol, süre ve
HttpOnly,Secure,SameSitesütunları — 13. hattaki oturum sorunlarının ilk bakılacak yeri. - Cache Storage / Service Workers: çevrimdışı destek ve sürüm geçişleri; Update on reload ve Bypass for network seçenekleri geliştirmeyi kolaylaştırır.
- Back/forward cache: bfcache testini çalıştırır ve engelleyen sebebi adıyla söyler (1. ders).
- Clear site data: tüm depolamayı temizler — "ilk kez giren kullanıcı" durumunu denemenin doğru yolu.
08Performance, Lighthouse, Coverage, Rendering
| Panel | Cevapladığı soru |
|---|---|
| Performance | Sayfa neden takılıyor? Ana iş parçacığında hangi işlev uzun sürdü, kaç yeniden düzen oldu, uzun görevler nerede? CPU kısıtlaması (4x/6x) ile zayıf cihazı taklit eder |
| Lighthouse | Genel bir denetim: performans, erişilebilirlik, en iyi uygulamalar, SEO. Sınırı bilinmeli — otomatik denetim erişilebilirlik sorunlarının yalnız bir kısmını yakalar (6. ders) |
| Coverage | Yüklenen CSS ve JS'in yüzde kaçı kullanılmadı? Ölü kod ve gereksiz kütüphane avı (7. ders) |
| Memory | Bellek sızıntısı: yığın anlık görüntüleri arasında hangi nesneler birikiyor — 14. derste konuştuğumuz kaldırılmayan dinleyiciler burada görünür |
| Rendering (çekmece) | Benzetimler ve görselleştirmeler |
Rendering sekmesindeki anahtarlar bu hattaki birçok dersi test etmeni sağlar: Paint flashing (hangi bölgeler yeniden boyanıyor — 1. ders), Layout Shift Regions (CLS'i gözle görmek), Emulate prefers-color-scheme (12. ders), Emulate prefers-reduced-motion (6. ders), Emulate vision deficiencies (renk körlüğü benzetimi — 6. ders), Frame Rendering Stats (kare hızı).
Cihaz emülasyonu (11. ders) ekran boyutunu, cihaz piksel oranını, dokunma girdisini
ve kullanıcı aracısını taklit eder; taklit etmedikleri gerçek dokunma davranışı,
yazılım klavyesinin görünüm alanını kısaltması, mobil tarayıcının adres çubuğu davranışı ve
cihazın gerçek CPU/ağ farkıdır. Bu yüzden kritik ekranlar gerçek cihazda denenir:
Android'i USB ile bağlayıp chrome://inspect üzerinden, iOS'u Safari'nin
Geliştirici menüsünden uzaktan ayıklayabilirsin.
09Teşhis akışı
Asıl beceri, hangi soruyu nereye soracağını bilmektir:
| Belirti | Sıra |
|---|---|
| Stil uygulanmıyor | Elements → öge doğru mu → Styles'ta kural görünüyor mu (seçici tutmuyor) → üstü çizili mi (kaskad) → uyarı simgesi var mı (geçersiz değer) → Computed'da son değer nereden geliyor |
| Düzen bozuk | Kutu diyagramı → Layout bölmesinde flex/grid çizgileri → taşmayı üreten ögeyi bul (11. dersteki konsol betiği) |
| Düğme çalışmıyor | Console'da hata var mı → Event Listeners'ta dinleyici bağlı mı → olay kesme noktasıyla hangi kodun çalıştığını gör → devretmede closest eşleşiyor mu |
| Veri gelmiyor | Network → istek gitti mi → durum kodu → Payload doğru mu → Response ne diyor → Initiator hangi kod → konsolda CORS uyarısı var mı |
| Sayfa takılıyor | Performance kaydı → uzun görevler → hangi işlev → yeniden düzen mi, betik mi → CPU kısıtlamasıyla doğrula |
| Yavaş açılıyor | Network zaman dökümü (TTFB mi indirme mi bağlantı mı) → Coverage → Lighthouse |
| Eski sürüm görünüyor | Disable cache ile yenile → Application → Service Workers ve Cache Storage → 1. dersteki damgalama kuralı |
| Ekran okuyucuda yanlış | Accessibility bölmesi (rol, ad, kaynak) → klavye turu → canlı ifadeyle document.activeElement |
Ve bir üretim gerçeği: DevTools senin makinende olanı gösterir. Kullanıcıda oluşan
hatayı görmek için tarayıcıdan hata toplayan bir izleme aracı (window.onerror,
unhandledrejection — 17. ders) ve gerçek kullanıcı ölçümü gerekir. 15. hatta
hata ayıklamanın yöntem tarafını, 19. hatta gözlemlenebilirliği ayrıca göreceksin.
10Mini alıştırma — Bozuk sayfayı araçlarla çöz
Yaklaşık 20 dakika · bu sitenin herhangi bir sayfası ya da kendi dosyan
- Komut menüsü: Ctrl+Shift+P ile "screenshot" arayıp tam sayfa ekran görüntüsü al.
- Kaskad: bir başlığa iki farklı kuraldan renk ver; Styles'ta hangisinin kazandığını ve ezilenin üstünün çizildiğini gör. Computed'dan değerin kaynağına git.
- Geçersiz değer:
padding: 10yaz ve uyarı simgesini bul. - Durum zorlama:
:hovile:focus-visibledurumunu sabitleyip odak halkasını incele. - Kutu ve düzen: bir kartın kutu diyagramını oku; sonra Layout bölmesinden grid hat numaralarını sayfada göster.
- Erişilebilirlik: bir simge düğmesinin rolünü ve hesaplanan adını oku. Adı sil, ne olduğunu gör.
- Canlı ifade:
document.activeElementekle ve sayfayı yalnız klavyeyle gezerek odağı izle. $0: bir ögeyi seç, konsolda$0ile stil değiştir vegetEventListeners($0)ile dinleyicilerini listele.console.logtuzağı: bir nesneyi günlükle, sonra kodda değiştir ve konsolda satırı aç. Hangi değeri gördün?structuredCloneile tekrarla.- DOM kesme noktası: bir ögeye "attribute modifications" kesme noktası koy ve sınıfını değiştiren kodu yakala.
- Koşullu kesme noktası: 1000 turlu bir döngüde yalnız
i === 500olduğunda dur. Scope bölmesinde değerleri incele. - Günlük noktası: aynı döngüde durmadan değer yazdır.
- Network: bir isteği Copy as cURL ile kopyala ve terminalde çalıştır. Sonra aynı isteği Block request URL ile engelleyip sayfanın davranışını gör.
- Kısıtlama: Slow 4G ile sayfayı yenile; yükleme durumları görünüyor mu (6. dersteki beş durum)?
- Coverage: kullanılmayan CSS ve JS yüzdesini ölç.
- Rendering: Paint flashing ve Layout Shift Regions'ı açıp sayfayı kaydır. Sonra renk körlüğü benzetimiyle durum rozetlerini kontrol et.
- Depolama: Application'dan
kariyer:ile başlayan anahtarları bul, birini sil ve sayfanın ilerlemesine ne olduğunu gör.
11Kendini sına
Bir CSS kuralı uygulanmıyor. DevTools ile nasıl teşhis edersin?
Üç ihtimal vardır ve Elements paneli üçünü de gösterir.
(1) Seçici tutmuyor: ögeyi seç ve kuralın Styles listesinde görünüp
görünmediğine bak; görünmüyorsa eşleşme yoktur — sınıf adında yazım hatası, yanlış
birleştirici (table > tr tuzağı), :nth-child karışıklığı ya
da sınıfın JavaScript tarafından henüz eklenmemiş olması. (2) Bildirim geçersiz:
CSS anlamadığı bildirimi sessizce atar; DevTools bunu uyarı simgesiyle gösterir —
birimsiz uzunluk, yanlış özellik adı, ya da bir önceki satırda unutulan noktalı virgül
(o durumda iki bildirim birden düşer). (3) Kaskadda kaybetti: kural listede vardır
ama üstü çizilidir; üzerine gelince onu ezen kural gösterilir — özgüllük, kaskad
katmanı ya da kaynak sırası. Computed sekmesi ise en kestirme yoldur: özelliğin son
değerini ve hangi dosyanın hangi satırından geldiğini doğrudan söyler. Ek araçlar:
fareyle kaybolan durumlar için :hov ile durumu zorla; stil dosyasının güncel
olduğundan emin olmak için Disable cache ile yenile; sınıfı kimin eklediğini
merak ediyorsan ögeye "attribute modifications" DOM kesme noktası koy.
Network panelinde bir isteği incelerken nelere bakarsın?
Sırasıyla: (1) Durum kodu — 2xx/3xx/4xx/5xx hangi tarafın
sorunu olduğunu söyler; 17. derste gördüğümüz gibi fetch 404'te hata
fırlatmaz, dolayısıyla kod "başarılı" görünse de burada 404 durabilir. (2) Headers —
istek başlıkları (Authorization, Content-Type,
Cookie) ve yanıt başlıkları (Cache-Control, ETag,
Vary, CORS başlıkları). (3) Payload — gerçekte ne gönderildi;
form alanlarının eksik gitmesi gibi hataların tek doğru teşhis yeri burasıdır.
(4) Preview/Response — sunucunun döndürdüğü gövde ve hata sözleşmesi.
(5) Timing — DNS, bağlantı, SSL, TTFB ve indirme dökümü; yavaşlığın sunucuda
mı ağda mı olduğunu söyler. (6) Initiator — bu isteği hangi kod satırı başlattı;
kaynağı bilinmeyen istekleri bulmanın yolu. Ayrıca: Disable cache ile önbelleği
devre dışı bırakmak, Slow 4G ile kısıtlamak, Copy as cURL ile isteği
terminale taşımak ve Block request URL ile bir kaynağı engelleyip etkisini
ölçmek. CORS sorunlarında tipik görüntü şudur: konsolda hata vardır ama Network'te istek
başarılı görünür ve basit olmayan isteklerde ayrı bir OPTIONS satırı
bulunur.
Hata ayıklarken console.log yerine kesme noktası kullanmanın avantajları nelerdir?
console.log yalnız yazdığın değişkeni ve
koyduğun satırı gösterir; her yeni soru için kodu değiştirip sayfayı yenilemek
gerekir. Kesme noktası kodu durdurur ve o an her şeye erişirsin: Scope
bölmesinde yerel, kapanış ve küresel değişkenlerin tamamı (14. derste kapanışın içindekileri
burada görmüştük), Call Stack'te buraya nereden gelindiği, Watch ile
istediğin ifadeyi anında değerlendirme ve konsoldan o bağlamda kod çalıştırma imkânı.
Üstelik kodu değiştirmeden çalışır — üretim kodunda günlük satırı bırakma riski
olmaz. Özellikle güçlü türleri vardır: koşullu kesme noktası (döngünün 400. turunda
dur), günlük noktası (durmadan değer yazdır — console.log'un kodsuz
hâli), XHR/fetch kesme noktası, olay dinleyicisi kesme noktası (hangi kodun
çalıştığı bilinmiyorsa) ve DOM kesme noktası (bu sınıfı kim ekliyor). Ayrıca
console.log'un bilinen bir tuzağı vardır: nesneleri canlı referansla
gösterir, satırı açtığında nesnenin o anki hâlini görürsün — yanıltıcıdır. Yine de
console.log'un yeri vardır: hızlı bir doğrulama, üretimde yeniden
oluşturulamayan bir akış ya da zamanlamaya duyarlı bir hata (durdurmak davranışı
değiştirir) için uygundur.
Cihaz emülasyonu gerçek cihaz testinin yerini tutar mı?
Hayır. Emülasyon şunları taklit eder: görünüm alanı boyutu,
cihaz piksel oranı (DPR), dokunma girdisi, kullanıcı aracısı dizesi ve isteğe bağlı olarak
ağ/CPU kısıtlaması. Taklit etmedikleri: gerçek dokunma ve jest davranışı,
yazılım klavyesinin açılınca görünüm alanını kısaltması, mobil tarayıcının adres
çubuğu davranışı (8. derste 100vh tuzağının sebebi), cihazın gerçek işlemci ve
bellek sınırları, pil/termal kısıtlama, ve en önemlisi farklı tarayıcı motorları —
iOS'ta tüm tarayıcılar WebKit kullanır, dolayısıyla Chrome'un mobil emülasyonu iOS
Safari'yi göstermez. Doğru yaklaşım katmanlıdır: geliştirme sırasında emülasyonla hızlı
döngü, ardından kritik akışların gerçek cihazda denenmesi. Gerçek cihazda hata
ayıklamak da mümkündür: Android'i USB ile bağlayıp chrome://inspect
üzerinden, iPhone'u Safari'nin Geliştirici menüsünden uzaktan ayıklarsın. Son olarak
DevTools yalnız senin makinendekini gösterir; kullanıcıda oluşan hataları görmek
için window.onerror/unhandledrejection ile hata toplama ve
gerçek kullanıcı ölçümü (RUM) gerekir.
12Sınav köşesi
Yazılıda nasıl sorulur
(1) Tarayıcı geliştirici araçlarındaki panelleri ve işlevlerini yazınız.
(2) Elements panelinde bir CSS sorununu nasıl teşhis edersiniz?
(3) Network panelinde hangi bilgiler bulunur? (4) Breakpoint nedir, türleri nelerdir?
(5) console nesnesinin metotlarını sayınız.
(6) Source map nedir, ne işe yarar? (7) Lighthouse nedir, hangi kategorileri ölçer?
(8) Cihaz emülasyonu ile gerçek cihaz testi farkı.
(9) Bir sayfanın yavaş açılmasını nasıl analiz edersiniz?
(10) Bellek sızıntısı nasıl tespit edilir? (11) Erişilebilirlik denetimi için hangi
araçlar kullanılır?
Sözlüde nasıl anlatılır — 2 dakikalık taslak
Düzen: (1) Duruş — "hata ayıklamayı tahmin ederek değil ölçerek yaparım; DevTools
benim asıl teşhis aracım." (2) Panel eşlemesi — "stil sorununu Elements'te Styles ve
Computed'dan, veri sorununu Network'te durum kodu, Payload ve Response'tan, takılmayı
Performance kaydından, ölü kodu Coverage'dan bakarım."
(3) Kıdem vuruşu — "kesme noktalarını console.log'a tercih ederim; koşullu
kesme noktası ve günlük noktası kodu hiç değiştirmeden çalışır. Bir sınıfı kimin
eklediğini DOM kesme noktasıyla, hangi kodun tetiklendiğini olay kesme noktasıyla
bulurum." (4) Az bilinen araçlar — "isteği Copy as cURL ile terminale taşırım,
bir kaynağı engelleyip etkisini ölçerim, Local overrides ile erişemediğim bir
dosyada düzeltmeyi denerim; Rendering sekmesinden paint flashing, layout shift ve renk
körlüğü benzetimlerini açarım." (5) Sınır — "emülasyon gerçek cihazın yerini tutmaz:
yazılım klavyesi, adres çubuğu davranışı ve iOS'un WebKit'i taklit edilmez. Ayrıca
DevTools yalnız benim makinemi gösterir; kullanıcıdaki hatalar için hata toplama ve
gerçek kullanıcı ölçümü gerekir."
