首頁技術(shù)文章正文

vue中注冊組件的兩種方式

更新時(shí)間:2021-12-21 來源:黑馬程序員 瀏覽量:

vue 是一個(gè)完全支持組件化開發(fā)的框架, 組件之間可以進(jìn)行相互的引用。vue 中組件的引用原則:先注冊后使用。

1. 組件的注冊

組件之間可以進(jìn)行相互的引用,例如:

注冊組件的的方式:分為“全局注冊”和“局部注冊”兩種,其中:

  • 被全局注冊的組件,可以在全局任何一個(gè)組件內(nèi)使用
  • 被局部注冊的組件,只能在當(dāng)前注冊的范圍內(nèi)使用

1)全局注冊組件

<dependency>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId>
 import { createApp } from 'vue'
 import App from './App.vue'
 // 1.導(dǎo)入 Swiper 和 Test 兩個(gè)組件
 import Swiper from './components/MySwiper.vue'
 import Test from './components/MyTest.vue'

 const app = createApp(App)

// 2.調(diào)用app實(shí)例的component()方法,在全局注冊my-swiper和my-test兩個(gè)組件
 app.component('my-swiper', Swiper)
 app.component('my-test', Test)

 app.mount('#app')

2)使用全局注冊組件


使用app.component() 方法注冊的全局組件,直接以標(biāo)簽的形式進(jìn)行使用即可,例如:

 //在 main.js中,注冊了my-swiper 和my-test兩個(gè)全局組件
 spa_app.component('my-swiper', Swiper)
 spa_app.component('my-test', Test)

 <!--在其他組件中,直接以標(biāo)簽的形式,使用剛才注冊的全局組件即可
 <template>
 <h1>這是App根組件</h1>
 <hr/>
 <my-swiper></my-swiper>

<my-test></my-test>
 </template>

3)局部注冊組件

<template>
 <h1>這是App根組件</h1>

<my-swiper></my-swiper>

<my-search></my-search>

 </template>

 <script>
 import Search from './components/MySearch.vue'
 export default {
components:{// 通過 components節(jié)點(diǎn),為當(dāng)前的組件注冊私有子組件

'my-search': Search,


 },
}
 </script>

2.全局注冊和局部注冊的區(qū)別

  • 被全局注冊的組件,可以在全局任何一個(gè)組件內(nèi)使用
  • 被局部注冊的組件,只能在當(dāng)前注冊的范圍內(nèi)使用

應(yīng)用場景: 如果某些組件在開發(fā)期間的使用頻率很高,推薦進(jìn)行全局注冊;

如果某些組件只在特定的情況下會被用到,推薦進(jìn)行局部注冊。

3.組件注冊時(shí)名稱的大小寫

在進(jìn)行組件的注冊時(shí),定義組件注冊名稱的方式有兩種:

①使用kebab-case命名法(俗稱短橫線命名法,例如my-swiper 和my-search)

②使用PascalCase命名法(俗稱帕斯卡命名法或大駝峰命名法,例如MySwiper和MySearch)

短橫線命名法的特點(diǎn):

必須嚴(yán)格按照短橫線名稱進(jìn)行使用

帕斯卡命名法的特點(diǎn):

既可以嚴(yán)格按照帕斯卡名稱進(jìn)行使用,又可以轉(zhuǎn)化為短橫線名稱進(jìn)行使用

注意:在實(shí)際開發(fā)中,推薦使用帕斯卡命名法為組件注冊名稱,因?yàn)樗倪m用性更強(qiáng)。

4.通過name 屬性注冊組件

在注冊組件期間,除了可以直接提供組件的注冊名稱之外,還可以把組件的name 屬性作為注冊后組件的名稱,

示例代碼如下:

5.組件之間的樣式?jīng)_突問題

默認(rèn)情況下,寫在.vue 組件中的樣式會全局生效,因此很容易造成多個(gè)組件之間的樣式?jīng)_突問題。導(dǎo)致組件之間樣式?jīng)_突的根本原因是:

單頁面應(yīng)用程序中,所有組件的DOM 結(jié)構(gòu),都是基于唯一的index.html 頁面進(jìn)行呈現(xiàn)的

每個(gè)組件中的樣式,都會影響整個(gè)index.html 頁面中的DOM 元素





猜你喜歡:

vue router的模式有哪幾種?

vue組件由哪幾部分構(gòu)成?

500+節(jié)教程:vue2.0+vue3.0全套免費(fèi)【黑馬程序員】

vue中keep-alive的表達(dá)方式

黑馬程序員HTML+JS前端開發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!