Валидация на сервере каждого поля формы с использованием Vue. Оптимальное решение?
Подумайте в сторону универсального компонента для инпута.
Что-то такое:<template>

    <input type="text"
      :placeholder="placeholder"
      :value="value"
      @input="onchange">
    <app-transition type="toggleDown">
      <div>{{ notify }}</div>
    </app-transition>
</template>

<script>
  export default {
    name: 'app-input',
    props: ['type', 'value', 'placeholder'],
    computed: {
      notify() {
        let text = 'Поле может содержать только ';
        return ( this.type === 'tel' &&  text + 'цифры' )
            || ( this.type === 'page' && text + 'латинские буквы, цифры (не менее 6 символов)' )
            || ( this.type === 'name' && text + 'русские и латинские буквы, цифры (не менее 3 символов)' )
      },
      validation(value) {
        return {
          tel: (/^[0-9]+$/).test(this.value) || !this.value.length,
          page: (/^[a-z0-9]+$/i).test(this.value) && this.value.length > 5,
          name: (/^[a-zа-яA-ZА-Я0-9 ]+$/i).test(this.value) && this.value.length > 3
        }
      }
    },
    methods: {
      onchange(e) {
        if ( this.validation[this.type] ) {
          this.$emit('input', e.target.value);
        }
      }
    }
  }
</script>
Если нужно по каждому изменению в поле отправлять данные на сервер, то я бы тоже посмотрел в сторону отдельного поля-компонента, который может работать с сервером. В компоненте на изменение поля, через debounce отправляете данные на сервер, ловите ответ и обрабатываете его как нужно в компоненте, показывая ошибки и т.п. 
Так вы сможете потом вставить этот компонент в любое место, указав в качестве входного параметра адрес куда отправлять данные из этого поля.