Vite + React з нуля, із активованим React Compiler вже на початку
Скелет проекту з Vite: прочитайте файл entrypoint та увімкніть React Compiler ще до того, як буде реалізована перша функціональність.
Первісна ідея React полягала у створенні прогнозованого інтерфейсу користувача незалежно від змін даних. Сучасний стандарт — це Vite для швидкої локальної обробки даних, а також React Compiler у разі потреби для автоматизації процесу мемоізації, який раніше виконувався вручну.
Що ми використовуємо (і що пропускаємо)
Основою є Vite + React + TypeScript. CRA не використовується. React Compiler увімкнений навмисно, щоб ви могли побачити його ефект вже з перших компонентів.
Передумова: Node.js
Встановіть останню версію Node LTS, переконайтеся, що команди node та npm (або pnpm) є у PATH, а потім створіть основу проекту:
// 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';
}
Ознайомтесь зі структурою папок
Перед зміною інструментарію дізнайтеся, де знаходяться файли index.html, src/main.tsx та App:
// 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>;
}
Розбір точки входу
У точці входу ініціалізується кореневий елемент та завантажується глобальний CSS. Залиште все простим; код функціоналу має знаходитися у компонентах.
node -v
corepack enable
Увімкніть React Compiler
Додайте плагін компілятора до конфігурації збірки, щоб інтеграція Babel/SWC відповідала документації для вашої версії Vite:
npm install -g pnpm
pnpm create vite@latest restart-react --template react-ts
Підтвердіть, що він активний
Використайте описані способи перевірки або невеликий компонент, який інакше потребував би useMemo/memo, та перевірте результати роботи компілятора чи показники інструментів:
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
Перша функція без конфліктів з інструментом
// 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
Підсумок
// 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()],
}),
],
});
Тепер у вас є додаток Vite React із підтримкою компілятора, вбудованою з самого початку — ідеально для проектів, які передбачають автоматичну мемоїзацію, а не її додавання пізніше. Зберігайте тестові середовища у стані „зеленому“, вимірюйте кожну стадію окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступний випуск може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте тестові середовища у стані „зеленому“, вимірюйте кожну стадію окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступний випуск може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте тестові середовища у стані „зеленому“, вимірюйте кожну стадію окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступний випуск може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте тестові середовища у стані „зеленому“, вимірюйте кожну стадію окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступний випуск може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте тестові середовища у стані „зеленому“, вимірюйте e
Тримайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий непомітний режим несправності під новою назвою.Залишайте тестові засоби у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим збою під новою назвою.Уникайте того самого прихованого способу збою під новою назвою. Зберігайте пристрої у стані „зеленого“ рівня, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте пристрої у стані „зеленого“ рівня, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте пристрої у стані „зеленого“ рівня, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте пристрої у стані „зеленого“ рівня, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий прихований спосіб збою під новою назвою. Зберігайте пристрої у стані „зеленого“ рівня, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий прихований спосіб збою під новою назвою.назва. Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим несправності під новою назвою. Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим несправності під новою назвою. Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим несправності під новою назвою. Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим несправності під новою назвою. Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести той самий непомітний режим несправності під новою назвою. Зберігайте пристрої у справному стані, вимірюйте кожен етапЗалишайте пристрої у справному стані, вимірюйте кожну стадію окремо та не поспішайте з випуском, якщо наступна версія може знову ввести той самий непомітний режим несправності під новою назвою.Зберігайте тестові засоби у стані „зеленому“, вимірюйте кожну стадію окремо та відмовляйтесь від релізу, спираючись лише на інтуїцію, коли наступна версія може знову ввести той самий непомітний режим збою під новою назвою.Зберігайте пристрої у справному стані, вимірюйте кожен етап окремо та не поспішайте з випуском, спираючись лише на інтуїцію, адже наступна версія може знову ввести ту саму приховану проблему під новою назвою.