2015-06-09 6 views
7

Virtual DOM è una copia leggera del DOM, mantenuta/memorizzata nella cache locale prima di inserirla nel DOM reale. Possiamo cambiarlo come vogliamo e quindi salvare nel nostro vero albero DOM. Utilizza algoritmi diff efficienti per aggiornare i cambiamenti avanti e indietro e altri casi d'uso.
Tutto ciò per evitare una manipolazione diretta con DOM in quanto è un'operazione costosa.
Abbiamo il metodo document.createDocumentFragment() che può essere utilizzato in JavaScript, che crea anche oggetti nodo di oggetti immaginari da inserire nel DOM.
Mi piacerebbe sapere, se non ho la vista/componente che è necessario osservare su qualsiasi stato o associazione bidirezionale (ad esempio, solo il modello di rendering con le opzioni passate e gestire gli eventi su DOM), Virtual DOM farà davvero la differenza in questi scenari?
Oppure è buono come createDocumentFragment() se tutto ciò che deve fare è solo il rendering e nessuna osservazione sullo stato.In che modo l'implementazione del DOM virtuale è diversa da createDocumentFragment() se non viene osservato nessuno stato?

+1

La risposta dipende ** interamente ** dal proprio scenario. Non sono sicuro che nello scenario si descriva che l'utilizzo di un frammento di un documento sarebbe migliore della semplice manipolazione e modifica DOM tipica. Devi testare lo scenario che hai in mente. React è molto più di un'implementazione di Virtual DOM e fornisce astrazioni di componenti più ... quelle possono essere di valore. – WiredPrairie

risposta

3

La risposta più semplice è che NodeJS non ha (o avrà) document.createDocumentFragment, né document.createElement o simili.

Il punto di VirtualDOM è quello di consentire non solo modifiche su larga scala a sistemi in cui viene eseguita l'iniezione DOM, ma anche per consentire di eventuali modifiche in un ambiente in cui il DOM semplicemente non esiste.

Questa è la più grande differenza tra l'applicazione pratica di DocumentFragment se VirtualDOM.

I benefici aggiunti in termini di istanze specifiche della virtualizzazione DOM sarebbero che determinate librerie di viste (React, ad esempio) rendono abbastanza semplice la gestione di queste cose rispetto all'inserimento manuale in frammenti e ai relativi figli.

+0

Non c'è nulla di correlato a NodeJS qui. Puoi usare "document.createDocumentFragment" nel tuo javascript per creare frammenti e quindi aggiungere l'intero albero al DOM. Inoltre, ho modificato la domanda per lo stesso. – vivekj011

+0

Beh, in questo caso si tratta semplicemente di quali librerie si utilizzano e di cosa * loro * usano. Perché se lo fai tutto a mano, senza le funzioni di aiuto, il passaggio tra i due non ti offrirà praticamente alcun vantaggio, per l'utilizzo di memoria extra ... Il punto di VirtualDOM è ... Vritualizzare il DOM . ... non per renderlo migliore o più veloce, o più magico o ancora più facile da lavorare. Le librerie che utilizzano VirtualDOM (sia la tecnica che l'effettiva libreria virtual-dom) potrebbero fare tutte queste cose e molto altro. Non passare a farlo a mano ... – Norguard

+0

Ci sono anche vantaggi nel test di integrazione, per test semplici, in cui non si vuole perdere tempo a costruire e abbattere pagine HTML, in particolare per avere accesso DOM, per controllare il valore di un elemento/attributo (come l'esecuzione di una configurazione di CI usando Mocha). Ma di nuovo, se anche il test non conta come un vantaggio, allora è ancora giù per gli Elms e per i Reacts e simili. – Norguard

Problemi correlati