亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

解讀Vue組件注冊方式

瀏覽:4日期:2022-09-29 15:24:10
目錄概述1 、全局注冊2 、局部注冊3 、模塊系統(tǒng)中局部注冊概述

組件化的概念讓前端頁面開發(fā)有了更清晰的結(jié)構(gòu)。

Vue 中的組件就是一個 Vue 的實例對象。因此,Vue 組件的構(gòu)造選項和 new Vue() 方法構(gòu)造 Vue 實例的構(gòu)造選項是一樣的,其可接收的構(gòu)造選項都是一樣的。除了 el 這樣 根實例 特有的選項。但是,Vue 組件必須得是可以復用的,因此,就必須要求構(gòu)造選項中的 data 選項必須是一個函數(shù),該函數(shù)返回一個對象。

為什么 data 選項是個返回對象的函數(shù)就可以保證組件的可復用性呢?

因為無論是 new Vue() 的方式還是定義 Vue組件 的方式創(chuàng)建一個 Vue 實例,其執(zhí)行的操作都是將構(gòu)造選項中的各屬性值直接賦值給新創(chuàng)建的 Vue 實例對象。組件復用就是 Vue 使用 相同的構(gòu)造選項 構(gòu)造出多個同名不同地址的 Vue 實例對象。如果 Vue 組件定義時的構(gòu)造選項中的 data 選項是一個對象,那么在組件復用時,多個組件就會共用一個 data 數(shù)據(jù)對象,因為是直接將 data 對象的地址賦值給組件的 Vue 實例的。但如果組件定義時的 data 選項是一個函數(shù)的話,那么 Vue 根據(jù)構(gòu)造選項創(chuàng)建組件時會執(zhí)行該函數(shù)從而得到一個對象。這樣一來,每次創(chuàng)建 Vue 實例時的 data 對象都是重新生成的,因此,多個組件都有各自的 data 數(shù)據(jù)對象,不會相互影響。

實際上,在組件注冊時是在定義組件的構(gòu)造選項,在組件使用時才真正創(chuàng)建對應(yīng)的 Vue 組件實例。

1 、全局注冊

全局注冊的組件可以在 Vue 根實例和所有的子組件中使用。注冊入口為Vue.component()函數(shù),一次注冊,隨時使用,注冊方式如下:

Vue.component(’my-component-name’,{ options })

示例如下:

//main.js//此示例是在 vue-cli 創(chuàng)建的項目,默認是非完整版vue,無法用 template 選項,因此使用 render 函數(shù)寫組件內(nèi)容。Vue.component(’all-test’,{ data(){ return { x: ’我是全局組件’ } }, render(h){ return h(’div’,this.x) }})//全局注冊的組件直接使用即可//App.vue<template> <div id='app'> <all-test /> </div></template>2 、局部注冊

局部注冊是通過一個普通的 JavaScript 對象來定義組件。然后組件的命名和注冊入口是在 Vue實例 構(gòu)造選項中的 components 選項。

let component = { options }//new Vue 創(chuàng)建的根元素 Vue 實例new Vue({ el: ’#app’ components: {’my-component-name’: component }})//或注冊 Vue組件 創(chuàng)建的 Vue 實例export default { components: {’my-component-name’: component }}

示例如下:

//App.vue<template> <div id='app'> <all-test /> <component-a /> <component-b /> </div></template><script>let ComponentA = { data(){ return { x: ’我是局部組件 A’ } }, render(h){ return h(’div’,this.x) }}export default { name: ’App’, components: { ’component-a’: ComponentA, ’component-b’: {data(){ return { x: ’我是局部組件 B’ }},render(h){ return h(’div’,this.x)} } }}</script>3 、模塊系統(tǒng)中局部注冊

在使用了諸如 Babel 和 webpack 的模塊系統(tǒng)中可以使用 import 和 export 的方式單獨導入組件的構(gòu)造選項對象 或者 導入對應(yīng)構(gòu)造選項的 *.vue 文件。

//c.jsexport default { data(){return { x: ’我是 c.js 文件單獨導出的組件構(gòu)造選項對象’} }, render(h){return h(’div’,this.x) }}//D.vue<template> <div>{{x}} </div></template><script>export default { data(){return { x: ’我是 D.vue 文件導出的組件’} }}</script>//App.vue<template> <div id='app'> <C /> <D /> </div></template>import C from ’./c.js’import D from ’./components/D.vue’export default { name: ’App’, components: { C, D }}</script>

以上就是解讀Vue組件注冊方式的詳細內(nèi)容,更多關(guān)于Vue組件注冊方式的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 国产精品嫩模在线播放 | 日本不卡高清免费v | 五月色综合婷婷综合俺来也 | 香蕉99国内自产自拍视频 | 国产乱仑 | 在线观看网站黄 | 美女精品在线 | 亚洲一区欧洲一区 | 免费国产调教视频在线观看 | 精品一区二区久久久久久久网站 | 欧美成人免费大片888 | 成 人 黄 色 全 集 | 美国毛片免费看 | 在线观看日韩一区 | 91久久精品国产91久久性色也 | 免费观看成人碰视频公开 | 久久久久一区二区三区 | 青草在线视频 | 亚洲一级免费毛片 | 久久久精品成人免费看 | 国产精品尹人在线观看免费 | 欧洲一级鲁丝片免费 | 久久亚洲精品中文字幕亚瑟 | 免费观看日本污污ww网站一区 | 亚洲精品欧美综合四区 | 日韩精品国产精品 | 99久久精品免费看国产一区二区 | 亚洲 欧美 自拍 另类 欧美 | 亚洲午夜久久久久影院 | 综合亚洲色图 | 成人高清毛片a | 特级黄| 三级毛片三级毛片 | 绝对真实偷拍盗摄高清在线视频 | 在线毛片一区二区不卡视频 | 亚洲国产精品综合福利专区 | 中文字幕第98页小明免费 | 日韩视频二区 | 亚洲一区色图 | 亚洲一级在线 | 毛片毛片大全aaaa |