एप्लिकेशन के प्रदर्शन, उपयोगकर्ता अनुभव और प्रारंभिक लोड समय में भारी सुधार के लिए कंपोनेंट कोड स्प्लिटिंग के साथ रिएक्ट लेज़ी लोडिंग को लागू करना सीखें।
रिएक्ट लेज़ी लोडिंग: कंपोनेंट कोड स्प्लिटिंग के साथ परफॉर्मेंस को बढ़ावा देना
आज के वेब डेवलपमेंट परिदृश्य में, परफॉर्मेंस सर्वोपरि है। उपयोगकर्ता तेज़ लोडिंग समय और सहज इंटरैक्शन की उम्मीद करते हैं। बड़े जावास्क्रिप्ट बंडल, विशेष रूप से जटिल रिएक्ट एप्लिकेशन में, प्रारंभिक लोड समय और समग्र उपयोगकर्ता अनुभव को महत्वपूर्ण रूप से प्रभावित कर सकते हैं। इस समस्या का समाधान करने के लिए एक शक्तिशाली तकनीक लेज़ी लोडिंग है, विशेष रूप से कंपोनेंट कोड स्प्लिटिंग। यह लेख React.lazy और Suspense का उपयोग करके रिएक्ट लेज़ी लोडिंग को समझने और लागू करने के लिए एक व्यापक गाइड प्रदान करता है।
लेज़ी लोडिंग और कोड स्प्लिटिंग क्या है?
लेज़ी लोडिंग, जिसे ऑन-डिमांड लोडिंग के रूप में भी जाना जाता है, एक ऐसी तकनीक है जो संसाधनों (हमारे मामले में, रिएक्ट कंपोनेंट्स) की लोडिंग को तब तक टाल देती है जब तक कि उनकी वास्तव में आवश्यकता न हो। एप्लिकेशन के सभी कोड को एक साथ लोड करने के बजाय, केवल आवश्यक हिस्से ही शुरू में लोड किए जाते हैं, और शेष कोड तब एसिंक्रोनस रूप से लोड किया जाता है जब उपयोगकर्ता किसी विशिष्ट रूट पर नेविगेट करता है या किसी विशेष कंपोनेंट के साथ इंटरैक्ट करता है। यह प्रारंभिक बंडल आकार को काफी कम कर देता है और टाइम टू इंटरैक्टिव (TTI) में सुधार करता है।
कोड स्प्लिटिंग आपके एप्लिकेशन के कोड को छोटे, अधिक प्रबंधनीय हिस्सों (बंडलों) में विभाजित करने की प्रक्रिया है। इन बंडलों को फिर स्वतंत्र रूप से और ऑन-डिमांड लोड किया जा सकता है। रिएक्ट लेज़ी लोडिंग कंपोनेंट्स को केवल तभी लोड करने के लिए कोड स्प्लिटिंग का लाभ उठाता है जब उनकी आवश्यकता होती है।
लेज़ी लोडिंग और कोड स्प्लिटिंग के लाभ
- बेहतर प्रारंभिक लोड समय: प्रारंभिक बंडल आकार को कम करके, ब्राउज़र कम जावास्क्रिप्ट को डाउनलोड और पार्स करता है, जिसके परिणामस्वरूप पेज लोड समय तेज़ होता है। यह विशेष रूप से धीमे नेटवर्क कनेक्शन या उपकरणों पर उपयोगकर्ताओं के लिए महत्वपूर्ण है।
- बेहतर उपयोगकर्ता अनुभव: तेज़ लोडिंग समय एक अधिक प्रतिक्रियाशील और सुखद उपयोगकर्ता अनुभव की ओर ले जाता है, जिससे बाउंस दर कम होती है और उपयोगकर्ता जुड़ाव बढ़ता है।
- संसाधन की खपत में कमी: केवल आवश्यक कोड लोड करने से एप्लिकेशन का मेमोरी फुटप्रिंट कम हो जाता है, जो विशेष रूप से मोबाइल उपकरणों के लिए फायदेमंद है।
- बेहतर SEO: खोज इंजन तेज़ लोडिंग समय वाली वेबसाइटों का पक्ष लेते हैं, जिससे संभावित रूप से आपकी वेबसाइट की खोज इंजन रैंकिंग में सुधार होता है।
React.lazy और Suspense के साथ रिएक्ट लेज़ी लोडिंग को लागू करना
रिएक्ट React.lazy और Suspense का उपयोग करके कंपोनेंट्स को लेज़ी लोड करने के लिए एक अंतर्निहित तंत्र प्रदान करता है। React.lazy आपको एक कंपोनेंट को गतिशील रूप से आयात करने की अनुमति देता है, जबकि Suspense कंपोनेंट लोड होने के दौरान एक फॉलबैक UI प्रदर्शित करने का एक तरीका प्रदान करता है।
चरण 1: React.lazy के साथ डायनामिक इम्पोर्ट
React.lazy एक फ़ंक्शन लेता है जो import() को कॉल करता है। import() फ़ंक्शन एक डायनामिक इम्पोर्ट है जो एक प्रॉमिस (Promise) लौटाता है, जो उस मॉड्यूल में हल हो जाता है जिसमें वह कंपोनेंट होता है जिसे आप लेज़ी लोड करना चाहते हैं।
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
इस उदाहरण में, MyComponent तब तक लोड नहीं होता जब तक इसे रेंडर नहीं किया जाता। import('./MyComponent') स्टेटमेंट ./MyComponent फ़ाइल से कंपोनेंट को गतिशील रूप से आयात करता है। ध्यान दें कि पथ वर्तमान फ़ाइल के सापेक्ष है।
चरण 2: लोडिंग स्टेट्स को संभालने के लिए Suspense का उपयोग करना
चूंकि लेज़ी लोडिंग में कंपोनेंट्स की एसिंक्रोनस लोडिंग शामिल होती है, इसलिए आपको लोडिंग स्थिति को संभालने और कंपोनेंट के लोड होने के दौरान एक फॉलबैक UI प्रदर्शित करने का एक तरीका चाहिए। यहीं पर Suspense काम आता है। Suspense एक रिएक्ट कंपोनेंट है जो आपको अपने बच्चों (children) के रेंडरिंग को तब तक "सस्पेंड" करने देता है जब तक वे तैयार न हों। यह एक fallback प्रॉप लेता है, जो यह निर्दिष्ट करता है कि बच्चों के लोड होने के दौरान कौन सा UI रेंडर करना है।
import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading... इस उदाहरण में, Suspense कंपोनेंट MyComponent को रैप करता है। जब तक MyComponent लोड हो रहा है, तब तक fallback प्रॉप () रेंडर होगा। एक बार जब MyComponent लोड हो जाता है, तो यह फॉलबैक UI को बदल देगा।
उदाहरण: रिएक्ट राउटर एप्लिकेशन में एक रूट को लेज़ी लोड करना
लेज़ी लोडिंग रिएक्ट राउटर एप्लिकेशन में रूट्स के लिए विशेष रूप से उपयोगी है। आप अपनी वेबसाइट के प्रारंभिक लोड समय में सुधार करते हुए, अपने एप्लिकेशन के पूरे पेज या सेक्शन को लेज़ी लोड कर सकते हैं।
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Loading...