最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀Vue組件注冊方式

 更新時間:2021年05月15日 14:24:39   作者:lovin  
無論是Vue還是React,都有組件的概念。組件,就是能和別人組合在一起的物件。在前端頁面開發(fā)過程中,將一個頁面劃分成一個個小的模塊,每個模塊單獨定義,每個模塊就是一個組件。組件可以進行復(fù)用,A頁面和B頁面有一個相似的模塊,可以抽離成一個可局部修改的組件。

概述

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

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

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

因為無論是 new Vue() 的方式還是定義 Vue組件 的方式創(chuàng)建一個 Vue 實例,其執(zhí)行的操作都是將構(gòu)造選項中的各屬性值直接賦值給新創(chuàng)建的 Vue 實例對象。組件復(fù)用就是 Vue 使用 相同的構(gòu)造選項 構(gòu)造出多個同名不同地址的 Vue 實例對象。如果 Vue 組件定義時的構(gòu)造選項中的 data 選項是一個對象,那么在組件復(fù)用時,多個組件就會共用一個 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 的方式單獨導(dǎo)入組件的構(gòu)造選項對象 或者 導(dǎo)入對應(yīng)構(gòu)造選項的 *.vue 文件。

//c.js
export default {
    data(){
        return {
          x: '我是 c.js 文件單獨導(dǎo)出的組件構(gòu)造選項對象'
        }
      },
      render(h){
        return h('div',this.x)
      }
}

//D.vue
<template>
    <div>
        {{x}}
    </div>
</template>

<script>
export default {
    data(){
        return {
            x: '我是 D.vue 文件導(dǎo)出的組件'
        }
    }
}
</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)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue多級多選菜單組件開發(fā)

    vue多級多選菜單組件開發(fā)

    這篇文章主要為大家分享了vue多級多選菜單組件開發(fā)案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • vue中this.$refs的坑及解決

    vue中this.$refs的坑及解決

    這篇文章主要介紹了vue中this.$refs的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法

    vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法

    下面小編就為大家分享一篇vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue中圖片轉(zhuǎn)base64格式實現(xiàn)方法

    vue中圖片轉(zhuǎn)base64格式實現(xiàn)方法

    這篇文章主要介紹了vue中圖片轉(zhuǎn)base64格式實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue如何使用moment處理時間戳轉(zhuǎn)換成日期或時間格式

    vue如何使用moment處理時間戳轉(zhuǎn)換成日期或時間格式

    這篇文章主要給大家介紹了關(guān)于vue如何使用moment處理時間戳轉(zhuǎn)換成日期或時間格式的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者vue具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • 前端vue3搭建超詳細指南(快速上手搭建)

    前端vue3搭建超詳細指南(快速上手搭建)

    這篇文章主要介紹了使用Vue?3和Element-plus搭建前端項目的過程,包括項目搭建、Element-plus安裝和引入、axios安裝、sass使用、app.vue配置、組件創(chuàng)新、路由配置以及使用輔助插件來提高開發(fā)效率,需要的朋友可以參考下
    2025-02-02
  • vue中render函數(shù)和h函數(shù)以及jsx的使用方式

    vue中render函數(shù)和h函數(shù)以及jsx的使用方式

    這篇文章主要介紹了vue中render函數(shù)和h函數(shù)以及jsx的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vuex中mutations與actions的區(qū)別詳解

    Vuex中mutations與actions的區(qū)別詳解

    下面小編就為大家分享一篇Vuex中mutations與actions的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue+element+oss實現(xiàn)前端分片上傳和斷點續(xù)傳

    vue+element+oss實現(xiàn)前端分片上傳和斷點續(xù)傳

    這篇文章主要介紹了vue+element+oss實現(xiàn)前端分片上傳和斷點續(xù)傳,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue項目移動端實現(xiàn)ip輸入框問題

    vue項目移動端實現(xiàn)ip輸入框問題

    這篇文章主要介紹了vue項目移動端實現(xiàn)ip輸入框問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03

最新評論

靖边县| 英山县| 永川市| 盐城市| 渝中区| 通州区| 清苑县| 景泰县| 华坪县| 舞钢市| 永春县| 泸水县| 新余市| 沈丘县| 麟游县| 钟祥市| 包头市| 南陵县| 金山区| 永康市| 额济纳旗| 高青县| 射洪县| 于田县| 屯门区| 贵溪市| 静乐县| 济宁市| 大埔县| 黄平县| 临海市| 黎城县| 盱眙县| 铜川市| 紫阳县| 井冈山市| 闵行区| 新营市| 乌兰县| 富平县| 多伦县|