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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 131
  • Облачные технологии14 071
  • QA вакансии3 448
  • Backend вакансии2 116
  • Инженер данных1 783
  • Продакт-менеджер1 222

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии990
  • AI вакансии951
  • Frontend вакансии749
  • Mobile вакансии44

По стеку

  • Go8 685
  • Java6 537
  • Node.js2 024
  • .NET1 723
  • Kotlin1 612
  • Rust1 462
  • C#710
  • PHP682
  • C++574

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

  • Kubernetes7 766
  • DevOps вакансии6 046
  • Linux-инфраструктура5 493
  • Terraform / IaC4 271
  • CI/CD3 241
  • Мониторинг и Observability1 790
  • SRE564
  • Кибербезопасность445

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

  • Data Scientist1 120
  • Бизнес-аналитик913
  • Аналитик данных834
  • Системный аналитик150

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

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

По регионам

  • Вакансии в США44 437
  • Вакансии в Европе23 855
  • Вакансии в Канаде4 483
  • Работа в России3 904

По формату

  • Удалённые вакансии75 212
  • Релокация в США44 436
  • Гибридная работа12 388
  • Офисная работа7 092

По уровню

  • Senior вакансии41 717
  • Middle вакансии20 190
  • Junior вакансии6 562

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Как работает файловая маршрутизация в Astro? Как создавать динамические маршруты?

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

Каждый файл в src/pages/ становится маршрутом: статические файлы — напрямую, динамические сегменты задаются через [param].astro и требуют getStaticPaths() в SSG; spread-маршруты [...slug].astro ловят любую вложенность.

Динамические маршруты

Сегмент в квадратных скобках создаёт динамический параметр. В режиме SSG обязателен getStaticPaths():

---
// src/pages/blog/[slug].astro
export async function getStaticPaths() {
  const posts = [
    { slug: 'hello-world', title: 'Hello World' },
    { slug: 'astro-routing', title: 'Маршрутизация в Astro' },
  ];

  return posts.map(post => ({
    params: { slug: post.slug },
    props:  { title: post.title },
  }));
}

const { slug } = Astro.params;  // 'hello-world'
const { title } = Astro.props;  // 'Hello World'
---

<h1>{title}</h1>

Файловая маршрутизация в Astro

Astro использует файловую систему как единственный источник маршрутов. Каждый файл в директории src/pages/ становится маршрутом. Это работает для .astro, .md, .mdx, а также .ts/.js для API-маршрутов.

Статические маршруты

  • src/pages/index.astro → /
  • src/pages/about.astro → /about
  • src/pages/blog/index.astro → /blog
  • src/pages/blog/first-post.md → /blog/first-post

Spread-маршруты (catch-all)

[...slug].astro перехватывает любое количество сегментов пути:

---
// src/pages/docs/[...slug].astro
export async function getStaticPaths() {
  return [
    { params: { slug: 'getting-started' } },           // /docs/getting-started
    { params: { slug: 'guides/installation' } },        // /docs/guides/installation
    { params: { slug: undefined } },                    // /docs/
  ];
}

const { slug } = Astro.params; // 'guides/installation'
---

API-маршруты (Endpoints)

Файлы .ts и .js в src/pages/ становятся API-эндпоинтами:

// src/pages/api/users/[id].ts
import type { APIRoute } from 'astro';

export const GET: APIRoute = async ({ params, request }) => {
  const userId = params.id;
  const user = await fetchUser(userId);

  if (!user) {
    return new Response(JSON.stringify({ error: 'Not found' }), {
      status: 404,
      headers: { 'Content-Type': 'application/json' },
    });
  }

  return new Response(JSON.stringify(user), {
    headers: { 'Content-Type': 'application/json' },
  });
};

export const POST: APIRoute = async ({ request }) => {
  const body = await request.json();
  // ...
  return new Response(JSON.stringify({ success: true }));
};

Редиректы в конфиге

// astro.config.mjs
export default defineConfig({
  redirects: {
    '/old-blog': '/blog',
    '/old-blog/[slug]': '/blog/[slug]',
  },
});

Приоритет маршрутов

При конфликте маршрутов Astro применяет порядок приоритетов: статические > динамические с параметром > spread-маршруты. Например, /blog/about совпадёт со статическим about.astro, а не с [slug].astro.

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

  • Забытый getStaticPaths — динамический маршрут без этой функции в SSG-режиме вызовет ошибку сборки.
  • Регистр имён файлов — файловая система macOS нечувствительна к регистру, Linux — чувствительна; About.astro и about.astro могут конфликтовать в production.
  • Spread undefined для корня — [...slug].astro не перехватит /docs/ без явного { slug: undefined } в getStaticPaths.
  • API-маршруты и CORS — CORS-заголовки не добавляются автоматически; нужно возвращать их в каждом Response.
  • Конфликт .astro и .md маршрутов — если существуют /blog.astro и /blog/index.md одновременно, один из маршрутов будет проигнорирован.
  • Динамические маршруты в SSR — в режиме output: 'server' getStaticPaths не нужен, но Astro.params может быть undefined, если маршрут обращается к несуществующему параметру.
  • Вложенные динамические сегменты — [category]/[slug].astro работает, но оба параметра должны быть в одном файле; создание отдельных файлов для каждого уровня не поддерживается.

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

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

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

  • Забыть getStaticPaths() в статическом режиме и удивляться ошибке билда.
  • Не учитывать приоритет статического маршрута над динамическим.
  • Возвращать огромный массив путей без пагинации и убивать время билда.

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

  • Понимает соответствие файл -> URL.
  • Знает синтаксис [param] и [...rest].
  • Умеет объяснить разницу маршрутизации в static и server режимах.

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

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

Источники

  • https://docs.astro.build/en/guides/routing/
  • https://docs.astro.build/en/reference/routing-reference/
←Предыдущий вопросЧто такое глобальный объект `Astro`? Какие свойства и методы он предоставляет?Следующий вопрос→Что такое `getStaticPaths()` и когда он обязателен?

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

Astroroute-modelingstatic-renderingurl-design