Vue .use против Vue .компонента на root Vue компоненте - PullRequest
1 голос
/ 11 апреля 2020

Vue.use делает функциональность глобальной, а вызов Vue.component в компоненте root Vue (обычно app.vue) имеет тот же эффект. Я видел пример приложения, использующего оба (много вызовов Vue.component и Vue.use в root js). Гуглил, но не вижу ничего, объясняющего этот паттерн.

В чем (тонкая) разница?

1 Ответ

1 голос
/ 12 апреля 2020

Для начала см .:

https://vuejs.org/v2/api/#Vue -компонент
https://vuejs.org/v2/api/#Vue -использование

Это немного неопределенно сказать «сделать функциональность глобальной» . Необходимо более четко определить, что это означает в каждом случае.

Vue.component используется для регистрации компонента во всем мире. Это делает его доступным в шаблонах с указанным именем. Таким образом, Vue.component('rainbow', componentDefinition) позволит вам использовать <rainbow> во всех ваших шаблонах без необходимости явно импортировать его в эти компоненты. Для получения дополнительной информации о различных способах регистрации компонентов см .:

https://vuejs.org/v2/guide/components-registration.html

Vue.use используется для вызова плагина. По сути, плагин - это просто функция JavaScript, и он может делать все, что захочет. Эта функция может регистрировать компоненты (используя Vue.component), но многие плагины делают другие вещи, например, регистрируют директивы или добавляют глобальные миксины.

Вполне возможно, что в примере приложения, которое вы изучаете, плагины - это все регистрация компонентов, что создает впечатление, что Vue.use во многом совпадает с Vue.component. Если это так, это просто совпадение. Я предлагаю вам взглянуть на исходный код некоторых плагинов, чтобы получить более полное представление о том, что они делают и как они работают.

Как правило, используются Vue.component и Vue.use в главном файле точки входа для вашего приложения. Скорее всего, это будет называться как main.js. Они могут не вызываться напрямую, например, плагин может вызывать Vue.component, но глобальный характер их результатов обычно заставляет делать все такие вызовы до запуска самого приложения с помощью new Vue.

* 1042. * Если у вас есть Vue.component или Vue.use вызовы внутри .vue файла, это говорит о том, что вы делаете что-то не так, даже если это app.vue. Файл .vue должен просто экспортировать компонент, он не должен иметь глобальных побочных эффектов, таких как регистрация компонентов.
...