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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

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

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

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

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

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

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Как интегрируется Pinia в Nuxt 3? Как сохранить состояние store между SSR и клиентом?

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

Pinia подключается через модуль @pinia/nuxt. Для гидрации SSR→клиент state передаётся через payload Nuxt автоматически; для persistence используют pinia-plugin-persistedstate с SSR-safe опциями.

Подключение Pinia в Nuxt 3

Установите модуль и добавьте его в конфиг:

npm install pinia @pinia/nuxt
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@pinia/nuxt'],
});

После этого все store-файлы из stores/ становятся авто-импортируемыми. Функция defineStore тоже авто-импортируется — дополнительных импортов в компонентах не нужно.

Создание store

// stores/user.ts
export const useUserStore = defineStore('user', () => {
  const user = ref<{ id: number; name: string } | null>(null);
  const isLoggedIn = computed(() => user.value !== null);

  async function fetchUser(id: number) {
    const data = await $fetch(`/api/users/${id}`);
    user.value = data;
  }

  function logout() {
    user.value = null;
  }

  return { user, isLoggedIn, fetchUser, logout };
});

Использование store в компонентах и composables

// components/UserProfile.vue
<script setup lang="ts">
const userStore = useUserStore();
await userStore.fetchUser(1);
</script>

SSR-гидрация: как работает автоматически

Nuxt передаёт состояние Pinia через useNuxtApp().payload. При SSR-рендере store заполняется на сервере, сериализуется в HTML (в тег <script id="__NUXT_DATA__">), и клиент гидрирует его без повторных запросов. Это работает «из коробки» — вручную ничего сериализовать не нужно.

Инициализация store на сервере через plugins

// plugins/pinia-init.server.ts
export default defineNuxtPlugin(async () => {
  const userStore = useUserStore();
  // Заполняем store данными при каждом SSR-запросе
  const event = useRequestEvent();
  const token = getCookie(event, 'auth_token');
  if (token) {
    await userStore.fetchUser(/* decode token -> id */);
  }
});

Persist состояния между сессиями (localStorage)

npm install @pinia-plugin-persistedstate/nuxt
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@pinia/nuxt', '@pinia-plugin-persistedstate/nuxt'],
});
// stores/cart.ts
export const useCartStore = defineStore('cart', () => {
  const items = ref<CartItem[]>([]);
  return { items };
}, {
  persist: {
    storage: piniaPluginPersistedstate.localStorage(),
    // На сервере localStorage недоступен — плагин автоматически пропускает
  },
});

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

  • Singleton store на сервере: при SSR каждый запрос должен получать свой экземпляр Pinia. @pinia/nuxt создаёт его через useNuxtApp().$pinia — не обращайтесь к store вне контекста Nuxt-плагина или composable.
  • localStorage на сервере: localStorage недоступен при SSR. Если используете persist, убедитесь что плагин поддерживает SSR-режим, иначе получите ReferenceError.
  • useStore вне setup(): вызов store за пределами setup() или Nuxt-плагина вызовет ошибку «no active Pinia». Инициализируйте store только внутри composable-функций.
  • Дублирование fetch: если store инициализируется в плагине на сервере и ещё раз в компоненте через useAsyncData, данные будут запрошены дважды. Проверяйте состояние store перед повторным fetch.
  • Гидрация несоответствий: если сервер и клиент возвращают разные данные (таймзоны, random), React получит mismatch-ошибку. Store должен давать детерминированные данные при SSR.
  • Circular imports: store может импортировать другой store через actions — следите за цикличными зависимостями, они приводят к undefined в runtime.

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

  • В чём разница между composable'ами useAsyncData и useFetch?
  • Что такое useState() в Nuxt и чем он отличается от Vue ref()?
  • Что такое серверный движок Nitro в Nuxt 3 и что он обеспечивает?
  • Что такое Nuxt и какие проблемы он решает по сравнению с обычным Vue.js-приложением?

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

  • Путать Pinia in Nuxt с похожим API из соседнего фреймворка.
  • Не объяснять, где код выполняется: сервер, клиент, build step или runtime.
  • Игнорировать влияние на hydration, cache, bundle size или безопасность.

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

  • Точно объясняет назначение механизма «Pinia in Nuxt».
  • Показывает корректный минимальный пример без выдуманных API.
  • Называет ограничения, failure modes и production-компромиссы.

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

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

Источники

  • https://nuxt.com/docs/3.x/guide/concepts/modules
  • https://nuxt.com/docs/3.x/api/composables/use-state
←Предыдущий вопросКак Nuxt 3 работает с TypeScript? Какая конфигурация требуется?

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

Nuxtssr-safetystate-management