2015-06-09 2 views
7

Virtual DOM ist eine leichte Kopie von DOM, die lokal verwaltet/zwischengespeichert wird, bevor sie in das eigentliche DOM eingefügt wird. Wir können es so ändern, wie wir es wollen und dann in unserem echten DOM-Baum speichern. Es verwendet effiziente diff-Algorithmen, um Änderungen hin und her und andere Anwendungsfälle zu aktualisieren.
Dies alles ist getan, um direkte Manipulation mit DOM zu vermeiden, da es eine teure Operation ist.
Wir haben document.createDocumentFragment() Methode, die in JavaScript verwendet werden kann, die auch imaginäre Baumknotenobjekte zum Einfügen in DOM erstellt.
Ich würde gerne wissen, wenn ich nicht View/Komponente, die auf jeden Zustand oder bidirektionale Bindung beachten müssen (z. B. nur Vorlage durch übergebene Optionen und Ereignisse auf DOM behandeln), wird Virtual DOM wirklich einen Unterschied machen in solchen Szenarien?
Oder es ist so gut wie createDocumentFragment(), wenn alles, was es zu tun hat nur Rendering und keine Beobachtung auf Zustand ist.Wie unterscheidet sich die virtuelle DOM-Implementierung von createDocumentFragment(), wenn kein Status beobachtet wird?

+1

Die Antwort hängt ** ganz ** von Ihrem Szenario ab. Ich bin nicht sicher, dass in dem Szenario, das Sie beschreiben, die Verwendung eines Dokumentfragments besser wäre als nur typische DOM-Manipulation und Modifikation. Sie müssen das Szenario, das Sie im Sinn haben, testen. Reagieren ist mehr als nur eine virtuelle DOM-Implementierung und bietet Komponenten-Abstraktionen und mehr ... diese können wertvoll sein. – WiredPrairie

Antwort

3

Die einfachste Antwort ist, dass NodeJS weder document.createDocumentFragment, noch document.createElement oder dergleichen hat (/ wird). Der Punkt von VirtualDOM besteht darin, nicht nur groß angelegte Änderungen an Systemen zuzulassen, auf denen später DOM injiziert wird, sondern auch beliebige Bearbeitungen in einer Umgebung, in der das DOM gerade nicht existiert.

Dies ist der größte Unterschied zwischen der praktischen Anwendung von DocumentFragment s und VirtualDOM.

Zusätzliche Vorteile in Bezug auf bestimmte Instanzen der DOM-Virtualisierung wäre, dass bestimmte Ansicht Bibliotheken (Reagieren, sagen) machen den Umgang mit diesen Dingen ziemlich einfach, im Vergleich zu manuellen Einfügen in Fragmente und ihre Kinder.

+0

Hier ist nichts mit NodeJS verbunden. Sie können "document.createDocumentFragment" in Ihrem JavaScript verwenden, um Fragmente zu erstellen und dann den gesamten Baum zum DOM hinzuzufügen. Außerdem habe ich die Frage für dasselbe bearbeitet. – vivekj011

+0

Nun, in diesem Fall kommt es einfach darauf an, welche Bibliotheken Sie benutzen und was * sie * benutzen. Denn wenn Sie alles von Hand erledigen, ohne auch nur die Hilfsfunktionen zu verwenden, bietet Ihnen der Wechsel zwischen den beiden praktisch keinen Vorteil mehr für zusätzlichen Speicherverbrauch ... Der Punkt von VirtualDOM ist, ... das DOM zu vereinheitlichen . ... nicht, um es besser oder schneller zu machen, oder magischer oder einfacher zu arbeiten. Bibliotheken, die VirtualDOM (entweder die Technik oder die tatsächliche Virtual-Dom-Bibliothek) verwenden, können all diese Dinge und mehr tun. Wechseln Sie nicht von Hand ... – Norguard

+0

Es gibt auch Vorteile im Integrationstest, für einfache Tests, bei denen Sie nicht die Zeit für den Aufbau und das Abreißen von HTML-Seiten aufwenden müssen, insbesondere für den DOM-Zugriff. Überprüfen Sie den Wert eines Elements/Attributs (z. B. das Ausführen eines CI-Setups mit Mocha). Aber auch wenn das Testen nicht als Vorteil zählt, liegt es immer noch an den Elms und den Reacts und dergleichen. – Norguard

Verwandte Themen