在 Vue 中,通過 extend 函數(shù)可以創(chuàng)建一個(gè)新的 Vue 子類,通過該子類來實(shí)例化 Vue 組件。extend 函數(shù)可以接收一個(gè)對(duì)象作為參數(shù),該對(duì)象包含了組件的全部選項(xiàng),也可以繼承父組件的選項(xiàng),這在組件庫(kù)的開發(fā)中非常有用。
Vue.extend({ props: { name: String }, methods: { greet: function () { console.log('Hello, ' + this.name + '!') } } })
上述代碼中,通過 extend 函數(shù)創(chuàng)建了一個(gè)子組件,包含了一個(gè) name 屬性和一個(gè) greet 方法。
var SubVue = Vue.extend({ props: { name: String }, methods: { greet: function () { console.log('Hello, ' + this.name + '!') } } }) var sub = new SubVue({ propsData: { name: 'Vue' } }) sub.$mount('#app')
使用 extend 函數(shù)創(chuàng)建的子組件可以通過 new 操作符實(shí)例化出來,并且也可以像普通的 Vue 組件一樣進(jìn)行使用。在實(shí)例化時(shí),可以通過 propsData 選項(xiàng)來傳遞 props 數(shù)據(jù)。
除了繼承父組件選項(xiàng)外,extend 函數(shù)還可以接收一個(gè)新的對(duì)象作為參數(shù),用于擴(kuò)展子組件的選項(xiàng)。
Vue.extend({ props: { name: String } }, { methods: { greet: function () { console.log('Hello, ' + this.name + '!') } } })
上述代碼中,通過在第二個(gè)參數(shù)中添加一個(gè)新的 methods 選項(xiàng),來擴(kuò)展子組件的選項(xiàng)。
在組件庫(kù)的開發(fā)中,可以通過 extend 函數(shù)創(chuàng)建多個(gè)類似的組件,來提高開發(fā)效率。