
Document Object Model (DOM), bir belgenin yapısını nesnelerden oluşan bir ağaç olarak temsil eden, web belgeleri için bir programlama arayüzüdür. HTML ve XML içeriğiyle dinamik olarak etkileşime izin vererek web geliştiricilerinin bir web sitesi içeriğini, yapısını ve şeklini anında değiştirmesine olanak tanır.
Peki DOM nedir, ne işe yarar?
DOM (Document Object Model) veya Belge Nesne Modeli, web geliştirmede önemli bir bileşendir. Web sayfalarının bir ağaç olarak yapılandırılmış bir temsilini sağlayan web belgeleri için bir programlama arayüzüdür.
DOM, bir belgenin yapısını düğümlerden oluşan bir ağaç olarak temsil eder; burada her düğüm belgenin bir bölümüne (örneğin, bir öğe, nitelik veya metin) karşılık gelir. Bu model, JavaScript gibi programlama dillerinin web sayfalarının içeriğini, yapısını ve stilini değiştirmesine olanak tanır.
Bu yaklaşım sayesinde web sayfalarının içeriği, yapısı ve düzeni, komut dosyaları ve programlar tarafından dinamik olarak erişilebilir ve güncellenebilir. Web sayfaları ve komut dosyaları arasında bir köprü görevi gören DOM, belge öğelerinin etkileşimini ve işlenmesini kolaylaştırır.
Document Object Model nedir sorusunun cevabını detaylı olarak anlattıktan sonra bir sonraki bölümde Document Object Model’in çalışma mantığı ile ilgili detaylara değineceğiz.
DOM, dinamik web uygulamaları için olmazsa olmazdır. Web sayfalarının içeriği, yapıyı ve stili, sayfayı yeniden yüklemeye gerek kalmadan dinamik olarak değiştirmesini sağlar. Bu etkileşim, modern web uygulamalarının merkezinde yer alır ve DOM'u front-end web geliştirmenin temel taşı haline getirir.
DOM, web sayfalarındaki içerik ve yapıyı dinamik olarak değiştirmek için kullanılır. JavaScript aracılığıyla HTML öğeleri eklemek, kaldırmak, güncellemek ve stillerini değiştirmek mümkündür. Ayrıca, kullanıcı etkileşimlerine yanıt vermek için olay dinleyicileri eklenerek sayfanın daha interaktif hale gelmesi sağlanır. Bu sayede DOM, modern web uygulamalarında temel bir rol oynar.
DOM, bir web sayfasının yapılandırılmış temsili olarak tarayıcı tarafından oluşturulan bir ağaç yapısıdır. Bir HTML veya XML belgesi yüklendiğinde, tarayıcı bu belgeyi analiz eder ve aşağıdaki adımları takip ederek DOM'u oluşturur:
Bu süreç sayesinde web sayfaları dinamik olarak yönetilebilir ve JavaScript kullanılarak DOM üzerinde değişiklikler yapılabilir.
HTML, web sayfasının temel yapısını oluştururken, CSS stil ve düzenlemeleri uygular ve JavaScript ise dinamik değişiklikler yaparak DOM’u etkileşimli hale getirir. Bu üç teknoloji birlikte çalışarak kullanıcı deneyimini zenginleştirir ve sayfanın içeriğinin anlık olarak güncellenmesini sağlar.
DOM, HTML veya XML belgelerinden oluşturulur. Bir HTML belgesinde, <div>, <span> ve <a> gibi etiketler öğe düğümleri haline gelirken, bu etiketler içindeki metin, metin düğümleri haline gelir. Sınıf ve kimlik gibi nitelikler, nitelik düğümlerine dönüşür.
JavaScript, DOM ile etkileşim kurmak için kullanılan en yaygın dildir. React.js, Vue.js ve Angular gibi kitaplıklar ve çerçeveler, DOM'u işlemek için daha soyut yöntemler sunarak geliştirme süreçlerini kolaylaştırır.
DOM, belgeyi biçimlendirmek için CSS ile arayüz oluşturur. Geliştiriciler, DOM öğelerinin stil özelliğini değiştirerek veya öğelere uygulanan CSS sınıflarını değiştirerek stilleri dinamik olarak güncelleyebilir.
Virtual DOM (Sanal DOM), React gibi modern framework'lerde kullanılan ve gerçek DOM'un güncellenme performansını önemli ölçüde artıran çok önemli bir kavramdır. Bir React bileşeninde durum değişikliği meydana geldiğinde, React gerçek DOM'u doğrudan güncellemek yerine Virtual DOM olarak bilinen DOM'un hafif bir kopyasını oluşturur.
React daha sonra gerçek DOM'a uygulanması gereken değişiklikleri belirlemek için güncellenmiş Virtual DOM'u bir öncekiyle karşılaştırır. Değişiklikler belirlendikten sonra React gerçek DOM'u optimize edilmiş ve verimli bir şekilde günceller, böylece gereksiz yeniden oluşturmaları azaltır ve genel performansı artırır.
DOM ile Sanal DOM arasındaki temel fark, DOM'un bir web sayfasının gerçek HTML yapısını temsil etmesi, Sanal DOM'un ise React tarafından gerçek DOM'u güncellerken performansı artırmak için kullanılan DOM'un hafif bir kopyası olmasıdır.
DOM |
Virtual DOM |
Bir web sayfasının temel HTML kodunun basitleştirilmiş bir versiyonunu temsil eder. |
HTML Belge Nesne Modeli'nin (DOM) basitleştirilmiş bir gösterimi olarak hizmet eder. |
Ekranda görüntülenen öğeleri değiştirme yeteneğine sahiptir. |
Ekranda görüntülenen öğeleri değiştirme yeteneğinden yoksundur. |
Herhangi bir değişiklik tüm DOM ağacının güncellenmesiyle sonuçlanır. |
Herhangi bir değişiklik yalnızca ağaçtaki ilgili düğümü günceller. |
Güncelleme yavaş ve verimsiz bir süreçtir. |
Güncelleme süreci hızlı ve etkilidir. |
JSX kullanarak bir React bileşeni yazdığınızda, bu JSX tarayıcı tarafından doğrudan anlaşılmaz. Bunun yerine, transpilasyon adı verilen bir işlemle React öğelerine dönüştürülür. Bu React öğeleri daha sonra sanal DOM'u oluşturur. Sanal DOM ayarlandıktan sonra React bunu gerçek DOM'a işler ve bileşenlerinin web sayfasında canlanmasını sağlar.
React bileşenleri genellikle kullanıcı girdileri veya bir API'den alınan yeni bilgiler gibi zamanla değişebilen verilere güvenir. Bu tür veriler değiştiğinde, ilişkili React öğelerinin güncellenmesi gerekir. Gerçek DOM'u hemen değiştirmek yerine React yeni bir sanal DOM ağacı oluşturur. Ardından, bu yeni sanal DOM'u "Uzlaştırma" adı verilen bir işlemle geçerli olanla karşılaştırır.
DOM optimizasyonu, web sitesi performansını ve genel kullanıcı deneyimini geliştirmek için kritik öneme sahiptir. Çünkü aşırı sayıda öğe ve iç içe geçmiş düğümlerle karakterize edilen bir DOM, tarayıcıdan daha fazla işlem gücü talep eder. Bu, daha yavaş sayfa yükleme süreleri ve hem kullanıcı memnuniyetini hem de SEO sıralamalarını olumsuz etkiler. Ayrıca, arama motorları hızlı ve verimli web sitelerine öncelik verir, bu da akıcı bir DOM'un sitenizin görünürlüğünü ve sıralamasını önemli ölçüde artırabileceği anlamına gelir.
DOM boyutunu küçültmek için en önemli stratejilerden biri, web sayfalarınızın HTML yapısını basitleştirmektir. Bu, gereksiz öğeleri ve etiketleri kaldırarak yapılabilir. Bunu yaparak, DOM'un genel boyutunu azaltabilirsiniz. Bu, web sitelerinin daha iyi performans göstermesine ve daha hızlı yüklenmesine yol açabilir.
Bir diğer yaklaşım ise, içeriğin anlamını ve yapısını iletmek için uygun etiketleri kullanmaya odaklanan semantik HTML kullanmaktır.
<header>, <article> ve <footer> gibi etiketler semantik HTML etiketleridir. İçerdikleri içeriğin rolünü belirtirler. <div> ve <b> gibi etiketler semantik olmayan HTML öğelerine örnektir.
Semantik HTML, basitleştirilmiş bir web sayfası oluşturmaya yardımcı olabilecek düzenli bir DOM oluşturmaya yardımcı olur.
Kullanılmayan CSS de DOM'unuzun boyutuna katkıda bulunabilir. Bu yüzden DOM boyutunuzu azaltmak için web sitenizden kullanılmayan tüm CSS'leri kaldırmanız gerekir. Web sitenizden kullanılmayan CSS'leri kaldırmak için WP Rocket veya Perfmatters gibi araçları kullanabilirsiniz.
HTML şablonları, tekrarlayan öğeleri dinamik olarak yükleyerek DOM yapısını sadeleştirir. Gereksiz kod tekrarlarını ortadan kaldırarak sayfanın daha hızlı yüklenmesine yardımcı olur. Özellikle büyük ve karmaşık web sitelerinde bileşen bazlı bir yapı oluşturarak DOM’un büyümesini önler. Bu yöntem, hem kodun okunabilirliğini artırır hem de performansı iyileştirir.
WordPress kullanıcıları için DOM boyutunu yönetmek, tema ve eklenti seçimlerine titizlikle dikkat etmenin yanı sıra özenli içerik optimizasyonu gerektirir. Önceden tasarlanmış birçok tema ve eklenti, DOM’un aşırı yüklenmesine katkıda bulunan ve böylece web sitesi yükleme süresini optimize etme yeteneğinizi etkileyen gereksiz öğeler ekleme eğilimindedir. Hafif ve iyi kodlanmış temaları ve eklentileri tercih ederek DOM'un karmaşıklığını en aza indirebilirsiniz. Ayrıca, sayfalarınızdaki eski veya gereksiz öğeleri, komut dosyalarını ve stil sayfalarını temizlemek DOM boyutunu daha da küçültecektir.