Функции jQuery в компонентах Vue в Quasar-Framework - PullRequest
0 голосов
/ 04 декабря 2018

Я новичок в разработке веб-приложений, и у меня есть несколько базовых запросов о jQuery и Vue, ответы на которые я просто не могу найти.У меня есть приложение, выполненное в Quasar-Framework, которое часто использует функциональные ссылки, такие как:

- {{ $t("refer to some variable in another Vue component") }}
- $v.form.username.$touch
- $customVueComponent
- this.$q

и т. Д.Они используются как в разделах «template», так и в «script» компонентов Vue.Я знаком с Javascript (или так мне показалось), но мало что знаю о jQuery.Насколько я понимаю, эти функциональные ссылки встроены в jQuery и каким-то образом ссылаются на некоторую внутреннюю функциональность.

Было бы замечательно, если бы кто-то мог объяснить, что именно означают эти ссылки $, как они работают, какиспользовать их и если есть полный список этих функций для ссылки.

Большое спасибо

1 Ответ

0 голосов
/ 04 декабря 2018

Я не эксперт, но некоторое время я работал с vuejs, jquery и quasar, поэтому думаю, что смогу помочь вам с некоторыми вашими сомнениями.

О jQuery и VueJS

Сначала я хотел бы сказать, что использование jQuery с VueJS обычно считается плохой практикой для разработчиков VueJS (вы можете использовать его, если оба не касаются одних и тех же вещей, особенно событий, DOM ичто вы считаете, что ДОЛЖНЫ использовать его для определенной части вашего приложения).

Причина этого в том, что работа Vue создает конфликты с манипулированием JQuery DOM и событиями.Жизненный цикл VueJS работает таким образом, что DOM, к которому подключен Vue, довольно часто обновляется, чтобы соответствовать определению экземпляра (реактивность. Это означает, что jQuery может потерять отслеживание событий, связанных внутри этого контекста, что приведет к плохой синергии между ними.

Другое дело, что практически все, что вы можете сделать с jQuery, вы уже можете делать с помощью Vue + plain Javascript, поэтому я рекомендую использовать jQuery только в том случае, если вы обнаружите, что это необходимо, как это уже было на этой старой веб-странице, которую вы разрабатываете, илипотому что вы должны использовать определенный плагин jQuery в уже Vue-приложении. Для этого вам нужно будет создать отдельные компоненты для каждой функциональности, которую вы хотите воспроизвести с помощью вашего плагина jQuery, с комбинацией реквизита, данных, смонтированных и наблюдаемых, в основномОбновление плагина вручную.

О знаке $

Итак, об этом знаке $. Это нормально, что вы спутали его с jQuery как '$' в ранее упомянутомJavascript Framework, работает как сокращение Fили jQuery.

Например, вы можете либо:

jQuery("#test").val()

, либо просто сделать это вместо этого ...

$("#test").val()

Так что это для jQuery.

знак $ в VueJS и Quasar

Этот знак $ используется перед именем свойств или методов, которые по умолчанию имеют экземпляры и компоненты vue.

Если вы использовали vue в течение некоторого времени, вы заметили бы, что если вы хотите получить ссылку для определенной части DOM или для компонента, вы должны установить для него ссылку, а затем вызвать ее, используя свойство $ refsВаш экземпляр Vue.Это свойство $ refs является базовым свойством экземпляров Vue.

Есть и другие, такие как $ data, $ options, $ el, $ emit, $ watch и т. Д. Вы можете найти больше связанных с этими свойствами и какVueJS использует проксирование для таких вещей, как $ data, в этой статье .

Поскольку Quasar - это среда VueJS, и мы знаем, что использование jQuery в VueJS обычно не считается хорошей практикой, мы можемсмело предполагайте, что разработчики Quasar используют этот символ для чего-то другого, а не для вызовов jQuery.Нечто подобное названию прототипов / базовых объектов .

В приведенном вами примере

  • $ t часто используется для Vue-i18n , плагин интернационализации.Вы можете увидеть об этом на странице Квазара здесь
  • $ v используется для Vuelidate , плагина для валидации в формах.В документации Quasar есть страница, посвященная этому здесь .
  • $ q - базовый объект квазара, где вы можете вызывать из них определенные плагины, такие как Notify:

    this. $ Q.notify.create ('Danger, Will Robinson! Danger!')

Вы также можете установить sessionStorage, localStorage и вызывать другие прототипы, которыевпрыскивается как сказано здесь .

tl; dr: $ используется в jQuery для отмены вызова jQuery.jQuery и Vuejs вместе обычно считаются плохой практикой, но это можно сделать.Quasar - это фреймворк VueJS, поэтому он разработан с использованием Vuejs + plain Javascript.Свойства с '$' в начале их имени являются свойствами прототипа, методами и объектами из VueJS и Quasar, которые повторяются в каждом экземпляре Vue и страницах Quasar и имеют такую ​​цель, как легкий доступ к данным компонента, вызов плагина илиизлучение и событие в родительский компонент.

...