Новое: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 источников: карьерные страницы компаний и джоб-борды.

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

Что такое mixin'ы Vue? Каковы их недостатки по сравнению с composable'ами?

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

Миксин — объект с опциями компонента, подмешиваемый через mixins: []; проблемы: неявный источник данных, конфликты имён, отсутствие параметров. Composable-функции решают все эти проблемы за счёт явного импорта и обычных аргументов.

Что такое миксины Vue

Миксин (mixin) — объект с опциями компонента (data, methods, computed, хуки жизненного цикла), который можно «подмешать» в любой компонент Vue через свойство mixins: []. Опции объединяются по правилам слияния: хуки жизненного цикла вызываются последовательно (сначала миксин, потом компонент), остальные свойства — компонент выигрывает при конфликте.

// mixins/useTimestamp.js
export const timestampMixin = {
  data() {
    return { createdAt: null };
  },
  created() {
    this.createdAt = new Date().toISOString();
  },
  methods: {
    formatDate(date) {
      return new Date(date).toLocaleDateString('ru-RU');
    }
  }
};

// Component.vue
import { timestampMixin } from './mixins/useTimestamp';
export default {
  mixins: [timestampMixin],
  mounted() {
    console.log(this.createdAt);   // доступно из миксина
    console.log(this.formatDate(this.createdAt));
  }
};

Ключевые проблемы миксинов

  • Неявный источник данных. Когда компонент использует несколько миксинов, невозможно сразу понять, откуда взялось свойство this.someValue — нужно смотреть каждый миксин.
  • Конфликты имён. Два миксина с методом reset() — один молча перезапишет другой или будет вызван только один из хуков. Нет явного предупреждения об этом.
  • Невозможно передать параметры. Миксин — статический объект. Нельзя написать createMixin(prefix) стандартным способом без фабрики.
  • Глобальные миксины опасны. Vue.mixin({...}) применяется к каждому компоненту приложения, включая сторонние библиотеки.

Composable-функции как замена

В Vue 3 Composition API логика выносится в обычные функции (composables), которые используют ref, reactive, хуки жизненного цикла внутри setup(). Источник каждого значения явно виден в деструктуризации.

// composables/useTimestamp.js
import { ref, onMounted } from 'vue';

export function useTimestamp(prefix = '') {
  const createdAt = ref(null);

  onMounted(() => {
    createdAt.value = new Date().toISOString();
  });

  function formatDate(date) {
    return `${prefix}${new Date(date).toLocaleDateString('ru-RU')}`;
  }

  return { createdAt, formatDate };
}
// Component.vue  (script setup)
import { useTimestamp } from './composables/useTimestamp';
import { useUserInfo }  from './composables/useUserInfo';

// Конфликт имён невозможен — у каждого своя переменная
const { createdAt, formatDate } = useTimestamp('Создано: ');
const { userId }                = useUserInfo();

Сравнительная таблица

  • Источник данных: миксин — неявный (this.x непонятно откуда); composable — явный (имя переменной из деструктуризации).
  • Параметры: миксин — нет; composable — обычные аргументы функции.
  • Конфликты имён: миксин — молчаливые; composable — невозможны.
  • TypeScript: миксин — слабая поддержка; composable — полная, inference работает из коробки.
  • Тестирование: миксин — нужен компонент-обёртка; composable — вызывается как обычная функция в тесте.

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

  • Миксины с одноимёнными data-полями не выдают ошибку — данные компонента просто перекрывают данные миксина без предупреждения.
  • Хуки жизненного цикла из миксина вызываются до хуков компонента — порядок неочевиден при дебаггинге.
  • Глобальный миксин (app.mixin() в Vue 3) применяется ко всем компонентам, включая те, что внутри node_modules.
  • Composable нельзя вызывать условно или внутри обычной функции — только верхний уровень setup() или другой composable.
  • Если composable возвращает реактивный объект через reactive(), деструктуризация разрушает реактивность — нужен toRefs().
  • Миксины в Vue 3 официально поддерживаются, но не рекомендованы — в будущих мажорных версиях могут быть помечены устаревшими.
  • Циклические зависимости между composable-функциями (A импортирует B, B импортирует A) приводят к runtime-ошибкам, которые сложно отследить.

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

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

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

  • Складывать сквозную бизнес-логику в общий mixin и обнаруживать конфликты имён через полгода.
  • Считать, что mixin даёт изоляцию данных — нет, они сливаются.
  • Пытаться типизировать this для нескольких mixin'ов вручную.
  • Перенести в Vue 3 mixin-первый стиль вместо постепенного перехода на composables.

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

  • Может описать механизм слияния mixins.
  • Знает основные проблемы (имена, типы, неявность).
  • Понимает, что в Vue 3 composables — рекомендованная альтернатива.
  • Видит сценарий миграции: переписывать новые компоненты на composables.

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

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

Источники

  • https://vuejs.org/api/options-composition.html#mixins
  • https://vuejs.org/guide/reusability/composables.html#vs-mixins

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

Vue.jscode-reusemigration-planningvue-fundamentals