தமிழ்

சிறந்த கோட் ஸ்பிளிட்டிங்கிற்கு Next.js டைனமிக் இறக்குமதிகளை மாஸ்டர் செய்யுங்கள். இந்த மேம்பட்ட உத்திகள் மூலம் இணையதள செயல்திறனை மேம்படுத்துங்கள், பயனர் அனுபவத்தை மெருகூட்டுங்கள், மற்றும் ஆரம்ப ஏற்றுதல் நேரங்களைக் குறைத்திடுங்கள்.

Next.js டைனமிக் இறக்குமதிகள்: மேம்பட்ட கோட் ஸ்பிளிட்டிங் உத்திகள்

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

டைனமிக் இறக்குமதிகள் என்றால் என்ன?

டைனமிக் இறக்குமதிகள், நவீன ஜாவாஸ்கிரிப்டில் ஒரு நிலையான அம்சம், மாட்யூல்களை ஒத்திசைவற்ற முறையில் இறக்குமதி செய்ய உங்களை அனுமதிக்கிறது. நிலையான இறக்குமதிகளைப் போலல்லாமல் (ஒரு கோப்பின் மேலே import அறிக்கையைப் பயன்படுத்தி), டைனமிக் இறக்குமதிகள் import() செயல்பாட்டைப் பயன்படுத்துகின்றன, இது ஒரு பிராமிஸை வழங்குகிறது. இந்த பிராமிஸ் நீங்கள் இறக்குமதி செய்யும் மாட்யூலுடன் தீர்க்கப்படுகிறது. Next.js சூழலில், ஆரம்ப பண்டில் சேர்க்கப்படுவதற்குப் பதிலாக, தேவைக்கேற்ப காம்போனென்ட்கள் மற்றும் மாட்யூல்களை ஏற்ற இது உங்களை அனுமதிக்கிறது. இது குறிப்பாக பின்வருவனவற்றிற்கு பயனுள்ளதாக இருக்கும்:

Next.js-இல் டைனமிக் இறக்குமதிகளின் அடிப்படை செயல்படுத்தல்

Next.js ஒரு உள்ளமைக்கப்பட்ட next/dynamic செயல்பாட்டை வழங்குகிறது, இது ரியாக்ட் காம்போனென்ட்களுடன் டைனமிக் இறக்குமதிகளைப் பயன்படுத்துவதை எளிதாக்குகிறது. இதோ ஒரு அடிப்படை உதாரணம்:


import dynamic from 'next/dynamic';

const DynamicComponent = dynamic(() => import('../components/MyComponent'));

function MyPage() {
  return (
    

This is my page.

); } export default MyPage;

இந்த எடுத்துக்காட்டில், MyComponent ஆனது DynamicComponent ரெண்டர் செய்யப்படும்போது மட்டுமே ஏற்றப்படுகிறது. next/dynamic செயல்பாடு தானாகவே கோட் ஸ்பிளிட்டிங் மற்றும் லேசி லோடிங்கைக் கையாளுகிறது.

மேம்பட்ட கோட் ஸ்பிளிட்டிங் உத்திகள்

1. காம்போனென்ட்-நிலை கோட் ஸ்பிளிட்டிங்

மிகவும் பொதுவான பயன்பாடு, காம்போனென்ட் மட்டத்தில் குறியீட்டைப் பிரிப்பதாகும். மோடல் விண்டோக்கள், டேப்கள் அல்லது பக்கத்தில் கீழே தோன்றும் பகுதிகள் போன்ற ஆரம்பப் பக்க ஏற்றத்தில் உடனடியாகத் தெரியாத காம்போனென்ட்களுக்கு இது மிகவும் பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டாக, தயாரிப்பு மதிப்புரைகளைக் காட்டும் ஒரு இ-காமர்ஸ் இணையதளத்தைக் கவனியுங்கள். மதிப்புரைகள் பகுதியை டைனமிக்காக இறக்குமதி செய்யலாம்:


import dynamic from 'next/dynamic';

const ProductReviews = dynamic(() => import('../components/ProductReviews'), {
  loading: () => 

Loading reviews...

}); function ProductPage() { return (

Product Name

Product description...

); } export default ProductPage;

loading விருப்பம், காம்போனென்ட் ஏற்றப்படும்போது ஒரு பிளேஸ்ஹோல்டரை வழங்குகிறது, இது பயனர் அனுபவத்தை மேம்படுத்துகிறது. மெதுவான இணைய இணைப்புகளைக் கொண்ட பகுதிகளில் இது மிகவும் முக்கியமானது, உதாரணமாக தென் அமெரிக்கா அல்லது ஆப்பிரிக்காவின் சில பகுதிகளில், பயனர்கள் பெரிய ஜாவாஸ்கிரிப்ட் பண்டல்களை ஏற்றுவதில் தாமதங்களை சந்திக்க நேரிடலாம்.

2. வழித்தடம்-அடிப்படையிலான கோட் ஸ்பிளிட்டிங்

Next.js தானாகவே வழித்தடம்-அடிப்படையிலான கோட் ஸ்பிளிட்டிங்கைச் செய்கிறது. உங்கள் pages கோப்பகத்தில் உள்ள ஒவ்வொரு பக்கமும் ஒரு தனி பண்டில் ஆகிறது. பயனர் ஒரு குறிப்பிட்ட வழித்தடத்திற்குச் செல்லும்போது, அந்த வழித்தடத்திற்குத் தேவையான குறியீடு மட்டுமே ஏற்றப்படுவதை இது உறுதி செய்கிறது. இது இயல்பான நடத்தை என்றாலும், உங்கள் அப்ளிகேஷனை மேலும் மேம்படுத்த இதை புரிந்துகொள்வது முக்கியம். ஒரு குறிப்பிட்ட பக்கத்தை ரெண்டர் செய்யத் தேவையில்லாத பெரிய, தேவையற்ற மாட்யூல்களை உங்கள் பக்க காம்போனென்ட்களில் இறக்குமதி செய்வதைத் தவிர்க்கவும். அவை குறிப்பிட்ட தொடர்புகளுக்கு அல்லது குறிப்பிட்ட நிபந்தனைகளின் கீழ் மட்டுமே தேவைப்பட்டால், அவற்றை டைனமிக்காக இறக்குமதி செய்வதைக் கவனியுங்கள்.

3. நிபந்தனைக்குட்பட்ட கோட் ஸ்பிளிட்டிங்

டைனமிக் இறக்குமதிகளை யூசர் ஏஜென்ட்கள், உலாவி ஆதரிக்கும் அம்சங்கள் அல்லது பிற சுற்றுச்சூழல் காரணிகளின் அடிப்படையில் நிபந்தனையுடன் பயன்படுத்தலாம். இது குறிப்பிட்ட சூழலின் அடிப்படையில் வெவ்வேறு காம்போனென்ட்கள் அல்லது மாட்யூல்களை ஏற்ற உங்களை அனுமதிக்கிறது. எடுத்துக்காட்டாக, பயனரின் இருப்பிடத்தின் அடிப்படையில் (புவிஇருப்பிட APIகளைப் பயன்படுத்தி) வேறுபட்ட வரைபட காம்போனென்ட்டை ஏற்ற விரும்பலாம் அல்லது பழைய உலாவிகளுக்கு மட்டும் ஒரு பாலிஃபில்லை ஏற்றலாம்.


import dynamic from 'next/dynamic';

function MyComponent() {
  const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);

  const DynamicComponent = dynamic(() => {
    if (isMobile) {
      return import('../components/MobileComponent');
    } else {
      return import('../components/DesktopComponent');
    }
  });

  return (
    
); } export default MyComponent;

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

4. வெப் வொர்க்கர்களைப் பயன்படுத்துதல்

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


import dynamic from 'next/dynamic';

function MyComponent() {
  const startWorker = async () => {
    const MyWorker = dynamic(() => import('../workers/my-worker'), { 
      ssr: false // Disable server-side rendering for Web Workers
    });

    const worker = new (await MyWorker()).default();

    worker.postMessage({ data: 'some data' });

    worker.onmessage = (event) => {
      console.log('Received from worker:', event.data);
    };
  };

  return (
    
); } export default MyComponent;

ssr: false விருப்பத்தைக் கவனியுங்கள். வெப் வொர்க்கர்களை சர்வர்-சைடில் இயக்க முடியாது, எனவே டைனமிக் இறக்குமதிக்கு சர்வர்-சைடு ரெண்டரிங் முடக்கப்பட வேண்டும். இந்த அணுகுமுறை உலகளவில் பயன்படுத்தப்படும் நிதி அப்ளிகேஷன்களில் பெரிய தரவுத்தொகுப்புகளை செயலாக்குவது போன்ற, பயனர் அனுபவத்தை சீர்குலைக்கக்கூடிய பணிகளுக்கு நன்மை பயக்கும்.

5. டைனமிக் இறக்குமதிகளை முன்கூட்டியே பெறுதல்

டைனமிக் இறக்குமதிகள் பொதுவாக தேவைக்கேற்ப ஏற்றப்பட்டாலும், பயனர் விரைவில் தேவைப்படுவார் என்று நீங்கள் எதிர்பார்க்கும்போது அவற்றை முன்கூட்டியே பெறலாம். இது உங்கள் அப்ளிகேஷனின் உணரப்பட்ட செயல்திறனை மேலும் மேம்படுத்தும். Next.js next/link காம்போனென்ட்டை prefetch ப்ராப் உடன் வழங்குகிறது, இது இணைக்கப்பட்ட பக்கத்திற்கான குறியீட்டை முன்கூட்டியே பெறுகிறது. இருப்பினும், டைனமிக் இறக்குமதிகளை முன்கூட்டியே பெற வேறு அணுகுமுறை தேவை. நீங்கள் React.preload API-ஐப் பயன்படுத்தலாம் (புதிய ரியாக்ட் பதிப்புகளில் கிடைக்கிறது) அல்லது ஒரு காம்போனென்ட் எப்போது தெரியப் போகிறது என்பதைக் கண்டறிய இன்டர்செக்ஷன் அப்சர்வர் API-ஐப் பயன்படுத்தி ஒரு தனிப்பயன் ப்ரீஃபெட்சிங் பொறிமுறையைச் செயல்படுத்தலாம்.

எடுத்துக்காட்டு (இன்டர்செக்ஷன் அப்சர்வர் API-ஐப் பயன்படுத்தி):


import dynamic from 'next/dynamic';
import { useEffect, useRef } from 'react';

const DynamicComponent = dynamic(() => import('../components/MyComponent'));

function MyPage() {
  const componentRef = useRef(null);

  useEffect(() => {
    const observer = new IntersectionObserver(
      (entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {
            // Manually trigger the import to prefetch
            import('../components/MyComponent');
            observer.unobserve(componentRef.current);
          }
        });
      },
      { threshold: 0.1 }
    );

    if (componentRef.current) {
      observer.observe(componentRef.current);
    }

    return () => {
      if (componentRef.current) {
        observer.unobserve(componentRef.current);
      }
    };
  }, []);

  return (
    

My Page

); } export default MyPage;

இந்த எடுத்துக்காட்டு, DynamicComponent எப்போது தெரியப் போகிறது என்பதைக் கண்டறிய இன்டர்செக்ஷன் அப்சர்வர் API-ஐப் பயன்படுத்துகிறது, பின்னர் இறக்குமதியைத் தூண்டுகிறது, இதன் மூலம் குறியீட்டை திறம்பட முன்கூட்டியே பெறுகிறது. பயனர் உண்மையில் காம்போனென்டுடன் தொடர்பு கொள்ளும்போது இது வேகமான ஏற்றுதல் நேரங்களுக்கு வழிவகுக்கும்.

6. பொதுவான சார்புகளைக் குழுவாக்குதல்

டைனமிக்காக இறக்குமதி செய்யப்பட்ட பல காம்போனென்ட்கள் பொதுவான சார்புகளைப் பகிர்ந்து கொண்டால், அந்த சார்புகள் ஒவ்வொரு காம்போனென்ட்டின் பண்டிலும் நகலெடுக்கப்படவில்லை என்பதை உறுதிப்படுத்தவும். Next.js பயன்படுத்தும் பண்டலர் ஆன வெப்பேக், பொதுவான துண்டுகளைத் தானாகவே அடையாளம் கண்டு பிரித்தெடுக்க முடியும். இருப்பினும், சங்கிங் நடத்தையை மேலும் மேம்படுத்த உங்கள் வெப்பேக் உள்ளமைவை (next.config.js) நீங்கள் உள்ளமைக்க வேண்டியிருக்கலாம். UI காம்போனென்ட் லைப்ரரிகள் அல்லது பயன்பாட்டு செயல்பாடுகள் போன்ற உலகளவில் பயன்படுத்தப்படும் லைப்ரரிகளுக்கு இது குறிப்பாகப் பொருத்தமானது.

7. பிழை கையாளுதல்

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


import dynamic from 'next/dynamic';

const DynamicComponent = dynamic(() => import('../components/MyComponent'), {
  loading: () => 

Loading...

, onError: (error, retry) => { console.error('Failed to load component', error); retry(); // Optionally retry the import } }); function MyPage() { return (
); } export default MyPage;

onError விருப்பம் பிழைகளைக் கையாளவும், இறக்குமதியை மீண்டும் முயற்சிக்கவும் உங்களை அனுமதிக்கிறது. நம்பகத்தன்மையற்ற இணைய இணைப்பு உள்ள பகுதிகளில் உள்ள பயனர்களுக்கு இது மிகவும் முக்கியமானது.

டைனமிக் இறக்குமதிகளைப் பயன்படுத்துவதற்கான சிறந்த நடைமுறைகள்

கோட் ஸ்பிளிட்டிங்கை பகுப்பாய்வு செய்வதற்கும் மேம்படுத்துவதற்குமான கருவிகள்

பல கருவிகள் உங்கள் கோட் ஸ்பிளிட்டிங் உத்தியை பகுப்பாய்வு செய்யவும் மேம்படுத்தவும் உதவும்:

நிஜ-உலக உதாரணங்கள்

முடிவுரை

டைனமிக் இறக்குமதிகள் Next.js அப்ளிகேஷன்களை மேம்படுத்துவதற்கும், வேகமான மற்றும் பதிலளிக்கக்கூடிய பயனர் அனுபவத்தை வழங்குவதற்கும் ஒரு சக்திவாய்ந்த கருவியாகும். உங்கள் குறியீட்டை உத்தி ரீதியாகப் பிரித்து, தேவைக்கேற்ப ஏற்றுவதன் மூலம், நீங்கள் ஆரம்ப பண்டில் அளவை கணிசமாகக் குறைக்கலாம், செயல்திறனை மேம்படுத்தலாம், மற்றும் பயனர் ஈடுபாட்டை அதிகரிக்கலாம். இந்த வழிகாட்டியில் கோடிட்டுக் காட்டப்பட்டுள்ள மேம்பட்ட உத்திகளைப் புரிந்துகொண்டு செயல்படுத்துவதன் மூலம், உங்கள் Next.js அப்ளிகேஷன்களை அடுத்த கட்டத்திற்கு எடுத்துச் சென்று, உலகெங்கிலும் உள்ள பயனர்களுக்கு ஒரு தடையற்ற அனுபவத்தை வழங்க முடியும். உங்கள் அப்ளிகேஷனின் செயல்திறனைத் தொடர்ந்து கண்காணித்து, சிறந்த முடிவுகளை உறுதிசெய்ய தேவைக்கேற்ப உங்கள் கோட் ஸ்பிளிட்டிங் உத்தியை மாற்றியமைக்க நினைவில் கொள்ளுங்கள்.

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

மேலும், சமீபத்திய Next.js மற்றும் ரியாக்ட் அம்சங்களுடன் புதுப்பித்த நிலையில் இருங்கள். சர்வர் காம்போனென்ட்கள் (Next.js 13 மற்றும் அதற்கு மேற்பட்டவற்றில் கிடைக்கிறது) போன்ற அம்சங்கள், சர்வரில் காம்போனென்ட்களை ரெண்டர் செய்வதன் மூலமும், தேவையான HTML-ஐ மட்டுமே கிளையண்டிற்கு அனுப்புவதன் மூலமும் பல டைனமிக் இறக்குமதிகளின் தேவையை மாற்றியமைக்கக்கூடும், இது ஆரம்ப ஜாவாஸ்கிரிப்ட் பண்டில் அளவை வெகுவாகக் குறைக்கிறது. வலை மேம்பாட்டு தொழில்நுட்பங்களின் வளர்ந்து வரும் நிலப்பரப்பின் அடிப்படையில் உங்கள் அணுகுமுறையை தொடர்ந்து மதிப்பீடு செய்து மாற்றியமைக்கவும்.