Описание тега vue-component

Component is a powerful Vue feature that allows extending basic HTML elements to encapsulate reusable code.

Компоненты - одна из самых мощных функций Vue. Они помогают вам расширить базовые элементы HTML для инкапсуляции кода многократного использования. На высоком уровне компоненты - это настраиваемые элементы, к которым компилятор Vue прикрепляет поведение. В некоторых случаях они также могут отображаться как собственный HTML-элемент, расширенный специальным атрибутом is.

Базовый компонент

Javascript:

// First, we need a vue instance attached to a element
new Vue({ el: '#components-demo' })

// Then we define a new component called "button-counter"
Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  // The template tag is where we write the component markup
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})

HTML:

<div id="components-demo">
  <button-counter></button-counter>
</div>

Затем Vue скомпилирует шаблон в виртуальную DOM, и его вывод будет отображаться в браузере следующим образом:

<div id="components-demo">
  <button>You clicked me 0 times.</button>
</div>

Затем каждый раз, когда вы нажимаете кнопку, Vue будет выполнять count++ что приводит к обновлению переменной count и запуску Vue повторного рендеринга DOM компонента для отображения нового значения:

You have clicked me 1 times.

Источник: https://vuejs.org/v2/guide/components.html