1.extends
看看官方文檔怎么寫的骨稿,其實(shí)mixins和extends都可以理解為繼承,mixins接收對(duì)象數(shù)組(可理解為多繼承)匈子,extends接收的是對(duì)象或函數(shù)(可理解為單繼承)兔朦。
const extend = {
data () {
return {
name: 'extend name'
}
}
}
const mixin0 = {
data () {
return {
name: 'mixin0 name'
}
}
}
const mixin1 = {
data () {
return {
name: 'mixin1 name'
}
}
}
// name = 'name'
export default {
mixins: [mixin0, mixin1],
extends: extend,
name: 'app',
data () {
return {
name: 'name'
}
}
}
2.Vue.extend
Vue.extend
返回的是一個(gè)擴(kuò)展實(shí)例構(gòu)造器,也就是預(yù)設(shè)了部分選項(xiàng)的Vue實(shí)例構(gòu)造器柱嫌。其主要用來服務(wù)于Vue.component
。
var extend=Vue.extend({
render:h=>{return(
<div>123</div>
)},
data(){return{
extend:'extend'
}}
});
Vue.component("extend",extend);
3.Vue.component
Vue.component()
會(huì)注冊(cè)一個(gè)全局的組件屯换,其會(huì)自動(dòng)判斷第二個(gè)傳進(jìn)來的是Vue繼續(xù)對(duì)象(Vue.extend
)還是普通對(duì)象({...}
)编丘,如果傳進(jìn)來的是普能對(duì)象的話會(huì)自動(dòng)調(diào)用Vue.extend
。
4.總結(jié)
理解Vue.extend()
和Vue.component()
是很重要的彤悔。由于Vue本身是一個(gè)構(gòu)造函數(shù)(constructor
)嘉抓,Vue.extend()
是一個(gè)繼承于方法的類(class
),參數(shù)是一個(gè)包含組件選項(xiàng)的對(duì)象晕窑。它的目的是創(chuàng)建一個(gè)Vue的子類并且返回相應(yīng)的構(gòu)造函數(shù)抑片。而Vue.component()
實(shí)際上是一個(gè)類似于Vue.directive()
和Vue.filter()
的注冊(cè)方法,它的目的是給指定的一個(gè)構(gòu)造函數(shù)與一個(gè)字符串ID
關(guān)聯(lián)起來杨赤。之后Vue可以把它用作模板敞斋,實(shí)際上當(dāng)你直接傳遞選項(xiàng)給Vue.component()
的時(shí)候,它會(huì)在背后調(diào)用Vue.extend()
疾牲。
5.與mixins
Vue.component 注冊(cè)全局組件,為了方便
Vue.extend 創(chuàng)建組件的構(gòu)造函數(shù),為了復(fù)用
mixins植捎、extends 為了擴(kuò)展
閱讀:
Vue 2.0學(xué)習(xí)筆記:Vue.extend構(gòu)造器的延伸
Vue.extend and Vue.component