Перейти к содержимому

🚀 Введение в Solid.js

Привет! 👋 Меня зовут Яша, и добро пожаловать в раздел по Solid.js — одному из самых быстрых и элегантных JavaScript-фреймворков современности!

Solid.js — это не просто «ещё один React». Это принципиально иной подход к реактивности: мелкозернистые сигналы вместо Virtual DOM, компилируемый JSX, и настоящие DOM-обновления без перерендеринга компонентов. Результат — производительность уровня ванильного JavaScript при удобстве декларативного UI.

Если ты уже знаешь React, ты поймёшь Solid за несколько дней. Если нет — отличное место для старта! 🚀


Хороший вопрос! В 2024 году есть React, Vue, Svelte, Angular — зачем учить ещё один фреймворк?

Вот несколько весомых причин:

1. Максимальная производительность

Solid.js стабильно занимает первые места в js-framework-benchmark. Он быстрее React на 20-40% и сравним с ванильным JavaScript. При этом ты пишешь декларативный, читаемый код.

2. Мелкозернистая реактивность

В React при изменении состояния перерендеривается весь компонент. В Solid — обновляется только тот конкретный DOM-узел, который зависит от изменившегося сигнала. Это огромная разница!

3. Знакомый синтаксис

Solid использует JSX. Если ты знаешь React — ты сразу узнаешь синтаксис. Но под капотом он работает совершенно иначе.

4. Простая ментальная модель

Нет хуков с правилами, нет closure-буг, нет устаревшего состояния. Сигналы и эффекты — предсказуемые и понятные.

5. TypeScript из коробки

Solid создавался с TypeScript в уме. Отличная типизация без дополнительных настроек.


КритерийSolid.jsReactVue 3Svelte
Размер runtime~7 KB~45 KB~34 KB~1.7 KB
Virtual DOM❌ Нет✅ Да✅ Да❌ Нет
Тип реактивностиСигналыuseState/хукиref/reactiveПрисваивание
Перерендер компонента❌ Никогда✅ При каждом изменении✅ При изменении❌ Нет
JSX✅ Да✅ ДаОпционально❌ Нет
SSR✅ SolidStart✅ Next.js✅ Nuxt✅ SvelteKit
TypeScript✅ Отлично✅ Хорошо✅ Хорошо✅ Хорошо
ПопулярностьРастёт 📈#1#2#4

Раздел состоит из 35 уроков, разбитых на логические блоки:

  1. Что такое Solid.js — архитектура, отличия от React, как работает компилятор
  2. Установка и Vite — создание проекта, настройка, файловая структура
  3. JSX в Solid — компиляция, отличия от React, splitProps
  4. Сигналы (createSignal) — основной примитив реактивности
  5. Эффекты (createEffect) — реакция на изменения, очистка
  6. Мемо (createMemo) — кэшированные вычисления

🏗️ Блок 2: Компоненты и Control Flow (Уроки 7–15)

Заголовок раздела «🏗️ Блок 2: Компоненты и Control Flow (Уроки 7–15)»
  1. Хранилища (createStore) — мутируемые объекты-состояния
  2. Props и компоненты — передача данных, типизация
  3. <Show> — условный рендеринг
  4. <For> и <Index> — списки без key-пропа
  5. <Switch> и <Match> — множественные условия
  6. <Dynamic> — динамические компоненты
  7. <Suspense> — ленивая загрузка
  8. Context API — глобальное состояние
  9. createResource — асинхронные данные

⚙️ Блок 3: Продвинутые примитивы (Уроки 16–22)

Заголовок раздела «⚙️ Блок 3: Продвинутые примитивы (Уроки 16–22)»
  1. Batchingbatch(), untrack(), createRoot()
  2. Refs и DOM — доступ к DOM-элементам
  3. Жизненный циклonMount, onCleanup
  4. <ErrorBoundary> — обработка ошибок
  5. Порталы — рендеринг вне дерева
  6. Переходы и анимацииsolid-transition-group
  7. Директивы — кастомные атрибуты JSX
  1. Маршрутизация@solidjs/router, вложенные маршруты
  2. Формы и валидация — управляемые поля, библиотеки
  3. SolidStart: Введение — мета-фреймворк на основе Solid
  4. SolidStart: Маршрутизация — файловая система
  5. SolidStart: Server Actions — серверные функции
  6. SolidStart: API Routes — создание API
  7. SolidStart: Аутентификация — сессии и JWT
  8. SolidStart: Деплой — Vercel, Netlify, Docker
  1. TypeScript в Solid — типизация, generics, хелперы
  2. Тестирование — Vitest, solid-testing-library
  3. Производительность — профилирование, оптимизация
  4. Solid vs React — детальное сравнение для практики
  5. Экосистема и будущее — библиотеки, Solid 2.0

Выбери фреймворк и посмотри его характеристики — это поможет понять, где Solid.js выигрывает: