தமிழ்

ரியாக்ட்டின் ரெகன்சிலியேஷன் செயல்முறை, விர்ச்சுவல் DOM டிஃபிங் அல்காரிதம், மேம்படுத்தும் நுட்பங்கள் மற்றும் செயல்திறனில் அதன் தாக்கத்தை ஆராயும் ஒரு விரிவான வழிகாட்டி.

ரியாக்ட் ரெகன்சிலியேஷன்: விர்ச்சுவல் DOM டிஃபிங் அல்காரிதத்தை வெளிப்படுத்துதல்

பயனர் இடைமுகங்களை உருவாக்குவதற்கான ஒரு பிரபலமான ஜாவாஸ்கிரிப்ட் லைப்ரரியான ரியாக்ட், அதன் செயல்திறனுக்கும் திறனுக்கும் ரெகன்சிலியேஷன் எனப்படும் ஒரு செயல்முறைக்கு கடன்பட்டுள்ளது. ரெகன்சிலியேஷனின் மையத்தில் விர்ச்சுவல் DOM டிஃபிங் அல்காரிதம் உள்ளது, இது உண்மையான DOM (Document Object Model)-ஐ மிகவும் திறமையான முறையில் எப்படிப் புதுப்பிப்பது என்பதைத் தீர்மானிக்கும் ஒரு அதிநவீன பொறிமுறையாகும். இந்தக் கட்டுரை, ரியாக்ட்டின் ரெகன்சிலியேஷன் செயல்முறை, விர்ச்சுவல் DOM, டிஃபிங் அல்காரிதம் மற்றும் செயல்திறனை மேம்படுத்துவதற்கான நடைமுறை உத்திகள் ஆகியவற்றை ஆழமாக விளக்குகிறது.

விர்ச்சுவல் DOM என்றால் என்ன?

விர்ச்சுவல் DOM (VDOM) என்பது உண்மையான DOM-இன் ஒரு இலகுவான, நினைவகத்தில் உள்ள பிரதிநிதித்துவம் ஆகும். இதை உண்மையான பயனர் இடைமுகத்தின் ஒரு வரைபடமாக நினையுங்கள். உலாவியின் DOM-ஐ நேரடியாகக் கையாளுவதற்குப் பதிலாக, ரியாக்ட் இந்த விர்ச்சுவல் பிரதிநிதித்துவத்துடன் வேலை செய்கிறது. ஒரு ரியாக்ட் கூறில் தரவு மாறும்போது, ஒரு புதிய விர்ச்சுவல் DOM மரம் உருவாக்கப்படுகிறது. இந்த புதிய மரம் பின்னர் முந்தைய விர்ச்சுவல் DOM மரத்துடன் ஒப்பிடப்படுகிறது.

விர்ச்சுவல் DOM-ஐப் பயன்படுத்துவதன் முக்கிய நன்மைகள்:

ரெகன்சிலியேஷன் செயல்முறை: ரியாக்ட் DOM-ஐ எப்படிப் புதுப்பிக்கிறது

ரெகன்சிலியேஷன் என்பது ரியாக்ட் விர்ச்சுவல் DOM-ஐ உண்மையான DOM-உடன் ஒத்திசைக்கும் செயல்முறையாகும். ஒரு கூறின் நிலை மாறும்போது, ரியாக்ட் பின்வரும் படிகளைச் செய்கிறது:

  1. கூறை மறு-ரெண்டர் செய்தல்: ரியாக்ட் கூறை மறு-ரெண்டர் செய்து ஒரு புதிய விர்ச்சுவல் DOM மரத்தை உருவாக்குகிறது.
  2. புதிய மற்றும் பழைய மரங்களை ஒப்பிடுதல் (டிஃபிங்): ரியாக்ட் புதிய விர்ச்சுவல் DOM மரத்தை முந்தையதுடன் ஒப்பிடுகிறது. இங்குதான் டிஃபிங் அல்காரிதம் செயல்படுகிறது.
  3. குறைந்தபட்ச மாற்றங்களின் தொகுப்பைத் தீர்மானித்தல்: டிஃபிங் அல்காரிதம் உண்மையான DOM-ஐப் புதுப்பிக்கத் தேவையான குறைந்தபட்ச மாற்றங்களின் தொகுப்பை அடையாளம் காண்கிறது.
  4. மாற்றங்களைப் பயன்படுத்துதல் (Committing): ரியாக்ட் அந்த குறிப்பிட்ட மாற்றங்களை மட்டுமே உண்மையான DOM-இல் பயன்படுத்துகிறது.

டிஃபிங் அல்காரிதம்: விதிகளைப் புரிந்துகொள்ளுதல்

டிஃபிங் அல்காரிதம் ரியாக்ட்டின் ரெகன்சிலியேஷன் செயல்முறையின் மையமாகும். இது DOM-ஐப் புதுப்பிப்பதற்கான மிகவும் திறமையான வழியைக் கண்டறிய ஹியூரிஸ்டிக்ஸ் (heuristics) முறைகளைப் பயன்படுத்துகிறது. இது ஒவ்வொரு சூழலிலும் அறுதியான குறைந்தபட்ச செயல்பாடுகளுக்கு உத்தரவாதம் அளிக்கவில்லை என்றாலும், பெரும்பாலான சூழ்நிலைகளில் சிறந்த செயல்திறனை வழங்குகிறது. இந்த அல்காரிதம் பின்வரும் அனுமானங்களின் கீழ் செயல்படுகிறது:

டிஃபிங் அல்காரிதத்தின் விரிவான விளக்கம்

டிஃபிங் அல்காரிதம் எப்படிச் செயல்படுகிறது என்பதை இன்னும் விரிவாகப் பார்ப்போம்:

  1. கூறு வகை ஒப்பீடு: முதலில், ரியாக்ட் இரண்டு மரங்களின் ரூட் கூறுகளை ஒப்பிடுகிறது. அவை வெவ்வேறு வகைகளைக் கொண்டிருந்தால், ரியாக்ட் பழைய மரத்தை அழித்துவிட்டு புதிய மரத்தை புதிதாகக் கட்டமைக்கிறது. இதில் பழைய DOM நோடை அகற்றி புதிய கூறு வகையுடன் ஒரு புதிய DOM நோடை உருவாக்குவது அடங்கும்.
  2. DOM பண்பு புதுப்பிப்புகள்: கூறு வகைகள் ஒரே மாதிரியாக இருந்தால், ரியாக்ட் இரண்டு கூறுகளின் பண்புக்கூறுகளை (props) ஒப்பிடுகிறது. எந்தப் பண்புக்கூறுகள் மாறியுள்ளன என்பதை அது கண்டறிந்து, அந்தப் பண்புக்கூறுகளை மட்டும் உண்மையான DOM கூறில் புதுப்பிக்கிறது. உதாரணமாக, ஒரு <div> கூறின் className ப்ராப் மாறியிருந்தால், ரியாக்ட் தொடர்புடைய DOM நோடில் className பண்புக்கூறைப் புதுப்பிக்கும்.
  3. கூறு புதுப்பிப்புகள்: ரியாக்ட் ஒரு கூறு உறுப்பை எதிர்கொள்ளும்போது, அது அந்தக் கூறை மீண்டும் மீண்டும் புதுப்பிக்கிறது. இது கூறை மறு-ரெண்டர் செய்வதையும், அதன் வெளியீட்டில் டிஃபிங் அல்காரிதத்தைப் பயன்படுத்துவதையும் உள்ளடக்குகிறது.
  4. பட்டியல் டிஃபிங் (Keys பயன்படுத்தி): குழந்தைகளின் பட்டியல்களைத் திறமையாக டிஃபிங் செய்வது செயல்திறனுக்கு முக்கியமானது. ஒரு பட்டியலை ரெண்டர் செய்யும்போது, ஒவ்வொரு குழந்தைக்கும் ஒரு தனித்துவமான key ப்ராப் இருக்க வேண்டும் என்று ரியாக்ட் எதிர்பார்க்கிறது. key ப்ராப், எந்தப் பொருட்கள் சேர்க்கப்பட்டுள்ளன, அகற்றப்பட்டுள்ளன, அல்லது மறுவரிசைப்படுத்தப்பட்டுள்ளன என்பதை ரியாக்ட் அடையாளம் காண அனுமதிக்கிறது.

உதாரணம்: Keys உடன் மற்றும் இல்லாமல் டிஃபிங் செய்தல்

Keys இல்லாமல்:

// ஆரம்ப ரெண்டர்
<ul>
  <li>பொருள் 1</li>
  <li>பொருள் 2</li>
</ul>

// தொடக்கத்தில் ஒரு பொருளைச் சேர்த்த பிறகு
<ul>
  <li>பொருள் 0</li>
  <li>பொருள் 1</li>
  <li>பொருள் 2</li>
</ul>

Keys இல்லாமல், ரியாக்ட் மூன்று பொருட்களும் மாறிவிட்டதாகக் கருதும். ஒரு புதிய பொருள் மட்டுமே சேர்க்கப்பட்டிருந்தாலும், அது ஒவ்வொரு பொருளுக்குமான DOM நோடுகளைப் புதுப்பிக்கும். இது திறனற்றது.

Keys உடன்:

// ஆரம்ப ரெண்டர்
<ul>
  <li key="item1">பொருள் 1</li>
  <li key="item2">பொருள் 2</li>
</ul>

// தொடக்கத்தில் ஒரு பொருளைச் சேர்த்த பிறகு
<ul>
  <li key="item0">பொருள் 0</li>
  <li key="item1">பொருள் 1</li>
  <li key="item2">பொருள் 2</li>
</ul>

Keys உடன், ரியாக்ட் "item0" ஒரு புதிய பொருள் என்றும், "item1" மற்றும் "item2" வெறுமனே கீழே நகர்த்தப்பட்டுள்ளன என்றும் எளிதாக அடையாளம் காண முடியும். இது புதிய பொருளைச் சேர்ப்பதோடு, ஏற்கனவே உள்ளவற்றை மறுவரிசைப்படுத்தும், இதன் விளைவாக மிகச் சிறந்த செயல்திறன் கிடைக்கும்.

செயல்திறன் மேம்படுத்தும் நுட்பங்கள்

ரியாக்ட்டின் ரெகன்சிலியேஷன் செயல்முறை திறமையானதாக இருந்தாலும், செயல்திறனை மேலும் மேம்படுத்த நீங்கள் பயன்படுத்தக்கூடிய பல நுட்பங்கள் உள்ளன:

நடைமுறை உதாரணங்கள் மற்றும் காட்சிகள்

இந்த மேம்படுத்தல் நுட்பங்களை எப்படிப் பயன்படுத்தலாம் என்பதை விளக்க சில நடைமுறை உதாரணங்களைக் கருத்தில் கொள்வோம்.

உதாரணம் 1: React.memo மூலம் தேவையற்ற மறு-ரெண்டர்களைத் தடுத்தல்

பயனர் தகவலைக் காட்டும் ஒரு கூறு உங்களிடம் இருப்பதாக கற்பனை செய்து கொள்ளுங்கள். அந்த கூறு பயனரின் பெயர் மற்றும் வயதை ப்ராப்ஸாகப் பெறுகிறது. பயனரின் பெயர் மற்றும் வயது மாறவில்லை என்றால், கூறை மறு-ரெண்டர் செய்யத் தேவையில்லை. தேவையற்ற மறு-ரெண்டர்களைத் தடுக்க நீங்கள் React.memo-வைப் பயன்படுத்தலாம்.

import React from 'react';

const UserInfo = React.memo(function UserInfo(props) {
  console.log('UserInfo பாகத்தை ரெண்டர் செய்கிறது');
  return (
    <div>
      <p>பெயர்: {props.name}</p>
      <p>வயது: {props.age}</p>
    </div>
  );
});

export default UserInfo;

React.memo கூறின் ப்ராப்ஸை மேலோட்டமாக ஒப்பிடுகிறது. ப்ராப்ஸ் ஒரே மாதிரியாக இருந்தால், அது மறு-ரெண்டரைத் தவிர்க்கிறது.

உதாரணம் 2: மாற்ற முடியாத தரவுக் கட்டமைப்புகளைப் பயன்படுத்துதல்

பொருட்களின் பட்டியலை ப்ராப்ஸாகப் பெறும் ஒரு கூறைக் கருதுங்கள். பட்டியல் நேரடியாக மாற்றப்பட்டால், ரியாக்ட் மாற்றத்தைக் கண்டறியாமல் போகலாம் மற்றும் கூறை மறு-ரெண்டர் செய்யாமல் இருக்கலாம். மாற்ற முடியாத தரவுக் கட்டமைப்புகளைப் பயன்படுத்துவது இந்த சிக்கலைத் தடுக்கலாம்.

import React from 'react';
import { List } from 'immutable';

function ItemList(props) {
  console.log('ItemList பாகத்தை ரெண்டர் செய்கிறது');
  return (
    <ul>
      {props.items.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

export default ItemList;

இந்த எடுத்துக்காட்டில், items ப்ராப் Immutable.js லைப்ரரியில் இருந்து ஒரு மாற்ற முடியாத பட்டியலாக இருக்க வேண்டும். பட்டியல் புதுப்பிக்கப்படும்போது, ஒரு புதிய மாற்ற முடியாத பட்டியல் உருவாக்கப்படுகிறது, அதை ரியாக்ட் எளிதில் கண்டறிய முடியும்.

பொதுவான தவறுகளும் அவற்றைத் தவிர்ப்பதற்கான வழிகளும்

ரியாக்ட் செயலி செயல்திறனைத் தடுக்கக்கூடிய பல பொதுவான தவறுகள் உள்ளன. இந்தத் தவறுகளைப் புரிந்துகொண்டு தவிர்ப்பது முக்கியமானது.

ரியாக்ட் மேம்பாட்டிற்கான உலகளாவியக் கருத்தாய்வுகள்

உலகளாவிய பார்வையாளர்களுக்காக ரியாக்ட் செயலிகளை உருவாக்கும்போது, பின்வருவனவற்றைக் கருத்தில் கொள்ளுங்கள்:

முடிவுரை

உயர்-செயல்திறன் கொண்ட ரியாக்ட் செயலிகளை உருவாக்க, ரியாக்ட்டின் ரெகன்சிலியேஷன் செயல்முறை மற்றும் விர்ச்சுவல் DOM டிஃபிங் அல்காரிதம் ஆகியவற்றைப் புரிந்துகொள்வது அவசியம். keys-ஐச் சரியாகப் பயன்படுத்துவதன் மூலமும், தேவையற்ற மறு-ரெண்டர்களைத் தடுப்பதன் மூலமும், மற்ற மேம்படுத்தல் நுட்பங்களைப் பயன்படுத்துவதன் மூலமும், உங்கள் செயலிகளின் செயல்திறனையும் பதிலளிக்கும் தன்மையையும் கணிசமாக மேம்படுத்தலாம். பன்முக பார்வையாளர்களுக்காக செயலிகளை உருவாக்கும்போது சர்வதேசமயமாக்கல், அணுகல்தன்மை மற்றும் குறைந்த-பேண்ட்வித் பயனர்களுக்கான செயல்திறன் போன்ற உலகளாவிய காரணிகளைக் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள்.

இந்த விரிவான வழிகாட்டி ரியாக்ட் ரெகன்சிலியேஷனைப் புரிந்துகொள்வதற்கான ஒரு திடமான அடித்தளத்தை வழங்குகிறது. இந்தக் கொள்கைகளையும் நுட்பங்களையும் பயன்படுத்துவதன் மூலம், அனைவருக்கும் ஒரு சிறந்த பயனர் அனுபவத்தை வழங்கும் திறமையான மற்றும் செயல்திறன்மிக்க ரியாக்ட் செயலிகளை நீங்கள் உருவாக்கலாம்.