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

+1 793новые вакансии за сутки·93 582вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python16 845
  • Облачные технологии13 177
  • QA вакансии3 434
  • Backend вакансии2 084
  • Инженер данных1 685
  • Продакт-менеджер1 179

Разработка

  • Android1 845
  • iOS1 689
  • Fullstack вакансии960
  • AI вакансии950
  • Frontend вакансии736
  • Mobile вакансии44

По стеку

  • Go8 619
  • Java6 379
  • Node.js1 971
  • .NET1 640
  • Kotlin1 599
  • Rust1 443
  • PHP670
  • C#650
  • C++536

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

  • Kubernetes7 304
  • DevOps вакансии5 865
  • Linux-инфраструктура5 290
  • Terraform / IaC4 016
  • CI/CD2 991
  • Мониторинг и Observability1 734
  • SRE550
  • Кибербезопасность413

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

  • Data Scientist1 054
  • Бизнес-аналитик868
  • Аналитик данных834
  • Системный аналитик134

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

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

По регионам

  • Вакансии в США45 360
  • Вакансии в Европе22 405
  • Вакансии в Канаде4 485
  • Работа в России3 897

По формату

  • Удалённые вакансии75 381
  • Релокация в США45 357
  • Гибридная работа12 010
  • Офисная работа7 029

По уровню

  • Senior вакансии42 335
  • Middle вакансии20 999
  • Junior вакансии6 760

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

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab139 вакансий
  • Celonis40 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

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

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

Что такое View Transitions в Astro и как их включить?

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

View Transitions — API браузера для анимированных переходов между страницами без полной перезагрузки. В Astro включаются добавлением компонента <ViewTransitions /> в <head> layout и директив transition:* на элементах.

Включение View Transitions

Достаточно импортировать компонент ViewTransitions и поместить его в <head> базового layout:

---
// src/layouts/BaseLayout.astro
import { ViewTransitions } from 'astro:transitions';
---
<html lang="ru">
  <head>
    <meta charset="UTF-8" />
    <title>Мой сайт</title>
    <ViewTransitions />
  </head>
  <body>
    <slot />
  </body>
</html>

После этого все навигации между страницами, использующими этот layout, становятся анимированными. По умолчанию применяется анимация fade.

Что такое View Transitions

View Transitions — стандартный браузерный API (Chrome 111+, поддержан через полифил в остальных), позволяющий анимировать переход между двумя состояниями DOM без полной перезагрузки страницы. В Astro это реализовано поверх стандартного API с добавлением маршрутизации на стороне клиента: при клике по ссылке Astro перехватывает навигацию, загружает новую страницу через fetch и применяет CSS-анимацию перехода между старым и новым DOM-деревом.

Именованные переходы с transition:name

Директива transition:name позволяет браузеру плавно «перелетать» конкретный элемент с одной страницы на другую — это называется shared element transition:

---
// src/pages/index.astro
const posts = await getCollection('blog');
---
{posts.map(post => (
  <a href={`/blog/${post.slug}`}>
    <img
      src={post.data.cover}
      alt={post.data.title}
      transition:name={`cover-${post.slug}`}
    />
    <h2 transition:name={`title-${post.slug}`}>{post.data.title}</h2>
  </a>
))}
---
// src/pages/blog/[slug].astro
const { post } = Astro.props;
---
<img
  src={post.data.cover}
  alt={post.data.title}
  transition:name={`cover-${post.slug}`}
/>
<h1 transition:name={`title-${post.slug}`}>{post.data.title}</h1>

Управление анимацией: transition:animate

Директива transition:animate задаёт тип анимации для элемента или всей страницы:

import { slide, fade, none } from 'astro:transitions';

<!-- Весь main скользит при переходе -->
<main transition:animate={slide()}>>
  <slot />
</main>

<!-- Навигация не анимируется -->
<nav transition:animate={none()}>>
  ...
</nav>

<!-- Кастомная анимация -->
<section transition:animate={{
  forwards: {
    old: [{ opacity: 1 }, { opacity: 0 }],
    new: [{ opacity: 0 }, { opacity: 1 }],
    easing: 'ease-in-out',
    duration: '0.3s'
  },
  backwards: {
    old: [{ opacity: 1 }, { opacity: 0 }],
    new: [{ opacity: 0 }, { opacity: 1 }]
  }
}}>

События жизненного цикла

Astro генерирует события на document, которые можно слушать для выполнения JS-логики при переходах:

// src/scripts/analytics.js
document.addEventListener('astro:page-load', () => {
  // Вызывается после каждого перехода и при первой загрузке
  console.log('Страница загружена:', window.location.pathname);
  initAnalytics();
});

document.addEventListener('astro:before-preparation', (event) => {
  // event.from — текущий URL, event.to — целевой URL
  // Можно отменить переход: event.preventDefault()
});

document.addEventListener('astro:after-swap', () => {
  // Новый DOM уже вставлен, но анимация ещё идёт
  restoreFocusState();
});

Директива transition:persist

Элементы с transition:persist сохраняются между переходами без пересоздания — полезно для аудиоплееров, видео, состояния форм:

<video src="/podcast.mp3" transition:persist controls />

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

  • View Transitions поддерживаются нативно только в Chromium-браузерах; Firefox и Safari используют полифил Astro, который работает через fade без CSS-анимаций браузера — визуальный результат отличается.
  • transition:name должен быть уникальным на каждой странице в каждый момент времени — дублирующиеся имена приводят к непредсказуемой анимации или её отсутствию.
  • Скрипты, вставленные через обычные <script>-теги, не перевыполняются при переходе — нужно слушать событие astro:page-load для инициализации JS после навигации.
  • Компоненты React/Vue/Svelte теряют своё состояние при переходе, если не используется transition:persist — это нарушает ожидания при работе с управляемыми формами или другим интерактивным состоянием.
  • Анимации из CSS @keyframes, заданные через transition:animate на элементах с transition:name, могут конфликтовать с браузерным анимированием shared-элементов.
  • Хэш-навигация (#anchor) по умолчанию не запускает View Transition — нужно явно обрабатывать этот случай.
  • При использовании transition:persist на компонентах с серверными пропсами — данные не обновляются при переходе, что приводит к устаревшему содержимому.
  • Если layout-компонент не является общим для обеих страниц, переход между ними не будет иметь анимации — стоит убедиться, что оба маршрута используют одинаковый layout с ViewTransitions.

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

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

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

  • Полагаться, что View Transitions API доступен везде — нужен fallback.
  • Забывать переинициализировать сторонние библиотеки после astro:after-swap.
  • Использовать одинаковые transition:name для не связанных элементов.

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

  • Знает компонент <ClientRouter /> и его роль.
  • Понимает атрибуты transition:name, transition:persist.
  • Помнит про события lifecycle перехода.

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

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

Источники

  • https://docs.astro.build/en/guides/view-transitions/
  • https://docs.astro.build/en/reference/modules/astro-transitions/
←Предыдущий вопросЧто такое компоненты Astro (файлы `.astro`)? Как работает секция frontmatter?Следующий вопрос→Когда выбирать islands/server islands, а когда полноценный SPA/SSR-фреймворк?

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

Astrocss-animationnavigation-designprogressive-enhancement