Vue中Vue.extend()的使用詳解及說明
Vue Vue.extend()的使用
Vue.extend 屬于 Vue 的全局 API,在實(shí)際業(yè)務(wù)開發(fā)中我們很少使用,因?yàn)橄啾瘸S玫?Vue.component 寫法使用 extend 步驟要更加繁瑣一些。但是在一些獨(dú)立組件開發(fā)場(chǎng)景中,Vue.extend + $mount 這對(duì)組合是我們需要去關(guān)注的。
應(yīng)用場(chǎng)景
在 vue 項(xiàng)目中,初始化的根實(shí)例后,所有頁(yè)面基本上都是通過 router 來管理,組件也是通過 import 來進(jìn)行局部注冊(cè),所以組件的創(chuàng)建不需要去關(guān)注,相比 extend 要更省心一點(diǎn)點(diǎn)。
但是這樣做會(huì)有幾個(gè)缺點(diǎn):
- 組件模板都是事先定義好的,如果我要從接口動(dòng)態(tài)渲染組件怎么辦?
- 所有內(nèi)容都是在 #app 下渲染,注冊(cè)組件都是在當(dāng)前位置渲染。如果我要實(shí)現(xiàn)一個(gè)類似于 window.alert() 提示組件要求像調(diào)用 JS 函數(shù)一樣調(diào)用它,該怎么辦?
- 這時(shí)候,Vue.extend + vm.$mount 組合就派上用場(chǎng)了。
基礎(chǔ)用法
Vue.extend( options )
- 參數(shù):{Object} options
- 用法:使用基礎(chǔ) Vue 構(gòu)造器,創(chuàng)建一個(gè)“子類”。參數(shù)是一個(gè)包含組件選項(xiàng)的對(duì)象;data 選項(xiàng)是特例,需要注意: 在 Vue.extend() 中它必須是函數(shù);
<div id="mount-point"></div>
// 創(chuàng)建構(gòu)造器
var Profile = Vue.extend({
template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
data: function () {
return {
firstName: 'Walter',
lastName: 'White',
alias: 'Heisenberg'
}
}
})
// 創(chuàng)建 Profile 實(shí)例,并掛載到一個(gè)元素上。
new Profile().$mount('#mount-point')
// 結(jié)果如下:
<p>Walter White aka Heisenberg</p>可以看到,extend 創(chuàng)建的是 Vue 構(gòu)造器,而不是我們平時(shí)常寫的組件實(shí)例,所以不可以通過 new Vue({ components: testExtend }) 來直接使用,需要通過 new Profile().$mount(’#mount-point’) 來掛載到指定的元素上。
第二種寫法
可以在創(chuàng)建實(shí)例的時(shí)候傳入一個(gè)元素,生成的組件將會(huì)掛載到這個(gè)元素上,跟 $mount 差不多。
// 1. 定義一個(gè)vue模版
let tem ={
template:'{{firstName}} {{lastName}} aka {{alias}}',
data:function(){
return{
firstName:'Walter',
lastName:'White',
alias:'Heisenberg'
}
}
// 2. 調(diào)用
const TemConstructor = Vue.extend(tem)
const intance = new TemConstructor({el:"#app"}) // 生成一個(gè)實(shí)例,并且掛載在 #app 上總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue項(xiàng)目部署到j(luò)enkins的實(shí)現(xiàn)
本文主要介紹了Vue項(xiàng)目部署到j(luò)enkins的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
解決echarts圖表y軸數(shù)據(jù)間隔過大的問題
這篇文章主要介紹了解決echarts圖表y軸數(shù)據(jù)間隔過大的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Vue 實(shí)現(xiàn)v-for循環(huán)的時(shí)候更改 class的樣式名稱
這篇文章主要介紹了Vue 實(shí)現(xiàn)v-for循環(huán)的時(shí)候更改 class的樣式名稱,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue3?跨域配置devServer的參數(shù)和設(shè)置方法
這篇文章主要介紹了Vue3?跨域配置devServer的參數(shù)和設(shè)置,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
vue elementUi+sortable.js實(shí)現(xiàn)嵌套表格拖拽問題
這篇文章主要介紹了vue elementUi+sortable.js實(shí)現(xiàn)嵌套表格拖拽問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

