Что такое Vue.extend?

Это достаточно просто, но я не получаю ответа, который мне нужен из документации. Я изучаю Vue.js, и я действительно не понимаю, где Vue.extend подходит. Я получаю Vue.component, но я не вижу, что Vue.extend делает, что Vue.component не делает, Это всего лишь устаревшая функция от 1.0? Если нет, то где это полезно в Vue 2.0?

Ответ 1

Я думаю, что путаница заключается в том, что extend & component тесно связаны. Чтобы создать компонент, вызовы Vue расширяются внутри:

// register an options object (automatically call Vue.extend)
Vue.component('my-component', { /* ... */ })

Поэтому вы можете использовать расширение для монтирования подкласса базового конструктора Vue (конструктор компонента): https://vuejs.org/v2/api/#Vue-extend

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

Поэтому Extend на самом деле не является "устаревшей" функцией, она является центральной для компонентов Vue, но добавленный сахар, который предоставляет компоненты, делает их по умолчанию, как вы будете работать.

Ответ 2

Там руководство на предыдущем сайте Vuejs.org имело документ.

Скопируйте файл http://optimizely.github.io/vuejs.org/guide/composition.html, который разворачивается из vuejs/Vuejs.org в версии 0.10.6 из Vuejs.

Важно понимать разницу между Vue.extend() и Vue.component(). Поскольку сам Vue является конструктором, Vue.extend() является методом наследования класса. Его задача - создать подкласс Vue и вернуть конструктор. Vue.component(), с другой стороны, это метод регистрации активов, аналогичный Vue.directive() и Vue.filter(). Его задача - связать заданный конструктор с идентификатором строки, чтобы Vue.js мог забрать его в шаблонах. При прямом переходе в опции Vue.component() он вызывает Vue.extend() под капотом.

Vue.js поддерживает две различные парадигмы API: основанный на классе, обязательный, API-интерфейс Backbone и API-интерфейс, основанный на разметке, декларативный интерфейс Web Components. Если вы смущены, подумайте о том, как создать элемент изображения с помощью new Image() или с <img>. Каждый из них полезен сам по себе, и Vue.js пытается обеспечить как максимальную гибкость.