Vite + React od zera, z włączonym wcześnie React Compilerem
Scaffold z Vite, przeczytaj plik entrypoint i włącz React Compiler przed dodaniem pierwszej funkcjonalności.
Pierwotna koncepcja Reacta zakładała przewidywalny interfejs użytkownika przy zmieniających się danych. Współczesnym standardem jest Vite dla szybkiej odpowiedzi lokalnej, a – jeśli to wybierzesz – React Compiler do automatyzacji procesu memoizacji, który wcześniej był realizowany ręcznie.
To, co używamy (i czego unikamy)
Jako podstawę wykorzystujemy Vite + React + TypeScript. Brak CRA. React Compiler jest włączony celowo, aby można było zobaczyć jego efekt już od pierwszych komponentów.
Wymaganie wstępne: Node.js
Zainstaluj najnowszą wersję LTS Node.js, upewnij się, że node oraz npm (lub pnpm) znajdują się w PATH, a następnie utwórz strukturę projektu:
// The old way — you manually keep the screen in sync every time the data changes
const badge = document.querySelector('#unread-badge');
badge.textContent = count;
if (count === 0) {
badge.style.display = 'none';
} else {
badge.style.display = 'block';
}
Przegląd struktury folderów
Znajdź lokalizację plików index.html, src/main.tsx oraz App przed zmianą narzędzi:
// The React way — you simply declare "for this state, the screen looks like this"
function UnreadBadge({ count }: { count: number }) {
if (count === 0) return null;
return <span className="badge">{count}</span>;
}
Analiza punktu wejścia
Punkt wejścia montuje element korzeniowy i ładuje globalny CSS. Niech będzie prosty – kod funkcjonalny powinien znajdować się w komponentach.
node -v
corepack enable
Włącz React Compiler
Dodaj wtyczkę kompilatora do konfiguracji budowania, aby integracja z Babel/SWC była zgodna z dokumentacją dotyczącą Twojej wersji Vite:
npm install -g pnpm
pnpm create vite@latest restart-react --template react-ts
Potwierdź, że jest aktywny
Skorzystaj z opisanych metod weryfikacji lub małego komponentu, który w przeciwnym razie wymagałby użycia useMemo/memo, oraz sprawdź wynik kompilacji lub wskaźniki narzędzi:
cd restart-react
pnpm install
pnpm dev
restart-react/
├── index.html ← the single HTML file the app mounts into
├── package.json ← dependencies and scripts
├── tsconfig.json ← TypeScript config
├── vite.config.ts ← Vite config (we'll edit this shortly)
└── src/
├── main.tsx ← the app's entry point
├── App.tsx ← the top-level component
├── App.css
└── index.css
Pierwsza funkcjonalność bez konfliktu z narzędziem
// src/main.tsx
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.tsx'
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
)
pnpm install -D babel-plugin-react-compiler@latest @rolldown/plugin-babel
Podsumowanie
// vite.config.ts (before)
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
});
// vite.config.ts (after)
import { defineConfig } from 'vite';
import react, { reactCompilerPreset } from '@vitejs/plugin-react';
import babel from '@rolldown/plugin-babel';
export default defineConfig({
plugins: [
react(),
babel({
presets: [reactCompilerPreset()],
}),
],
});
Teraz masz aplikację Vite React z włączoną wcześnie obsługą kompilatora – idealną dla projektu, który zakłada automatyczną memoizację zamiast dodawania jej później. Utrzymuj testy w stanie prawidłowym, mierz każdy etap osobno i unikaj wypuszczania produktu opartego wyłącznie na intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Utrzymuj testy w stanie prawidłowym, mierz każdy etap osobno i unikaj wypuszczania produktu opartego wyłącznie na intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Utrzymuj testy w stanie prawidłowym, mierz każdy etap osobno i unikaj wypuszczania produktu opartego wyłącznie na intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Utrzymuj testy w stanie prawidłowym, mierz każdy etap osobno i unikaj wypuszczania produktu opartego wyłącznie na intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Utrzymuj testy w stanie prawidłowym, mierz e
Utrzymuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą.Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Trzymaj narzędzia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu wyłącznie na podstawie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą.Unikaj tego samego ukrytego problemu pod nową nazwą. Zachowuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty problem pod nową nazwą. Zachowuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty problem pod nową nazwą. Zachowuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty problem pod nową nazwą. Zachowuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty problem pod nową nazwą. Zachowuj urządzenia w dobrym stanie, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty problem pod nową nazwą.nazwa. Zachowaj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Zachowaj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Zachowaj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Zachowaj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Zachowaj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą. Zachowaj urządzenia w dobrym stanie, mierz każdy etapTrzymaj przyrządy w stanie sprawnym, mierz każdy etap osobno i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą.Trzymaj narzędzia w stanie sprawnym, mierz każdy etap osobno i odmawiaj wypuszczenia produktu opartego wyłącznie na intuicji, gdy następna wersja może ponownie wprowadzić ten sam niewidoczny problem pod nową nazwą.Utrzymuj urządzenia w dobrym stanie, mierz każdy etap oddzielnie i unikaj wypuszczania produktu na podstawie jedynie intuicji, gdy kolejna wersja może ponownie wprowadzić ten sam ukryty błąd pod nową nazwą.