Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+737новых вакансий за сутки·51 861вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 706
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 391 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python5 436
  • Облачные технологии4 071
  • QA вакансии1 587
  • Android1 093
  • Инженер данных782
  • Продакт-менеджер310

Разработка

  • iOS1 047
  • Backend вакансии986
  • Fullstack вакансии437
  • Frontend вакансии354
  • AI вакансии350
  • Mobile вакансии27

По стеку

  • Go2 987
  • Java1 810
  • Kotlin868
  • Node.js675
  • .NET436
  • Rust435
  • PHP248
  • C++204
  • C#190

DevOps и инфраструктура

  • Kubernetes2 306
  • Linux-инфраструктура1 890
  • DevOps вакансии1 675
  • Terraform / IaC1 405
  • CI/CD841
  • Мониторинг и Observability645
  • SRE217
  • Кибербезопасность46

Аналитика и данные

  • Аналитик данных476
  • Data Scientist450
  • Бизнес-аналитик341
  • Системный аналитик48

Другие направления

  • Проджект-менеджер103
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США23 809
  • Вакансии в Европе9 134
  • Работа в России2 924
  • Вакансии в Канаде2 119

По формату

  • Удалённые вакансии41 654
  • Релокация в США23 809
  • Гибридная работа3 374
  • Офисная работа2 525

По уровню

  • Senior вакансии20 056
  • Middle вакансии11 874
  • Junior вакансии3 682

Сейчас нанимают

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise71 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify14 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий
  • Adyen8 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме AstroВсе вопросы
AstroMiddleТеория

Как Astro поддерживает несколько UI-фреймворков (React, Vue, Svelte, Solid) одновременно?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Astro подключает каждый UI-фреймворк через отдельную интеграцию (@astrojs/react, @astrojs/vue и т.д.) в astro.config.mjs; компоненты разных фреймворков используются на одной странице, а директивы client:* контролируют когда и как они гидратируются.

Установка интеграций

# Через astro add (рекомендуется — автоматически правит astro.config.mjs)
npx astro add react vue svelte solid preact lit

# Вручную
npm install @astrojs/react react react-dom
npm install @astrojs/vue vue

Поддержка нескольких UI-фреймворков в Astro

Astro реализует концепцию «принеси свой фреймворк» (Bring Your Own Framework). Каждый фреймворк подключается через официальную интеграцию — пакет-адаптер, который учит Astro рендерить компоненты этого фреймворка. Несколько интеграций можно использовать одновременно.

Конфигурация

// astro.config.mjs
import { defineConfig } from 'astro/config';
import react from '@astrojs/react';
import vue from '@astrojs/vue';
import svelte from '@astrojs/svelte';
import solid from '@astrojs/solid-js';

export default defineConfig({
  integrations: [react(), vue(), svelte(), solid()],
});

Использование компонентов разных фреймворков

---
// src/pages/index.astro
import ReactCounter from '../components/Counter.tsx';    // React
import VueModal from '../components/Modal.vue';           // Vue
import SvelteTimer from '../components/Timer.svelte';     // Svelte
---

<ReactCounter client:load />
<VueModal client:visible />
<SvelteTimer client:idle />

Как это работает технически

Каждая интеграция регистрирует renderer — объект с методами check, renderToStaticMarkup и renderToString. Во время сборки Astro вызывает нужный renderer для серверного рендеринга (SSR/SSG). В браузере каждая интеграция добавляет маленький runtime — гидратационный код для своего фреймворка. React runtime, Vue runtime и Svelte runtime грузятся независимо и не конфликтуют.

Директивы client:* управляют гидратацией

  • client:load — гидратировать немедленно при загрузке страницы.
  • client:idle — гидратировать, когда браузер освободится (requestIdleCallback).
  • client:visible — гидратировать, когда элемент появится во viewport (IntersectionObserver).
  • client:media="(max-width: 768px)" — гидратировать при совпадении media query.
  • client:only="react" — пропустить серверный рендеринг, рендерить только в браузере.

Ограничения на вложенность

Компонент одного фреймворка не может рендерить компонент другого фреймворка как дочерний напрямую. Но можно вложить их через Astro-компонент-прослойку или передать HTML через слоты.

---
// НЕЛЬЗЯ: React-компонент не знает о Vue
import VueComp from './VueComp.vue';
// Внутри React-компонента нельзя использовать <VueComp />

// МОЖНО: вложенность через .astro
import ReactCard from './Card.tsx';
import VueTooltip from './Tooltip.vue';
---
<ReactCard client:load>
  <!-- slot-контент рендерится как статический HTML -->
  <VueTooltip client:visible />
</ReactCard>

Подводные камни

  • Раздутый бандл — каждый фреймворк добавляет свой runtime; если на одной странице React + Vue + Svelte, пользователь скачает три рантайма.
  • Конфликты при одном JSX-трансформере — Solid и React оба используют JSX; нужно настроить include/exclude в конфигурации каждой интеграции, чтобы они не перехватывали файлы друг друга.
  • client:only требует указания фреймворка — без аргумента (client:only без ="react") Astro не знает, какой runtime загрузить.
  • Общее состояние невозможно напрямую — React-компонент и Vue-компонент не могут использовать один React Context или Vue provide/inject; нужен Nano Stores или другое framework-агностичное решение.
  • HMR может ломаться — при одновременном использовании нескольких фреймворков горячая перезагрузка иногда требует полного обновления страницы.
  • SSR-только компоненты — без директивы client:* компонент рендерится только на сервере и не интерактивен; это нормально для статического контента, но легко забыть.
  • Версии peer-зависимостей — интеграция @astrojs/react 4.x требует React 18/19; смешивание несовместимых версий ломает сборку.

Частые вопросы на собеседовании

  • В чём разница между статическим режимом вывода (static output mode) и SSR (server) режимом в Astro?
  • Что такое Astro и какую проблему он решает? В чём его основная философия?
  • Что такое Islands Architecture? Как Astro её реализует?
  • Как Astro работает с контентом? Что такое Content Collections API?

Типичные ошибки

  • Подключать несколько фреймворков без необходимости и платить рантаймами за каждый.
  • Ожидать, что React Context дойдёт до другого React-острова на той же странице.
  • Вкладывать гидрированный React в гидрированный Vue.

Что проверяет интервьюер

  • Знает про интеграции и их роль (renderer + client entrypoint).
  • Понимает ограничения совместного использования (нет общего контекста).
  • Аргументирует, когда смешивать стеки оправдано.

Как вы знаете этот вопрос?

Проверить себя по теме Astro →

Источники

  • https://docs.astro.build/en/guides/framework-components/
  • https://docs.astro.build/en/guides/integrations-guide/

Связанные темы

Astroarchitecture-trade-offsbundle-managementframework-integration