Anuj Kumar
Anuj Kumar

Reputation: 102

How Virtual DOM works in React or Vue

I m a student and I m trying to create own Virtual DOM for my college project ( It will not have any advanced feature like props or events, I will keep it simple ) in JavaScript like other famous frameworks React, Vue and other.

I just want to know that when we have multiple file of code( code splitting ). If I make a change in any deep child than do I need to compare complete virtual DOM (including all child and parent element) or I just need to compare only that child elements.

If I have to compare complete new virtual DOM ( including all children ) with previous Virtual DOM. Then Why should I care re-rendering in React or Vue ( because any changes in child will force the framework to compare complete Virtual DOM )

Upvotes: 1

Views: 1535

Answers (2)

Alpesh Patil
Alpesh Patil

Reputation: 1936

For Vue, The working of virtual DOM differs in vue2 and vue3.

The way vue3 does it, is,

  1. By parsing the HTML template or render function from the component files and converting it to a Virtual Node representation.
  2. While doing the parsing, it records the nodes that have a dependency on dynamic data.
  3. Something like below
dynamicData = {
    data1: [ effect1, effect2, ... ],
    data2: [ effect4, effect5, ... ],
    ... }
  1. Effects are functions that define computations required to resolve certain data values.
  2. Effects also include render function for the Virtual nodes
  3. Render functions smartly converts virtual nodes to DOM elements
  4. Now whenever data1 changes Vue3 re-executes the corresponding effects and triggers update for subsequent data changes.

References:

  1. Vue3 Reactivity
  2. Vnode Transformation

Upvotes: 1

Sudhanshu Kumar
Sudhanshu Kumar

Reputation: 2044

Answer to your last point as I infer from my experience of React is that comparing Virtual DOM's in Javascript is the thing that helps react know what things it has to re-render on the actual DOM, So the "re-rendering" is the hard part on which the performance of the APP takes the hit. Hopefully, this would help.

Upvotes: 0

Related Questions