đ§ Virtual DOM (āĻāĻžāϰā§āĻā§ā§āĻžāϞ DOM)
Virtual DOM (V-DOM) āĻšāϞ⧠āĻŽā§āϞ DOM-āĻāϰ (Document Object Model) āĻāĻāĻāĻŋ lightweight āĻŦāĻž āĻšāĻžāϞāĻāĻž āĻāĻĒāĻŋ, āϝāĻž JavaScript āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻŋ āĻŽā§āϞ DOM-āĻāϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāϞā§āĻ āĻŦāĻžāϏā§āϤāĻŦā§ āĻāĻāĻŋ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āϰā§āύā§āĻĄāĻžāϰ āĻšā§ āύāĻž, āĻŦāϰāĻ āĻāĻāĻŋ āĻŽā§āĻŽā§āϰāĻŋāϤ⧠āĻĨāĻžāĻā§ āĻāĻŦāĻ UI āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āϏāĻŽā§ intermediate āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
â āĻā§āύ Virtual DOM āĻĻāϰāĻāĻžāϰ?
āĻŽā§āϞ DOM āĻ āύā§āĻ āĻāĻžāϰā§āĨ¤ āϝāĻāύ UI-āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§, āϤāĻāύ āϏāϰāĻžāϏāϰāĻŋ āĻŽā§āϞ DOM āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϞ⧠performance āĻāĻžāϰāĻžāĻĒ āĻšā§, āĻāĻžāϰāĻŖ:
- āĻĒā§āϰ⧠DOM āύāϤā§āύ āĻāϰ⧠āϰā§āύā§āĻĄāĻžāϰ āĻšā§
- DOM tree traversal āĻāϰāϤ⧠āĻšā§
- DOM manipulation āϏā§āϞ⧠āĻšā§
āĻāĻ āϏāĻŽāϏā§āϝāĻžāĻā§āϞā§āϰ āϏāĻŽāĻžāϧāĻžāύā§āĻ Virtual DOM!
đ Virtual DOM āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
React āĻŦāĻž āĻ āύā§āϝ framework-āĻ Virtual DOM āĻāϰ āĻāĻžāĻā§āϰ āϧāĻžāĻĒ:
- UI āϤ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϞā§, āĻĒā§āϰāĻĨāĻŽā§ āϏā§āĻāĻž Virtual DOM-āĻ reflect āĻšā§āĨ¤
- āύāϤā§āύ Virtual DOM āĻāĻŦāĻ āĻĒā§āϰāĻžāϤāύ Virtual DOM āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ (diffing) āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻž āĻšā§āĨ¤
- React āĻāϰ Diffing Algorithm āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§, āĻā§āύ āĻ āĻāĻļ āĻŦāĻĻāϞā§āĻā§āĨ¤
- āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŦāĻĻāϞāĻžāύ⧠āĻ āĻāĻļāĻāĻŋ āĻŽā§āϞ DOM-āĻ update āĻšā§āĨ¤
āĻāĻ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āϰāĻŋā§āĻžāĻā§ āĻŦāϞ⧠ReconciliationāĨ¤
đ§Ē āĻā§āĻ āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻŋ, āĻāĻāĻāĻŋ āĻā§-āĻĄā§ āϞāĻŋāϏā§āĻ āĻāĻā§:
<ul>
<li>āĻā§āĻŽāĻžāύā§</li>
<li>āĻĒā§āĻžāĻļā§āύāĻž</li>
</ul>
āĻāĻāύ āĻāĻĒāύāĻŋ âāĻā§āĻŽāĻžāύā§â āĻāϰ āĻāĻžā§āĻāĻžā§ âāĻŦā§āϝāĻžā§āĻžāĻŽâ āϞāĻŋāĻāϞā§āύāĨ¤
- āĻāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻĒā§āϰāĻĨāĻŽā§ Virtual DOM-āĻ reflect āĻšāĻŦā§āĨ¤
- Virtual DOM detect āĻāϰāĻŦā§ āϝ⧠āĻļā§āϧ⧠āĻĒā§āϰāĻĨāĻŽ
<li>
āĻŦāĻĻāϞā§āĻā§āĨ¤ - āĻļā§āϧ⧠āϏā§āĻ
<li>
āĻā§āϝāĻžāĻāĻāĻŋ āĻŽā§āϞ DOM-āĻ update āĻšāĻŦā§āĨ¤
âĄī¸ āĻā§āĻāĻžāĻŦā§ Performance āĻŦāĻžā§āĻžā§?
- āĻāĻŽ DOM manipulation āĻāϰā§
- Batch āĻāϰ⧠DOM update āĻāϰā§
- Frequent re-render āĻā§āĻžā§
đ Virtual DOM āĻāϰ āϏā§āĻŦāĻŋāϧāĻžāϏāĻŽā§āĻš:
āϏā§āĻŦāĻŋāϧāĻž | āĻŦā§āϝāĻžāĻā§āϝāĻž |
---|---|
Performance āĻŦā§āĻĻā§āϧāĻŋ | āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϝā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§ā§āĻā§ āϏā§āĻāĻžāĻ update āĻšā§ |
Efficient rendering | āĻĒā§āϰ⧠DOM āϰā§āύā§āĻĄāĻžāϰ āύāĻž āĻāϰ⧠āĻ āĻāĻļāĻŦāĻŋāĻļā§āώ āϰā§āύā§āĻĄāĻžāϰ āĻāϰ⧠|
Developer-friendly | UI update āύāĻŋāĻā§ āύāĻž āĻāϰ⧠React āύāĻŋāĻā§āĻ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰ⧠|
Cross-platform compatibility | Browser DOM-āĻāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰāĻļā§āϞāϤāĻž āĻāĻŽāĻžā§ |
đ§ āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āĻŽāϤ⧠āĻāĻĨāĻž:
âVirtual DOM āĻšāĻā§āĻā§ āĻāĻŽāύ āĻāĻāĻāĻž strategy, āϝā§āĻāĻž UI āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§ minimum update with maximum performance āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϰ⧠āĻĢā§āϞā§āĨ¤â