Bölüm 7 / 33
Tarayıcı ve JavaScript
Tarayıcının çalışma modeli, JavaScript dili, DOM etkileşimi ve modern frontend uygulamalarında karşılaşılan kavramlar.
8 canlı örnek — seçerek incele
İlgili kavramlar: Tabs
Tabs
HTML, CSS ve JavaScript'i yorumlayarak web sayfalarını çalıştıran istemci uygulaması.
Tarayıcının sayfa yükleme ve kullanıcı arayüzünü yöneten ana motoru.
HTML ve CSS'i ekranda piksellere dönüştüren tarayıcı bileşeni.
JavaScript kodunu ayrıştıran, optimize eden ve çalıştıran motor.
- V8O
Chrome ve Node.js tarafından kullanılan JavaScript motoru.
HTML elemanlarının ebeveyn-çocuk ilişkileriyle oluşturduğu nesne ağacı.
CSS kurallarının tarayıcı tarafından nesne ağacı olarak temsil edilmesi.
Görünür DOM düğümleri ile uygulanmış stillerin birleşiminden oluşan çizim ağacı.
Elemanların ekrandaki boyut ve konumlarının hesaplanması.
Metin, renk, border ve görsellerin katmanlara çizilmesi.
Çizilmiş katmanların GPU yardımıyla son ekranda birleştirilmesi.
HTML alımından sayfanın ilk kez çizilmesine kadar geçen kritik işlem zinciri.
DOM, network, console, storage ve performans inceleme araçları.
Canlı DOM ve CSS kurallarını inceleme bölümü.
Sayfanın yaptığı istekleri, sürelerini ve boyutlarını gösteren bölüm.
JavaScript çıktısı, hata ve komutlarını gösteren geliştirici aracı.
Kaynak dosya, breakpoint ve debugger işlemlerinin yapıldığı bölüm.
Cookie, localStorage, service worker ve cache verilerini inceleme alanı.
Main thread, rendering ve kullanıcı etkileşimi performansını analiz eder.
Heap snapshot ve bellek sızıntısı incelemelerini yapar.
Web tarayıcılarında ve sunucuda çalışan dinamik programlama dili.
JavaScript dilinin standartlaştırılmış teknik şartnamesi.
- letT
Blok kapsamlı ve yeniden atanabilir değişken tanımı.
Blok kapsamlı ve yeniden atanamayan değişken bağlantısı.
- varO
Fonksiyon kapsamlı eski değişken tanımlama biçimi.
JavaScript'te tam ve ondalıklı sayıları temsil eden temel tür.
Metin verisini temsil eden temel tür.
true veya false mantıksal değerini temsil eder.
- nullT
Bir değerin bilinçli olarak boş olduğunu gösterir.
Bir değişkene henüz değer atanmadığını veya alanın bulunmadığını gösterir.
Benzersiz anahtar oluşturmak için kullanılan primitive tür.
Number sınırını aşan büyük tam sayıları temsil eder.
Anahtar-değer alanları tutan referans türü.
Sıralı değer koleksiyonu.
Çağrılabilir kod nesnesi.
Kısa fonksiyon sözdizimi ve lexical this davranışı sunar.
Başka bir fonksiyona daha sonra çağrılması için verilen fonksiyon.
Fonksiyon alan veya fonksiyon döndüren fonksiyon.
Backtick ile yazılan, değişken gömme ve çok satırlı metin destekleyen string.
Array veya object alanlarını kısa sözdizimiyle değişkenlere ayırma.
Bir koleksiyonun elemanlarını başka yapı içine yayma.
Fonksiyona gelen fazla argümanları array olarak toplama.
Ara değer null/undefined olduğunda hata vermeden erişimi durdurma.
Yalnızca null veya undefined değerinde varsayılan değer kullanma.
Tür dönüşümü yapmadan değer ve tür karşılaştıran === operatörü.
Boolean olmayan değerlerin koşullarda doğru veya yanlış kabul edilen karşılığı.
JavaScript'in işlemler sırasında otomatik tür dönüşümü yapması.
JavaScript nesnelerinin özellik ve metot miras aldığı nesne.
Bir özellik bulunana kadar prototiplerin sırayla aranması.
Prototype tabanlı nesne modelini sınıf sözdizimiyle ifade etme.
- thisO
Fonksiyonun nasıl çağrıldığına göre mevcut bağlamı temsil eden değer.
- bindO
Fonksiyonun this bağlamını ve başlangıç argümanlarını sabitleme.
Fonksiyonu seçilen this bağlamıyla doğrudan çağırma.
Tıklama, giriş, yükleme veya ağ sonucu gibi gerçekleşen olay.
Belirli olay gerçekleştiğinde çalışacak fonksiyon.
Olay hedefi, türü ve ek bilgilerini taşıyan nesne.
Olayın hedef elemandan ebeveynlere doğru yayılması.
Olayın kökten hedef elemana doğru yakalama aşamasında ilerlemesi.
Çok sayıda çocuğun olayını ortak ebeveyn üzerinde yönetme tekniği.
Bir olayın link açma veya form gönderme gibi varsayılan davranışını engeller.
Olayın DOM ağacında yayılmasını durdurur.
CSS selector ile ilk eşleşen DOM elemanını seçer.
CSS selector ile tüm eşleşen DOM elemanlarını seçer.
JavaScript ile yeni DOM elemanı oluşturur.
Bir DOM elemanını başka elemana ekler.
Bir elemanın CSS class'larını ekleme, kaldırma ve değiştirme API'si.
HTML data-* attribute değerlerine JavaScript'ten erişim sağlar.
Form alanlarını HTTP isteğine uygun anahtar-değer yapısında toplar.
Form verisini sunucuya göndermeden tarayıcıda doğrulama.
Gelecekte tamamlanacak asenkron işlemin başarı veya hata sonucunu temsil eder.
Promise işleminin henüz tamamlanmadığı durum.
Promise işleminin başarıyla tamamlandığı durum.
Promise işleminin hatayla tamamlandığı durum.
- thenT
Promise başarılı olduğunda çalışacak işlemi bağlar.
Promise hatasını yakalar.
Promise başarılı veya hatalı olsa da sonunda çalışır.
Her zaman Promise döndüren ve await kullanılabilen fonksiyon.
Promise sonucunu asenkron fonksiyon içinde okunabilir biçimde bekler.
Promise callback'leri gibi yüksek öncelikli asenkron görevlerin kuyruğu.
Timer ve DOM olayları gibi makro görevlerin beklediği kuyruk.
Call stack ve görev kuyrukları arasında asenkron işlerin çalışmasını yöneten mekanizma.
O anda çalışan fonksiyon çağrılarının tutulduğu yığın.
Tamamlanana kadar main thread üzerindeki diğer işleri durduran kod.
I/O beklerken ana yürütme akışının başka işlere devam edebilmesi.
Bir fonksiyonu en az belirtilen gecikmeden sonra kuyruğa alır.
Bir fonksiyonu belirli aralıklarla tekrar kuyruğa alır.
Tarayıcıdan HTTP isteği yapmak için Promise tabanlı API.
- AJAXT
Sayfayı tamamen yenilemeden sunucuyla veri alışverişi yaklaşımı.
JSON metnini JavaScript değerine dönüştürür.
JavaScript değerini JSON metnine dönüştürür.
Fetch gibi asenkron işlemleri iptal etmek için sinyal üretir.
Sık tetiklenen işlemi kullanıcı durduktan sonra bir kez çalıştırma tekniği.
Sık tetiklenen işlemi belirli zaman aralıklarında en fazla bir kez çalıştırma tekniği.
Tarayıcıda kalıcı string anahtar-değer verisi saklar.
Tarayıcı sekmesi açık kaldığı sürece veri saklar.
Tarayıcıda büyük ve yapılandırılmış veriler için asenkron veritabanı.
Ağ isteklerini arka planda yakalayabilen, offline ve push özellikleri sağlayan worker.
CPU ağırlıklı JavaScript'i ayrı thread üzerinde çalıştırır.
- PWAO
Web uygulamasına yüklenebilirlik, offline çalışma ve uygulama benzeri özellikler kazandıran yaklaşım.
PWA adı, ikonları, başlangıç URL'si ve görünüm ayarlarını tanımlayan JSON dosyası.
Kodun import/export ile dosyalar arasında bölünmesini sağlayan yapı.
Standart import ve export sözdizimini kullanan JavaScript modül sistemi.
require ve module.exports kullanan Node.js kökenli modül sistemi.
JavaScript, CSS ve asset dosyalarını dağıtım için birleştirip dönüştüren araç.
- ViteO
Hızlı geliştirme sunucusu ve production build aracı.
Geniş eklenti ekosistemine sahip modül paketleyici.
Modern veya farklı dil sözdizimini hedef JavaScript sürümüne dönüştürür.
JavaScript sözdizimi dönüşümleri yapan yaygın transpiler.
Kullanılmayan export'ları production paketinden çıkarma optimizasyonu.
JavaScript paketini ihtiyaç anında yüklenen daha küçük parçalara ayırma.
Minify edilmiş kodu orijinal kaynak satırlarıyla eşleştiren dosya.
Kodun davranışını koruyup gereksiz karakterleri kaldırarak boyutunu küçültme.
- SPAO
Sayfa geçişlerinin çoğunu istemci tarafında yapan tek sayfa uygulaması.
- MPAT
Her önemli rota için sunucudan yeni HTML belgesi yükleyen çok sayfalı uygulama.
- SSRO
HTML'in ilk olarak sunucuda oluşturulup istemciye gönderilmesi.
- CSRO
Sayfa içeriğinin çoğunlukla tarayıcıdaki JavaScript ile oluşturulması.
- SSGO
Sayfaların build sırasında statik HTML olarak üretilmesi.
Sunucudan gelen HTML'in istemci JavaScript'iyle etkileşimli hâle getirilmesi.
Arayüzün mevcut veri ve görünüm durumu.
Uygulama durumunun nerede tutulup nasıl güncelleneceğini yöneten yaklaşım.
Kendi görünüm ve davranışını kapsayan tekrar kullanılabilir arayüz parçası.
Bir component'e dışarıdan gönderilen veri ve ayarlar.
State değiştiğinde ilgili arayüzün otomatik güncellenmesi.
DOM değişikliklerini hesaplamak için bellekte kullanılan sanal ağaç yaklaşımı.
URL rotalarını istemci tarafındaki sayfa veya component'lerle eşleştirir.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Browser | T | HTML, CSS ve JavaScript'i yorumlayarak web sayfalarını çalıştıran istemci uygulaması. |
| Browser Engine | O | Tarayıcının sayfa yükleme ve kullanıcı arayüzünü yöneten ana motoru. |
| Rendering Engine | O | HTML ve CSS'i ekranda piksellere dönüştüren tarayıcı bileşeni. |
| JavaScript Engine | O | JavaScript kodunu ayrıştıran, optimize eden ve çalıştıran motor. |
| V8 | O | Chrome ve Node.js tarafından kullanılan JavaScript motoru. |
| DOM Tree | T | HTML elemanlarının ebeveyn-çocuk ilişkileriyle oluşturduğu nesne ağacı. |
| CSSOM | O | CSS kurallarının tarayıcı tarafından nesne ağacı olarak temsil edilmesi. |
| Render Tree | O | Görünür DOM düğümleri ile uygulanmış stillerin birleşiminden oluşan çizim ağacı. |
| Layout / Reflow | O | Elemanların ekrandaki boyut ve konumlarının hesaplanması. |
| Paint | O | Metin, renk, border ve görsellerin katmanlara çizilmesi. |
| Composite | İ | Çizilmiş katmanların GPU yardımıyla son ekranda birleştirilmesi. |
| Critical Rendering Path | İ | HTML alımından sayfanın ilk kez çizilmesine kadar geçen kritik işlem zinciri. |
| Developer Tools | T | DOM, network, console, storage ve performans inceleme araçları. |
| Elements Panel | T | Canlı DOM ve CSS kurallarını inceleme bölümü. |
| Network Panel | T | Sayfanın yaptığı istekleri, sürelerini ve boyutlarını gösteren bölüm. |
| Console | T | JavaScript çıktısı, hata ve komutlarını gösteren geliştirici aracı. |
| Sources Panel | O | Kaynak dosya, breakpoint ve debugger işlemlerinin yapıldığı bölüm. |
| Application Panel | O | Cookie, localStorage, service worker ve cache verilerini inceleme alanı. |
| Performance Panel | O | Main thread, rendering ve kullanıcı etkileşimi performansını analiz eder. |
| Memory Panel | İ | Heap snapshot ve bellek sızıntısı incelemelerini yapar. |
| JavaScript | T | Web tarayıcılarında ve sunucuda çalışan dinamik programlama dili. |
| ECMAScript | O | JavaScript dilinin standartlaştırılmış teknik şartnamesi. |
| let | T | Blok kapsamlı ve yeniden atanabilir değişken tanımı. |
| const | T | Blok kapsamlı ve yeniden atanamayan değişken bağlantısı. |
| var | O | Fonksiyon kapsamlı eski değişken tanımlama biçimi. |
| Number | T | JavaScript'te tam ve ondalıklı sayıları temsil eden temel tür. |
| String | T | Metin verisini temsil eden temel tür. |
| Boolean | T | true veya false mantıksal değerini temsil eder. |
| null | T | Bir değerin bilinçli olarak boş olduğunu gösterir. |
| undefined | T | Bir değişkene henüz değer atanmadığını veya alanın bulunmadığını gösterir. |
| Symbol | O | Benzersiz anahtar oluşturmak için kullanılan primitive tür. |
| BigInt | O | Number sınırını aşan büyük tam sayıları temsil eder. |
| Object | T | Anahtar-değer alanları tutan referans türü. |
| Array | T | Sıralı değer koleksiyonu. |
| Function | T | Çağrılabilir kod nesnesi. |
| Arrow Function | T | Kısa fonksiyon sözdizimi ve lexical this davranışı sunar. |
| Callback | T | Başka bir fonksiyona daha sonra çağrılması için verilen fonksiyon. |
| Higher-order Function | O | Fonksiyon alan veya fonksiyon döndüren fonksiyon. |
| Template Literal | T | Backtick ile yazılan, değişken gömme ve çok satırlı metin destekleyen string. |
| Destructuring | T | Array veya object alanlarını kısa sözdizimiyle değişkenlere ayırma. |
| Spread Operator | T | Bir koleksiyonun elemanlarını başka yapı içine yayma. |
| Rest Parameter | T | Fonksiyona gelen fazla argümanları array olarak toplama. |
| Optional Chaining | T | Ara değer null/undefined olduğunda hata vermeden erişimi durdurma. |
| Nullish Coalescing | T | Yalnızca null veya undefined değerinde varsayılan değer kullanma. |
| Strict Equality | T | Tür dönüşümü yapmadan değer ve tür karşılaştıran === operatörü. |
| Truthy / Falsy | T | Boolean olmayan değerlerin koşullarda doğru veya yanlış kabul edilen karşılığı. |
| Type Coercion | O | JavaScript'in işlemler sırasında otomatik tür dönüşümü yapması. |
| Prototype | O | JavaScript nesnelerinin özellik ve metot miras aldığı nesne. |
| Prototype Chain | O | Bir özellik bulunana kadar prototiplerin sırayla aranması. |
| Class Syntax | T | Prototype tabanlı nesne modelini sınıf sözdizimiyle ifade etme. |
| this | O | Fonksiyonun nasıl çağrıldığına göre mevcut bağlamı temsil eden değer. |
| bind | O | Fonksiyonun this bağlamını ve başlangıç argümanlarını sabitleme. |
| call / apply | O | Fonksiyonu seçilen this bağlamıyla doğrudan çağırma. |
| Event | T | Tıklama, giriş, yükleme veya ağ sonucu gibi gerçekleşen olay. |
| Event Listener | T | Belirli olay gerçekleştiğinde çalışacak fonksiyon. |
| Event Object | T | Olay hedefi, türü ve ek bilgilerini taşıyan nesne. |
| Event Bubbling | O | Olayın hedef elemandan ebeveynlere doğru yayılması. |
| Event Capturing | O | Olayın kökten hedef elemana doğru yakalama aşamasında ilerlemesi. |
| Event Delegation | O | Çok sayıda çocuğun olayını ortak ebeveyn üzerinde yönetme tekniği. |
| preventDefault | T | Bir olayın link açma veya form gönderme gibi varsayılan davranışını engeller. |
| stopPropagation | O | Olayın DOM ağacında yayılmasını durdurur. |
| querySelector | T | CSS selector ile ilk eşleşen DOM elemanını seçer. |
| querySelectorAll | T | CSS selector ile tüm eşleşen DOM elemanlarını seçer. |
| createElement | T | JavaScript ile yeni DOM elemanı oluşturur. |
| append / appendChild | T | Bir DOM elemanını başka elemana ekler. |
| classList | T | Bir elemanın CSS class'larını ekleme, kaldırma ve değiştirme API'si. |
| dataset | T | HTML data-* attribute değerlerine JavaScript'ten erişim sağlar. |
| FormData | T | Form alanlarını HTTP isteğine uygun anahtar-değer yapısında toplar. |
| Client-side Validation | T | Form verisini sunucuya göndermeden tarayıcıda doğrulama. |
| Promise | T | Gelecekte tamamlanacak asenkron işlemin başarı veya hata sonucunu temsil eder. |
| Pending | T | Promise işleminin henüz tamamlanmadığı durum. |
| Fulfilled | T | Promise işleminin başarıyla tamamlandığı durum. |
| Rejected | T | Promise işleminin hatayla tamamlandığı durum. |
| then | T | Promise başarılı olduğunda çalışacak işlemi bağlar. |
| catch | T | Promise hatasını yakalar. |
| finally | T | Promise başarılı veya hatalı olsa da sonunda çalışır. |
| async Function | T | Her zaman Promise döndüren ve await kullanılabilen fonksiyon. |
| await | T | Promise sonucunu asenkron fonksiyon içinde okunabilir biçimde bekler. |
| Microtask Queue | İ | Promise callback'leri gibi yüksek öncelikli asenkron görevlerin kuyruğu. |
| Task Queue | İ | Timer ve DOM olayları gibi makro görevlerin beklediği kuyruk. |
| Event Loop | O | Call stack ve görev kuyrukları arasında asenkron işlerin çalışmasını yöneten mekanizma. |
| Call Stack | O | O anda çalışan fonksiyon çağrılarının tutulduğu yığın. |
| Blocking Code | O | Tamamlanana kadar main thread üzerindeki diğer işleri durduran kod. |
| Non-blocking I/O | O | I/O beklerken ana yürütme akışının başka işlere devam edebilmesi. |
| setTimeout | T | Bir fonksiyonu en az belirtilen gecikmeden sonra kuyruğa alır. |
| setInterval | T | Bir fonksiyonu belirli aralıklarla tekrar kuyruğa alır. |
| Fetch API | T | Tarayıcıdan HTTP isteği yapmak için Promise tabanlı API. |
| AJAX | T | Sayfayı tamamen yenilemeden sunucuyla veri alışverişi yaklaşımı. |
| JSON.parse | T | JSON metnini JavaScript değerine dönüştürür. |
| JSON.stringify | T | JavaScript değerini JSON metnine dönüştürür. |
| AbortController | O | Fetch gibi asenkron işlemleri iptal etmek için sinyal üretir. |
| Debounce | O | Sık tetiklenen işlemi kullanıcı durduktan sonra bir kez çalıştırma tekniği. |
| Throttle | O | Sık tetiklenen işlemi belirli zaman aralıklarında en fazla bir kez çalıştırma tekniği. |
| Local Storage | T | Tarayıcıda kalıcı string anahtar-değer verisi saklar. |
| Session Storage | T | Tarayıcı sekmesi açık kaldığı sürece veri saklar. |
| IndexedDB | O | Tarayıcıda büyük ve yapılandırılmış veriler için asenkron veritabanı. |
| Service Worker | İ | Ağ isteklerini arka planda yakalayabilen, offline ve push özellikleri sağlayan worker. |
| Web Worker | O | CPU ağırlıklı JavaScript'i ayrı thread üzerinde çalıştırır. |
| PWA | O | Web uygulamasına yüklenebilirlik, offline çalışma ve uygulama benzeri özellikler kazandıran yaklaşım. |
| Manifest | O | PWA adı, ikonları, başlangıç URL'si ve görünüm ayarlarını tanımlayan JSON dosyası. |
| Module | T | Kodun import/export ile dosyalar arasında bölünmesini sağlayan yapı. |
| ES Module | T | Standart import ve export sözdizimini kullanan JavaScript modül sistemi. |
| CommonJS | O | require ve module.exports kullanan Node.js kökenli modül sistemi. |
| Bundler | O | JavaScript, CSS ve asset dosyalarını dağıtım için birleştirip dönüştüren araç. |
| Vite | O | Hızlı geliştirme sunucusu ve production build aracı. |
| Webpack | O | Geniş eklenti ekosistemine sahip modül paketleyici. |
| Transpiler | O | Modern veya farklı dil sözdizimini hedef JavaScript sürümüne dönüştürür. |
| Babel | O | JavaScript sözdizimi dönüşümleri yapan yaygın transpiler. |
| Tree Shaking | İ | Kullanılmayan export'ları production paketinden çıkarma optimizasyonu. |
| Code Splitting | İ | JavaScript paketini ihtiyaç anında yüklenen daha küçük parçalara ayırma. |
| Source Map | O | Minify edilmiş kodu orijinal kaynak satırlarıyla eşleştiren dosya. |
| Minification | T | Kodun davranışını koruyup gereksiz karakterleri kaldırarak boyutunu küçültme. |
| SPA | O | Sayfa geçişlerinin çoğunu istemci tarafında yapan tek sayfa uygulaması. |
| MPA | T | Her önemli rota için sunucudan yeni HTML belgesi yükleyen çok sayfalı uygulama. |
| SSR | O | HTML'in ilk olarak sunucuda oluşturulup istemciye gönderilmesi. |
| CSR | O | Sayfa içeriğinin çoğunlukla tarayıcıdaki JavaScript ile oluşturulması. |
| SSG | O | Sayfaların build sırasında statik HTML olarak üretilmesi. |
| Hydration | İ | Sunucudan gelen HTML'in istemci JavaScript'iyle etkileşimli hâle getirilmesi. |
| State | T | Arayüzün mevcut veri ve görünüm durumu. |
| State Management | O | Uygulama durumunun nerede tutulup nasıl güncelleneceğini yöneten yaklaşım. |
| Component | T | Kendi görünüm ve davranışını kapsayan tekrar kullanılabilir arayüz parçası. |
| Props | T | Bir component'e dışarıdan gönderilen veri ve ayarlar. |
| Reactive UI | O | State değiştiğinde ilgili arayüzün otomatik güncellenmesi. |
| Virtual DOM | O | DOM değişikliklerini hesaplamak için bellekte kullanılan sanal ağaç yaklaşımı. |
| Router | O | URL rotalarını istemci tarafındaki sayfa veya component'lerle eşleştirir. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Arama input'u için debounce kullanarak API isteği yapan küçük örnek hazırlayın.
- Network ve Performance panelleriyle bir sayfanın yüklenme sırasını inceleyin.
- LocalStorage, cookie ve sessionStorage'ın hangi veriler için uygun veya uygunsuz olduğunu tablo hâlinde karşılaştırın.