Это достаточно просто, но я не получаю ответа, который мне нужен из документации. Я изучаю Vue.js, и я действительно не понимаю, где Vue.extend подходит. Я получаю Vue.component, но я не вижу, что Vue.extend делает, что Vue.component не делает, Это всего лишь устаревшая функция от 1.0? Если нет, то где это полезно в Vue 2.0?
Что такое Vue.extend?
Ответ 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 пытается обеспечить как максимальную гибкость.