React Academy · Pelajaran

Analisis Himpunan & Strategi Pemisahan Kod

Analisis saiz himpunan dengan rollup-plugin-visualizer dan tetapkan strategi pemisahan kod mengikut laluan.

Pelajaran 2 daripada 412 langkah

Analisis Himpunan & Strategi Pemisahan Kod ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Mengapa Saiz Bundel Penting

Bundel JavaScript yang besar melambatkan Masa untuk Interaktif. Setiap KB JS perlu dimuat turun, dihuraikan dan dilaksanakan sebelum halaman menjadi interaktif — terutamanya pada rangkaian mudah alih yang perlahan.

Menganalisis dengan rollup-plugin-visualizer

Dalam projek Vite, gunakan pemalam visualisasi untuk menjana peta pokok bundel anda yang menunjukkan modul yang menggunakan ruang paling banyak.

// 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

Penganalisis Bundel Next.js

Gunakan @next/bundle-analyzer untuk menganalisis bundel pelayan dan klien dalam Next.js.

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

Pembahagian Kod Mengikut Laluan

Pembahagian yang paling berkesan ialah memuatkan kod setiap laluan hanya apabila pengguna menavigasinya. React Router dengan lazy() dan Next.js App Router melakukan perkara ini secara automatik.

// 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>

Pembahagian Kod pada Tahap Komponen

Tangguhkan pemuatan komponen berat seperti peta, carta dan penyunting sehingga diperlukan dengan menggunakan 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>}
    </>
  );
}

Import Dinamik untuk Ciri Bersyarat

Import pustaka besar hanya apabila sesuatu ciri diaktifkan supaya pustaka tersebut tidak dimuatkan untuk semua pengguna.

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');
}

Pembuangan Kod Tidak Digunakan

Bundler moden membuang eksport yang tidak digunakan (kod mati). Pastikan kebergantungan anda menyokong ESM, bukan CJS, supaya pembuangan kod tidak digunakan berfungsi, dan elakkan mengimport seluruh pustaka apabila anda hanya menggunakan satu fungsi.

// 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';

Pramuat chunk Kritikal

Gunakan <link rel='modulepreload'> atau komen khas Webpack untuk memuatkan chunk halaman seterusnya terlebih dahulu semasa pengguna berada pada halaman semasa.

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

Menganalisis Kesan Pihak Ketiga

Gunakan bundlephobia.com atau sambungan Import Cost untuk VS Code bagi melihat saiz gzip mana-mana pakej npm sebelum memasangnya.

Menetapkan Belanjawan Bundel

Tetapkan had saiz bagi setiap laluan dalam konfigurasi Webpack atau Vite. Binaan akan gagal jika chunk melebihi belanjawan, sekali gus mengesan kemerosotan saiz yang tidak disengajakan dalam CI.

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

Semakan Pantas

Apakah strategi pembahagian kod yang paling berkesan untuk SPA React yang mempunyai banyak halaman?

Ringkasan

Analisis bundel dengan rollup-plugin-visualizer atau @next/bundle-analyzer. Gunakan pembahagian mengikut laluan dan tahap komponen dengan lazy(). Laksanakan pembuangan kod tidak digunakan dengan mengimport hanya perkara yang anda gunakan. Tetapkan belanjawan saiz dalam CI dan gunakan petunjuk prambil atau pramuat untuk laluan seterusnya yang berkemungkinan.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Analisis Himpunan & Strategi Pemisahan Kod” percuma?

Ya — teks penuh “Analisis Himpunan & Strategi Pemisahan Kod” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Analisis Himpunan & Strategi Pemisahan Kod”?

Analisis saiz himpunan dengan rollup-plugin-visualizer dan tetapkan strategi pemisahan kod mengikut laluan. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Analisis Himpunan & Strategi Pemisahan Kod” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengukur Web Vitals Teras dalam Aplikasi React
  2. Analisis Himpunan & Strategi Pemisahan Kod
  3. Pengoptimuman Imej & Fon dalam React
  4. Mengurangkan INP: Pengoptimuman Pengendali Peristiwa
← Kembali ke React Academy