React Academy · पाठ

बंडल विश्लेषण और कोड विभाजन रणनीति

rollup-plugin-visualizer से बंडल आकार का विश्लेषण करें और रूट के अनुसार कोड विभाजन रणनीति तय करें।

पाठ 2, कुल 4 में से12 चरण

बंडल विश्लेषण और कोड विभाजन रणनीति, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बंडल आकार क्यों महत्वपूर्ण है

बड़े JavaScript बंडल Time To Interactive में देरी करते हैं। पेज के इंटरैक्टिव होने से पहले JavaScript के प्रत्येक KB को डाउनलोड, पार्स और निष्पादित करना पड़ता है — विशेष रूप से धीमे मोबाइल नेटवर्क पर।

rollup-plugin-visualizer से विश्लेषण

Vite प्रोजेक्ट में, अपने बंडल का ट्रीमैप बनाने के लिए विज़ुअलाइज़र प्लगइन का उपयोग करें, जिसमें दिखेगा कि कौन-से मॉड्यूल सबसे अधिक स्थान लेते हैं।

// vite.config.ts
import { visualizer } from 'rollup-plugin-visualizer';

export default defineConfig({
  plugins: [
    visualizer({ open: true, gzipSize: true, brotliSize: true })
  ],
});

// After build, open the generated HTML file to explore the treemap

Next.js बंडल विश्लेषक

Next.js में सर्वर और क्लाइंट बंडल का विश्लेषण करने के लिए @next/bundle-analyzer का उपयोग करें।

npm install @next/bundle-analyzer

// next.config.js
const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});

module.exports = withBundleAnalyzer({});

// Run:
// ANALYZE=true npm run build

रूट-आधारित कोड विभाजन

सबसे प्रभावी विभाजन यह है कि प्रत्येक रूट का कोड तभी लोड हो, जब उपयोगकर्ता उस पर जाए। lazy() वाला React Router और Next.js App Router यह काम अपने-आप करते हैं।

// React Router v6 with lazy loading
import { lazy, Suspense } from 'react';

const Dashboard = lazy(() => import('./pages/Dashboard'));
const Settings = lazy(() => import('./pages/Settings'));

<Routes>
  <Route path="/dashboard" element={<Suspense fallback={<Loading />}><Dashboard /></Suspense>} />
  <Route path="/settings" element={<Suspense fallback={<Loading />}><Settings /></Suspense>} />
</Routes>

कंपोनेंट-स्तरीय कोड विभाजन

मानचित्र, चार्ट और एडिटर जैसे भारी कंपोनेंट को lazy() का उपयोग करके तब तक लोड न करें, जब तक उनकी आवश्यकता न हो।

const MonacoEditor = lazy(() => import('@monaco-editor/react'));
const MapView = lazy(() => import('./MapView'));

function ProductEditor({ showMap }) {
  return (
    <>
      <Suspense fallback={<EditorSkeleton />}><MonacoEditor /></Suspense>
      {showMap && <Suspense fallback={<MapSkeleton />}><MapView /></Suspense>}
    </>
  );
}

सशर्त सुविधाओं के लिए डायनेमिक इंपोर्ट

सभी उपयोगकर्ताओं के लिए बड़ी लाइब्रेरी लोड करने से बचने के लिए उन्हें केवल सुविधा सक्रिय होने पर ही इंपोर्ट करें।

async function exportToPDF() {
  const { default: jsPDF } = await import('jspdf'); // ~300KB — loaded on demand
  const doc = new jsPDF();
  doc.text('Hello', 10, 10);
  doc.save('export.pdf');
}

ट्री शेकिंग

आधुनिक बंडलर अप्रयुक्त एक्सपोर्ट (डेड कोड) हटा देते हैं। ट्री शेकिंग के लिए सुनिश्चित करें कि आपकी निर्भरताएँ ESM (CJS नहीं) का समर्थन करती हों, और जब आपको केवल एक फ़ंक्शन का उपयोग करना हो तब पूरी लाइब्रेरी इंपोर्ट करने से बचें।

// Bad — imports entire lodash (~70KB):
import _ from 'lodash';
const result = _.debounce(fn, 300);

// Good — imports only debounce (<2KB):
import debounce from 'lodash/debounce';
// or with tree-shaking-friendly lodash-es:
import { debounce } from 'lodash-es';

महत्वपूर्ण चंक्स को पहले से लोड करना

उपयोगकर्ता के वर्तमान पेज पर रहते हुए अगले पेज के chunk को पहले से लोड करने के लिए <link rel='modulepreload'> या Webpack magic comments का उपयोग करें।

// Webpack magic comment — preload on hover:
const Dashboard = lazy(() => import(/* webpackPrefetch: true */ './Dashboard'));
// or preload (higher priority):
const Dashboard = lazy(() => import(/* webpackPreload: true */ './Dashboard'));

तृतीय-पक्ष प्रभाव का विश्लेषण

किसी भी npm पैकेज को इंस्टॉल करने से पहले उसका gzip किया हुआ आकार देखने के लिए bundlephobia.com या Import Cost VS Code extension का उपयोग करें।

बंडल बजट तय करना

Webpack या Vite config में प्रत्येक रूट के लिए आकार की सीमा तय करें। यदि कोई chunk बजट से अधिक हो जाता है, तो build विफल हो जाता है और CI में अनजाने आकार-वृद्धि का पता चल जाता है।

// vite.config.ts
build: {
  rollupOptions: {
    output: {
      manualChunks: {
        'vendor-react': ['react', 'react-dom'],
        'vendor-router': ['react-router-dom'],
      },
    },
  },
  chunkSizeWarningLimit: 200, // warn at 200KB
},

त्वरित जाँच

कई पेज वाले React SPA के लिए सबसे प्रभावी कोड-विभाजन रणनीति क्या है?

पुनरावलोकन

rollup-plugin-visualizer या @next/bundle-analyzer से बंडल का विश्लेषण करें। रूट-आधारित और कंपोनेंट-स्तरीय lazy() विभाजन का उपयोग करें। केवल आवश्यक चीज़ें इंपोर्ट करके ट्री शेकिंग लागू करें। CI में आकार का बजट तय करें और अगले संभावित रूट के लिए प्रीफ़ेच/प्रीलोड संकेतों का उपयोग करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “बंडल विश्लेषण और कोड विभाजन रणनीति” पाठ निःशुल्क है?

हाँ—“बंडल विश्लेषण और कोड विभाजन रणनीति” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“बंडल विश्लेषण और कोड विभाजन रणनीति” में मैं क्या सीखूँगा?

rollup-plugin-visualizer से बंडल आकार का विश्लेषण करें और रूट के अनुसार कोड विभाजन रणनीति तय करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“बंडल विश्लेषण और कोड विभाजन रणनीति” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. React ऐप में Core Web Vitals मापना
  2. बंडल विश्लेषण और कोड विभाजन रणनीति
  3. React में इमेज और फ़ॉन्ट का अनुकूलन
  4. INP घटाना: इवेंट हैंडलर का अनुकूलन
← React Academy पर वापस जाएँ