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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python5 973
  • Облачные технологии4 523
  • QA вакансии1 689
  • Android1 143
  • Инженер данных788
  • Продакт-менеджер308

Разработка

  • iOS1 093
  • Backend вакансии1 020
  • Fullstack вакансии448
  • AI вакансии378
  • Frontend вакансии369
  • Mobile вакансии27

По стеку

  • Go3 345
  • Java2 037
  • Kotlin908
  • Node.js746
  • Rust492
  • .NET481
  • PHP278
  • C++213
  • C#199

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

  • Kubernetes2 562
  • Linux-инфраструктура2 030
  • DevOps вакансии1 855
  • Terraform / IaC1 548
  • CI/CD876
  • Мониторинг и Observability709
  • SRE229
  • Кибербезопасность40

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

  • Аналитик данных479
  • Data Scientist443
  • Бизнес-аналитик342
  • Системный аналитик50

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

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

По регионам

  • Вакансии в США24 039
  • Вакансии в Европе9 373
  • Работа в России2 968
  • Вакансии в Канаде2 114

По формату

  • Удалённые вакансии41 595
  • Релокация в США24 039
  • Гибридная работа5 209
  • Офисная работа3 834

По уровню

  • Senior вакансии22 591
  • Middle вакансии12 174
  • Junior вакансии4 013

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

Все компании
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise81 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify17 вакансий
  • Celonis14 вакансий
  • UiPath13 вакансий
  • Adyen9 вакансий

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

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

В чём разница между функциями load в +page.ts и +page.server.ts?

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

+page.ts выполняется и на сервере (SSR) и в браузере (навигация), не имеет доступа к locals/cookies/БД. +page.server.ts работает только на сервере, имеет доступ к locals, cookies, секретам и может экспортировать Form Actions.

+page.ts — универсальный загрузчик

  • Выполняется на сервере при SSR (первый запрос) и в браузере при клиентской навигации.
  • Имеет доступ к fetch (уже настроенному SvelteKit для правильной обработки cookie/credentials), params, url, route, data (от layout).
  • НЕ имеет доступа к locals, cookies, переменным из $env/static/private.
  • Подходит для запросов к публичным API без авторизации.
// src/routes/products/+page.ts
import type { PageLoad } from './$types';

export const load: PageLoad = async ({ fetch, url }) => {
  const page = url.searchParams.get('page') ?? '1';
  // fetch здесь — это SvelteKit-обёртка, работающая и на сервере и в браузере
  const res = await fetch(`/api/products?page=${page}`);
  const products = await res.json();
  return { products };
};

load в +page.ts vs +page.server.ts

Оба файла экспортируют функцию load, которая возвращает данные для +page.svelte через проп data. Ключевое различие — где и когда они выполняются.

+page.server.ts — серверный загрузчик

  • Выполняется только на сервере — при SSR и при каждой клиентской навигации (через внутренний fetch к серверу).
  • Имеет доступ к locals (пользователь из handle()), cookies, platform (Cloudflare Workers env), секретным переменным окружения.
  • Может напрямую обращаться к БД, файловой системе, внутренним сервисам.
  • Дополнительно экспортирует actions для обработки форм.
// src/routes/account/+page.server.ts
import { redirect, error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';

export const load: PageServerLoad = async ({ locals, cookies }) => {
  // locals.user — установлен в hooks.server.ts
  if (!locals.user) {
    throw redirect(303, '/login');
  }

  // Прямой запрос к БД — возможен только здесь
  const orders = await db.orders.findByUser(locals.user.id);
  const sessionInfo = cookies.get('session');

  return { user: locals.user, orders };
};

Совместное использование

Оба файла могут существовать одновременно. Данные мёржатся: +page.ts получает data из серверного загрузчика через параметр parent().

// +page.server.ts
export const load = async ({ locals }) => {
  return { user: locals.user }; // Только сервер
};

// +page.ts
export const load = async ({ fetch, parent }) => {
  const { user } = await parent(); // Данные из server load
  const posts = await fetch('/api/posts').then(r => r.json());
  return { posts }; // Мёржится с { user }
};

Таблица сравнения

  • Где выполняется: .ts — сервер + браузер; .server.ts — только сервер
  • locals/cookies: .ts — нет; .server.ts — да
  • Прямой доступ к БД: .ts — нет; .server.ts — да
  • fetch к публичным API: .ts — да; .server.ts — да
  • Form actions: .ts — нет; .server.ts — да
  • Повторный вызов при навигации: .ts — в браузере; .server.ts — через сервер

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

  • Если используется только +page.ts и в нём делается запрос к защищённому API, при клиентской навигации cookie может не передаться корректно — используйте +page.server.ts для чувствительных данных.
  • parent() в +page.ts ждёт завершения +page.server.ts и layout загрузчиков — это блокирует параллелизм; не вызывайте parent() если данные не нужны немедленно.
  • При наличии обоих файлов TypeScript тип PageData объединяет оба возвращаемых значения — убедитесь, что нет конфликтующих ключей.
  • В +page.server.ts данные сериализуются из сервера в браузер через devalue — Map, Set, Date поддерживаются, но кастомные классы — нет.
  • +page.ts с export const ssr = false будет выполняться только в браузере — это полезно для страниц с клиентским состоянием, но убивает SEO.
  • Функция fetch внутри +page.ts при SSR делает внутренний запрос к серверу SvelteKit — это накладные расходы; для серверных данных предпочитайте +page.server.ts с прямым вызовом.

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

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

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

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

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

Проверить себя по теме Svelte / SvelteKit →

Источники

  • https://svelte.dev/docs/kit/load
  • https://svelte.dev/docs/kit/routing
←Предыдущий вопросКак работает файловая маршрутизация в SvelteKit? Что такое `+page.svelte`, `+layout.svelte`, `+page.server.ts`?Следующий вопрос→В каких типах frontend-проектов Svelte / SvelteKit даёт реальный выигрыш, а где будет избыточен или неудачен?

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

Svelte / SvelteKitdata-fetchingsecurity-boundaries

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

  • Что такое SvelteKit и что он добавляет поверх Svelte?
  • Что такое система runes в Svelte 5 ($state, $derived, $effect, $props)? Как она заменяет старую модель реактивности?
  • Что такое stores в Svelte? Объясните writable, readable и derived stores.
  • Как реализовать аутентификацию в SvelteKit?