Strona główna / Artykuły / Vite + React od zera, z włączonym wcześnie React Compilerem

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.

1732 słów

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ą.