DOM
Belge Nesne Modeli
- Okunuşu
- dom
Kısaca
DOM, tarayıcının bir web sayfasını temsil eden ve JavaScript'in okuyup değiştirerek kullanıcının gördüğünü güncelleyebildiği bellek içi nesne ağacıdır.
DOM nedir?
Bir tarayıcı HTML belgesini yüklediğinde, metni Belge Nesne Modeli (Document Object Model) adı verilen bir nesne ağacına ayrıştırır. Her öğe, nitelik ve metin parçası bu ağaçta bir düğüm (node) olur; ebeveyn, çocuk ve kardeş ilişkileri de HTML'deki iç içe geçmeyi yansıtır.
DOM bir veri yapısı olduğu kadar bir API'dir de. JavaScript, düğümleri bulmak için document.querySelector() gibi metotları; metinlerini ya da niteliklerini değiştirmek, öğe eklemek veya kaldırmak ve tıklama ile tuş basma gibi olayları (event) dinlemek için de ilgili API'leri kullanabilir. DOM değiştiğinde tarayıcı ekranı buna göre günceller.
Yardımcı bir benzetme soy ağacıdır: <html> öğesi atadır, <head> ve <body> onun çocuklarıdır, iç içe geçen her öğe de bir torundur. Tek bir düğümü düzenlemek, bütün ağacı yeniden çizmeden tek bir dalı güncellemek gibidir.
DOM, HTML kaynak kodunuzla aynı şey değildir. Kaynak, sunucunun gönderdiği özgün metindir; DOM ise betikler çalıştıktan sonra sayfanın canlı ve güncel durumudur. Tarayıcı geliştirici araçlarının, kaynağı görüntüle'nin (View Source) göstermediği öğeleri gösterebilmesinin nedeni budur. React gibi framework'ler ise gerçek DOM'da gereken en küçük değişiklik kümesini bulmak için bellekteki bir kopya olan sanal DOM'u (virtual DOM) kullanır.
Bir bakışta
Önemli noktalar
- DOM, bir sayfayı düğümlerden oluşan bir ağaç olarak temsil eder.
- JavaScript sayfayı okumak ve değiştirmek için DOM API'lerini kullanır.
- DOM'daki değişiklikler ekrana yansır.
- DOM, özgün HTML metni değil, sayfanın canlı durumudur.
- Sanal DOM bir framework tekniğidir, tarayıcının parçası değildir.
Örnek
// Find the existing <ul id="todo"> element
const list = document.querySelector("#todo");
// Create a new <li> node and set its text
const item = document.createElement("li");
item.textContent = "Buy milk";
// Insert it into the tree; the page updates immediately
list.append(item);Sık sorulan sorular
DOM, JavaScript'in bir parçası mıdır?
Hayır. DOM, tarayıcıların uyguladığı bir web standardıdır; JavaScript ise ona erişmek için en sık kullanılan dildir. Örneğin Node.js gibi tarayıcı dışı ortamlarda, bir kütüphane sağlamadıkça DOM yoktur.
Sanal DOM (virtual DOM) nedir?
Sanal DOM, bazı arayüz framework'lerinin bellekte tuttuğu, sayfa yapısının hafif bir kopyasıdır. Framework eski ve yeni sürümleri karşılaştırır, ardından gerçek DOM'a yalnızca gerekli değişiklikleri uygular.
DOM ile HTML arasındaki fark nedir?
HTML, sunucunun gönderdiği metin biçimindeki işaretlemedir; DOM ise tarayıcının ondan oluşturduğu nesne ağacıdır. Betikler sayfa yüklendikten sonra DOM'u değiştirebileceği için ikisi birbirinden farklı olabilir.
Sık karşılaştırılanlar
İlgili sayfalar
- HTMLWeb Geliştirme, s. 19HTML, başlık, paragraf, bağlantı, görsel ve form gibi öğelerle web sayfalarının yapısını ve içeriğini tanımlayan işaretleme dilidir.
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- CSSWeb Geliştirme, s. 11CSS, HTML içeriğinin ekranda renk, yazı tipi, boşluk, yerleşim ve animasyon gibi yönlerden nasıl görüneceğini belirleyen stil sayfası dilidir.
- SPAWeb Geliştirme, s. 42SPA, tek bir HTML sayfası yükleyip içeriği JavaScript ile güncelleyen ve görünümler arası geçişte sayfayı yeniden yüklemeyen web uygulamasıdır.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- ReactWeb Geliştirme, s. 37React, veri değişince otomatik güncellenen, yeniden kullanılabilir bileşenlerle kullanıcı arayüzü kurmaya yarayan açık kaynaklı JavaScript kütüphanesidir.
- jQueryWeb Geliştirme, s. 26jQuery, öğe seçmeyi, olay yönetimini, animasyonu ve AJAX isteklerini tüm tarayıcılarda çalışan kısa bir sözdizimiyle kolaylaştıran JavaScript kütüphanesidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin