Skip to content

16. Vite i bundling

This content is not available in your language yet.

Vite i bundling

Vite to nowoczesne narzędzie do budowania aplikacji React. Serwer deweloperski używa natywnych ES modules (błyskawiczny start). Budowanie produkcyjne używa Rollup (optymalizacja). Vite zastąpił Create React App jako standard w ekosystemie React.

  1. Co to jest bundler? — Narzędzie łączące wiele plików JS/CSS w kilka zoptymalizowanych bundli
  2. Dlaczego Vite jest szybki? — Dev server używa natywnych ESM — brak prebundlingu całej aplikacji
  3. HMR — Hot Module Replacement? — Wymiana modułów bez przeładowania strony, stan zachowany
  4. Build produkcyjny? — Minifikacja, tree-shaking, code splitting, chunks
  1. Dlaczego bundler jest potrzebny? — Przeglądarki nie rozumieją JSX, TypeScript, wielu plików
  2. Vite dev server — ESM, szybki start, HMR
  3. Build produkcyjny — Rollup, minifikacja, tree-shaking
  4. vite.config.js — konfiguracja, aliasy, plugins
  5. Vite vs CRA — porównanie: szybkość, konfiguracja, wsparcie

Schemat

Dwa diagramy obok: CRA bundluje WSZYSTKO przed startem (wolno). Vite startuje serwer natychmiast, moduły ładowane on-demand przez przeglądarkę (szybko). Statystyki: CRA 30s start vs Vite 0.3s.

Przykład kodu JSX

Plik vite.config.js z aliasami (@/components), plugins (React plugin), zmiennymi środowiskowymi.

  • Co to jest bundler i po co
  • Vite dev server vs build
  • Podstawy HMR

Forma: 10 slajdów, 10 minut

Ocena: 3.0
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'), // import '@/components/Button' zamiast '../../components/Button'
},
},
server: {
port: 3000,
proxy: {
'/api': 'http://localhost:8080', // Proxy API podczas dewelopmentu
},
},
build: {
outDir: 'dist',
sourcemap: true, // Source maps dla debugowania
},
});
import { lazy, Suspense } from 'react';
import { Routes, Route } from 'react-router-dom';
// Leniwe ładowanie stron — każda strona to osobny chunk
const HomePage = lazy(() => import('./pages/Home'));
const ProductsPage = lazy(() => import('./pages/Products'));
const CartPage = lazy(() => import('./pages/Cart'));
function App() {
return (
<Suspense fallback={<div>Ładowanie...</div>}>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/products" element={<ProductsPage />} />
<Route path="/cart" element={<CartPage />} />
</Routes>
</Suspense>
);
// Vite automatycznie dzieli kod na chunki: home.js, products.js, cart.js
// Przeglądarka ładuje tylko potrzebny chunk!
}

Zademonstruj szybkość HMR

Mając uruchomiony npm run dev — zmieńcie kolor przycisku w kodzie. Klasa zobaczy jak przeglądarka aktualizuje się natychmiastowo bez reload. HMR w akcji!

Pokaż dist/ folder

Uruchomcie npm run build i pokażcie zawartość folderu dist/ — zminifikowane pliki JS i CSS. Porównajcie rozmiar z src/ (development).

Narzędzia kształtują produktywność!

Vite to standard w 2025 roku. Zrozumienie jak działa tooling wyróżnia juniorów od seniorów!