Статьи

Как (безопасно) использовать плагин jQuery с Vue.js

Не стоит использовать jQuery и Vue.js в одном интерфейсе. Не делай этого, если можешь этого избежать.

Но вы, вероятно, читаете это не потому, что хотите использовать jQuery и Vue вместе, а потому, что должны это делать . Возможно, клиент настаивает на использовании определенного плагина jQuery, который вы не успеете переписать для Vue.

Если вы внимательно относитесь к тому, как вы это делаете, вы можете безопасно использовать jQuery и Vue вместе. В этой статье я собираюсь продемонстрировать, как добавить плагин jQuery UI Datepicker в проект Vue.

И чтобы немного похвастаться, я даже собираюсь отправить данные между этим плагином jQuery и Vue!

Посмотрите, как это работает в этом JS Bin .

jQuery UI Datepicker

Проблема с использованием jQuery и Vue вместе

Почему это потенциально опасно?

Vue — это завистливая библиотека в том смысле, что вы должны позволить ей полностью владеть патчем DOM, который вы ей даете (определяется тем, что вы передаете el). Если jQuery вносит изменения в элемент, которым управляет Vue, скажем, добавляет к чему-либо класс, Vue не будет знать об этом изменении и собирается пойти дальше и перезаписать его в следующем цикле обновления.

Решение: используйте компонент в качестве оболочки

Зная, что Vue и jQuery никогда не собираются делить часть DOM, мы должны сказать Vue оцепить область и передать ее jQuery.

Использование компонента для переноса плагина jQuery выглядит следующим образом:

  • Мы можем использовать ловушки жизненного цикла для настройки и удаления кода jQuery.
  • Мы можем использовать интерфейс компонента для связи с остальной частью приложения Vue через реквизиты и события.
  • Компоненты могут отказаться от обновления с v-once

Настройка jQuery UI Datepicker

Очевидно, что вам нужно сначала включить библиотеки jQuery и jQuery UI в ваш проект. После того, как они у вас есть, DatePicker просто требуется inputэлемент для присоединения к:


JavaScript