Sanal DOM, gerçek DOM'ye yerleştirilmeden önce yerel olarak muhafaza edilen/önbelleğe alınan DOM'ın hafif bir kopyasıdır. İstediğimiz gibi değiştirebilir ve gerçek DOM ağacımıza kaydedebiliriz. Değişiklikleri ileri geri ve diğer kullanım durumlarını güncellemek için verimli farklı algoritmalar kullanır.
Bu, pahalı bir işlem olduğundan DOM ile doğrudan manipülasyondan kaçınmak için yapılır.
Ayrıca, DOM'a eklenecek sanal ağaç düğüm nesneleri oluşturan JavaScript'te kullanılabilen document.createDocumentFragment() yöntemine sahibiz.
Herhangi bir durum veya çift yönlü bağlanmada gözlemlenmesi gereken bir görünüm/bileşenim yoksa (örneğin, yalnızca şablona geçirilen seçenekleri kullanarak ve DOM'daki olayları işlemekle), Virtual DOM'ın gerçekten bir fark yaratacağını bilmek isterim. böyle senaryolarda?
Ya da tek yapması gereken, yalnızca oluşturma ve durum gözlemleme olmamasıdır, createDocumentFragment() kadar iyidir.Sanal DOM uygulaması, herhangi bir durum gözlenmezse, createDocumentFragment() öğesinden farklı mıdır?
cevap
En basit cevap, NodeJS'nin document.createDocumentFragment
, ne de document.createElement
içermemesidir veya böyle bir şeydir.
VirtualDOM noktası DOM daha sonra enjekte edilecek sistemlere sadece büyük ölçekli düzenlemeler için izin vermek değil, aynı zamanda DOM sadece düz var olmayan bir ortamda herhangi düzenlemeler için izin vermek.
Bu, DocumentFragment
s ve VirtualDOM uygulamasının pratik uygulaması arasındaki en büyük farktır. Belirli sanallaştırma sanallaştırması örneklerinde belirli yarar kütüphaneleri (React, demek), bu şeylerle başa çıkmayı, parçalara ve çocuklara elle yerleştirmeye kıyasla oldukça basit hale getirmektedir.
Burada NodeJS ile ilgili hiçbir şey yoktur. Parça oluşturmak için javascript'inizde "document.createDocumentFragment" öğesini kullanabilir ve ardından DOM'a bütün ağacı ekleyebilirsiniz. Ayrıca, aynı soruyu düzenledim. – vivekj011
Peki, bu durumda, hangi kütüphaneleri kullandığınıza ve ne işe yaradıklarına bakacaksınız. Çünkü her şeyi el ile yapıyorsanız, yardımcı fonksiyonlar olmadan, ikisi arasında geçiş yapmak size ekstra bir bellek kullanımı için pratikte hiçbir fayda sunmayacaktır ... VirtualDOM'in amacı ... . ... daha iyi ya da daha hızlı, ya da daha büyülü ya da daha kolay çalışmak için değil. VirtualDOM'i (ya teknik ya da gerçek sanal-dom kütüphanesi) kullanan kütüphaneler, tüm bu şeyleri ve daha fazlasını yapabilir. El ile yapmaya gerek yok ... – Norguard
Ayrıca, HTML testlerinin oluşturulmasında ve ayrılmasında zaman harcamak istemediğiniz, özellikle DOM erişimine sahip olmak için, basit testler için entegrasyon testinde faydalar da vardır. Bir elementin/özniteliğin değerini kontrol etmek (örneğin, Mocha'yı kullanarak CI kurulumunu çalıştırmak gibi). Fakat yine de, eğer test bir fayda olarak sayılmazsa, o zaman hala Elms ve Tepkiler ve benzerleri için geçerlidir. – Norguard
- 1. DOM uygulaması?
- 2. Bir DOM öğesinden sonra seçimi taşı
- 3. Ruby'de "==" uygulaması yapılmalı mıdır?
- 4. k-Javascript'te kümeleme uygulaması mıdır?
- 5. Tuvaletten "DOM Özel Durum 18"
- 6. Spring ACL iyi bir ACL uygulaması mıdır?
- 7. Git'deki birleşmeler Mercurial'dan farklı mıdır?
- 8. MongoDB'deki Array öğesinden farklı değerler seçme
- 9. Python'da dersleri farklı dosyalara yerleştirmek pahalı mıdır?
- 10. HawtDispatch, Java'nın Yürütücülerinden farklı mıdır? (ve netty)
- 11. Time.now & Created_at farklı mıdır? Ruby on Rails
- 12. yakalanmamış hata NOT_FOUND_ERR DOM Özel Durum 8
- 13. PhoneGap iOS + DOM Özel Durum 18
- 14. jQuery.each uygulaması, native Array.forEach öğesinden farklıdır
- 15. bir .NET uygulaması için meclislerinin maksimum sayıda var mıdır?
- 16. Azure DocumentDB belge sınıflarım Microsoft.Azure.Documents.Document öğesinden devralmalı mıdır?
- 17. Her bir liste görünümü öğesinden farklı bir tercih etkinliği açın
- 18. Haskell yerel olarak derleniyorsa, EC2 Ubuntu 12.04 farklı mıdır?
- 19. Azure Web Sitelerinde ağ bant genişliği Virtual Machines'ten farklı mıdır?
- 20. Python'da 'c'de değil', 'e'de değil' den farklı mıdır?
- 21. kullanarak herhangi bir performans avantajları `ulaşılamaz!` Panik `vs var mıdır!`?
- 22. F # (veya C#) içindeki herhangi bir R-Tree uygulaması?
- 23. C++, sanal bir işlevi geçersiz kılarsa, otomatik olarak sanal bir işlev midir?
- 24. Öğe dom öğesinden eklenen/kaldırılan öğe nasıl algılanır?
- 25. Jquery Prepend: 'createDocumentFragment' yönteminin çağrısı alınamıyor
- 26. Herhangi bir Java hash ağacı uygulaması mı?
- 27. Herhangi bir DOM öğesi için Javascript sözcük sayısı
- 28. TCustomFrame öğesinden devralınan bir bileşen neden TFrame'den farklı görünüyor?
- 29. XMLHttpRequest responseType = "json" hatası veriyor SYNTAX_ERR: DOM Özel Durum 12
- 30. Eğer her zaman bir share_ptr içinde saklarsanız, Arayüzünüz için gerekli sanal bir yıkıcı mıdır?
Yanıt, ** senaryounuza tamamen ** bağlıdır. Senaryoda, bir doc parçasını kullanmanın daha tipik DOM manipülasyonu ve modifikasyonundan daha iyi olacağını açıkladığına emin değilim. Aklında olan senaryonu test etmelisin. Tepki, bir Sanal DOM uygulamasından daha fazlasıdır ve bileşen soyutlamalarını daha fazlasını sağlar ... bunlar değer olabilir. – WiredPrairie