9-Vue深入了解組件-組件注冊

組件名大小寫

定義組件名的方式有兩種:

使用 kebab-case

Vue.component('my-component-name', { /* ... */ })

當(dāng)使用 kebab-case (短橫線分隔命名) 定義一個組件時,你也必須在引用這個自定義元素時使用 kebab-case,例如 <my-component-name>蹬昌。

使用 PascalCase

Vue.component('MyComponentName', { /* ... */ })

當(dāng)使用 PascalCase (首字母大寫命名) 定義一個組件時襟铭,你在引用這個自定義元素時兩種命名法都可以使用盏求。也就是說 <my-component-name> 和 <MyComponentName> 都是可接受的噪漾。注意充活,盡管如此蜂莉,直接在 DOM (即非字符串的模板) 中使用時只有 kebab-case 是有效的。

全局注冊

全局組件[要注冊一個全局組件混卵,可以使用 Vue.component(tagName, options)]【注意點:組件在注冊之后映穗,便可以作為【自定義元素】在一個實例的模板中使用,確保在初始化根實例之前注冊組件幕随∫献蹋】

Vue.component('my-component-name', {
  // ... 選項 ...
})

局部注冊

局部組件[注意點:注冊僅在其作用域中可用的組件]
在這些情況下,你可以通過一個普通的 JavaScript 對象來定義組件:

var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }

然后在 components 選項中定義你想要使用的組件:

new Vue({
  el: '#app',
  components: {
    'component-a': ComponentA,
    'component-b': ComponentB
  }
})

對于 components 對象中的每個屬性來說赘淮,其屬性名就是自定義元素的名字辕录,其屬性值就是這個組件的選項對象。
注意局部注冊的組件在其子組件中不可用梢卸。例如走诞,如果你希望 ComponentA 在 ComponentB 中可用,則你需要這樣寫:

var ComponentA = { /* ... */ }

var ComponentB = {
  components: {
    'component-a': ComponentA
  },
  // ...
}

或者如果你通過 Babel 和 webpack 使用 ES2015 模塊蛤高,那么代碼看起來更像:

import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  },
  // ...
}

關(guān)于全局組件和局部組件的具體實例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app1">
        <h4>全局組件</h4>
        <my-global></my-global>
    </div>
    <p></p>
    <hr>
    <p></p>
    <div id="app2">
        <h4>局部組件</h4>
        <local-global></local-global>
    </div>

    <script src="js/vue.js"></script>
    <script>
        // 先注冊全局組件
        Vue.component('my-global',{
            template: '<div>{{msg}}</div>',
            data () {
                return {
                    msg: 'A global component'
                }
            }
        });
        // 再初始化
        var app1 = new Vue({
            el: '#app1'
        });

        var child = {
            template: '<div>a local component</div>'
        };
        var app2 = new Vue({
            el: '#app2',
            data: {

            },
            components: {
                // 局部組件
                'local-global': child
            }
        });
    </script>
</body>
</html>

在模塊系統(tǒng)中局部注冊

創(chuàng)建一個 components 目錄蚣旱,并將每個組件放置在其各自的文件中。然后你需要在局部注冊之前導(dǎo)入每個你想使用的組件戴陡。例如塞绿,在一個假設(shè)的 ComponentB.js 或 ComponentB.vue 文件中,現(xiàn)在 ComponentA 和 ComponentC 都可以在 ComponentB 的模板中使用了恤批。

import ComponentA from './ComponentA'
import ComponentC from './ComponentC'

export default {
  components: {
    ComponentA,
    ComponentC
  },
  // ...
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末异吻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喜庞,更是在濱河造成了極大的恐慌诀浪,老刑警劉巖棋返,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笋妥,居然都是意外死亡懊昨,警方通過查閱死者的電腦和手機(jī)窄潭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門春宣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫉你,你說我怎么就攤上這事月帝。” “怎么了幽污?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵嚷辅,是天一觀的道長。 經(jīng)常有香客問我距误,道長簸搞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任准潭,我火速辦了婚禮趁俊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刑然。我一直安慰自己寺擂,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布泼掠。 她就那樣靜靜地躺著怔软,像睡著了一般。 火紅的嫁衣襯著肌膚如雪择镇。 梳的紋絲不亂的頭發(fā)上挡逼,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音腻豌,去河邊找鬼家坎。 笑死,一個胖子當(dāng)著我的面吹牛饲梭,可吹牛的內(nèi)容都是我干的乘盖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼憔涉,長吁一口氣:“原來是場噩夢啊……” “哼订框!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兜叨,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤穿扳,失蹤者是張志新(化名)和其女友劉穎衩侥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矛物,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡茫死,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了履羞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峦萎。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忆首,靈堂內(nèi)的尸體忽然破棺而出爱榔,到底是詐尸還是另有隱情,我是刑警寧澤糙及,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布详幽,位于F島的核電站,受9級特大地震影響浸锨,放射性物質(zhì)發(fā)生泄漏唇聘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一柱搜、第九天 我趴在偏房一處隱蔽的房頂上張望迟郎。 院中可真熱鬧,春花似錦冯凹、人聲如沸谎亩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匈庭。三九已至,卻和暖如春浑劳,著一層夾襖步出監(jiān)牢的瞬間阱持,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工魔熏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留衷咽,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓蒜绽,卻偏偏與公主長得像镶骗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躲雅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 什么是組件鼎姊? 組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一。組件可以擴(kuò)展 HTML 元素,封裝...
    youins閱讀 9,487評論 0 13
  • 組件簡介 組件系統(tǒng)是Vue.js其中一個重要的概念相寇,它提供了一種抽象慰于,讓我們可以使用獨立可復(fù)用的小組件來構(gòu)建大型應(yīng)...
    前端一菜鳥閱讀 862評論 0 16
  • 此文基于官方文檔,里面部分例子有改動唤衫,加上了一些自己的理解 什么是組件婆赠? 組件(Component)是 Vue.j...
    陸志均閱讀 3,834評論 5 14
  • 組件注冊 在注冊一個組件的時候,我們始終需要給它一個名字佳励。比如: 該組件名就是 Vue.component 的第一...
    勝過夜的美閱讀 1,022評論 0 5
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,221評論 0 6