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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python7 042
  • Облачные технологии5 085
  • QA вакансии1 814
  • Android1 199
  • Инженер данных831
  • Продакт-менеджер339

Разработка

  • iOS1 135
  • Backend вакансии1 131
  • Fullstack вакансии475
  • AI вакансии458
  • Frontend вакансии404
  • Mobile вакансии27

По стеку

  • Go4 093
  • Java2 435
  • Kotlin990
  • Node.js827
  • Rust665
  • .NET525
  • PHP282
  • C++223
  • C#199

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

  • Kubernetes2 931
  • Linux-инфраструктура2 312
  • DevOps вакансии2 110
  • Terraform / IaC1 714
  • CI/CD872
  • Мониторинг и Observability825
  • SRE253
  • Кибербезопасность50

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

  • Аналитик данных497
  • Data Scientist463
  • Бизнес-аналитик374
  • Системный аналитик54

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

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

По регионам

  • Вакансии в США25 531
  • Вакансии в Европе9 792
  • Работа в России3 193
  • Вакансии в Канаде2 236

По формату

  • Удалённые вакансии43 578
  • Релокация в США25 531
  • Гибридная работа4 289
  • Офисная работа3 340

По уровню

  • Senior вакансии21 650
  • Middle вакансии12 211
  • Junior вакансии3 886

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise125 вакансий
  • Celonis28 вакансий
  • Infobip28 вакансий
  • Spotify24 вакансии
  • Adyen17 вакансий
  • Darktrace17 вакансий
  • Monzo13 вакансий

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

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

Что такое <script setup> и каковы его преимущества перед стандартным Composition API setup?

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

<script setup> — синтаксический сахар над setup(), где всё объявленное автоматически доступно в шаблоне без явного return. Он убирает шаблонный код, улучшает вывод типов и чуть ускоряет компиляцию.

Сравнение с обычным Composition API

Обычный способ с явным возвратом:

<script>
import { ref, computed } from 'vue'

export default {
  setup() {
    const count = ref(0)
    const double = computed(() => count.value * 2)
    function increment() { count.value++ }
    return { count, double, increment }  // обязательно!
  }
}
</script>

С <script setup>:

<script setup>
import { ref, computed } from 'vue'

const count = ref(0)
const double = computed(() => count.value * 2)
function increment() { count.value++ }
// return не нужен
</script>

<template>
  <button @click="increment">{{ count }} (x2 = {{ double }})</button>
</template>

Что такое `<script setup>`

<script setup> — это специальный атрибут блока <script> в однофайловых компонентах Vue 3 (SFC). Во время компиляции содержимое блока превращается в функцию setup(): все переменные, функции и импорты на верхнем уровне автоматически становятся доступны в шаблоне без явного return { ... }.

Преимущества

  • Меньше шаблонного кода — не нужен export default { setup() { return {} } }.
  • Лучший вывод типов TypeScript — компилятор видит переменные напрямую, IDE подсказывает типы в шаблоне.
  • Производительность компилятора — Vite/Vue-компилятор может делать более точный tree-shaking.
  • Автоматическая регистрация компонентов — импортированный компонент сразу доступен в шаблоне.
  • Более чистый scoping — нет случайной утечки переменных через неверный return.

defineProps и defineEmits

Макросы defineProps и defineEmits работают только внутри <script setup> и не требуют импорта:

<script setup lang="ts">
const props = defineProps<{
  title: string
  count?: number
}>()

const emit = defineEmits<{
  (e: 'update', value: number): void
}>()

function send() {
  emit('update', (props.count ?? 0) + 1)
}
</script>

defineExpose

В отличие от обычного setup(), компоненты с <script setup> по умолчанию закрыты для родителей. Чтобы открыть методы через ref, используйте defineExpose:

<script setup>
import { ref } from 'vue'
const inputRef = ref(null)
function focus() { inputRef.value?.focus() }
defineExpose({ focus })
</script>

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

  • Макросы (defineProps, defineEmits, defineExpose, withDefaults) — только внутри <script setup>; вызов снаружи вызовет ошибку компилятора.
  • Нельзя смешивать <script setup> и Options API в одном компоненте (но можно иметь два <script>-блока: один с setup, один без — для inheritAttrs: false и т.п.).
  • Динамические компоненты через переменную (:is="MyComp") работают только если переменная объявлена на верхнем уровне блока.
  • await на верхнем уровне (top-level await) поддерживается, но оборачивает компонент в Suspense — убедитесь, что родитель его предоставляет.
  • Старые инструменты (Vetur, Jest без @vue/vue3-jest) не понимают <script setup> — нужен свежий Volar и соответствующий трансформер.
  • Тип пропсов, объявленных через generic-синтаксис (defineProps<{}>()), не может использовать импортированные типы из других модулей без флага compilerOptions.propsDestructureTransform в Vue < 3.3.
  • Reactive destructuring пропсов потеряет реактивность без toRefs или Vue 3.3+ defineProps destructure.

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

  • Как работает система реактивности Vue? Что изменилось между Vue 2 и Vue 3 (Proxy вместо Object.defineProperty)?
  • Что такое Pinia? Чем она отличается от Vuex и почему является рекомендованным менеджером состояния для Vue 3?
  • Что такое ref() и reactive() в Composition API? Когда использовать каждый?
  • В каких типах frontend-проектов Vue.js даёт реальный выигрыш, а где будет избыточен или неудачен?

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

  • Возвращать что-то вручную (return { x }) — это лишний код, компилятор всё сделал.
  • Импортировать defineProps явно.
  • Пытаться использовать this.
  • Обращаться к локальным переменным извне без defineExpose.

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

  • Может показать минимальный <script setup>-компонент.
  • Знает про автоматический импорт компонентов в шаблон.
  • Понимает связь макросов и SFC-компилятора.
  • Видит ограничение «только в SFC».

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

Проверить себя по теме Vue.js →

Источники

  • https://vuejs.org/api/sfc-script-setup.html
  • https://vuejs.org/guide/typescript/composition-api.html
←Предыдущий вопросКакие production-риски есть у Vue.js: hydration, bundle size, caching, accessibility, browser compatibility или observability?Следующий вопрос→Что такое `v-model` и как он работает под капотом? Как использовать его с кастомными компонентами?

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

Vue.jsdeveloper-ergonomicsTypeScriptvue-fundamentals

Вакансии с этим навыком

TypeScript вакансии
  • Software Engineer, Data Management Platform - Global Ad Technology Supervisory Department (GATD)
  • QA Manager - EC Expansion Development Department (ECEXD)
  • Platform Engineer for AI Native SDLC - Business Support Development Department (BSD)
  • Forward Deployed Engineer (AI Consultant / AI Engineer) - AI Product Development Section , Enterprise Solution Development Department , Group Sales Division (GSD)
  • Internship - Frontend Developer