国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

這篇具有很好參考價(jià)值的文章主要介紹了vue3---組件基礎(chǔ)(上)保姆級(jí)篇。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

關(guān)于 vue3 基礎(chǔ)學(xué)習(xí),前面兩篇博客講了單頁(yè)面應(yīng)用程序、vite 的基本使用 ?。

這期就來(lái)一篇多一點(diǎn)的吧!這期主要內(nèi)容有:組件化開發(fā)思想、vue 組件的構(gòu)成、組件的基本使用、封裝組件的案例

看完這些,砸門也就詳細(xì)了解什么是組件了。廢話不多說(shuō),直接上刺刀??!

目錄

前言

組件化開發(fā)思想

1. 什么是組件化開發(fā)

2. 組件化開發(fā)的好處

3. vue 中的組件化開發(fā)

vue 組件的構(gòu)成

1. vue 組件組成結(jié)構(gòu)

2. 組件的 template 節(jié)點(diǎn)

2.1 在 template 中使用指令

2.2 在 template 中定義根節(jié)點(diǎn)

3. 組件的 script 節(jié)點(diǎn)

3.1 script 中的 name 節(jié)點(diǎn)

3.2 script 中的 data 節(jié)點(diǎn)

3.3 script 中的 methods 節(jié)點(diǎn)

4. 組件的 style 節(jié)點(diǎn)

4.1 讓 style 中支持 less 語(yǔ)法

組件的基本使用

1. 組件的注冊(cè)

1.1 注冊(cè)組件的兩種方式

1.2 全局注冊(cè)組件

1.3 使用全局注冊(cè)組件

1.4 局部注冊(cè)組件

1.5 全局注冊(cè)和局部注冊(cè)的區(qū)別

1.6 組件注冊(cè)時(shí)名稱的大小寫

1.7 通過(guò) name 屬性注冊(cè)組件

2. 組件之間的樣式?jīng)_突問(wèn)題

2.1 思考:如何解決組件樣式?jīng)_突的問(wèn)題

2.2 style 節(jié)點(diǎn)的 scoped 屬性

2.3 /deep/ 樣式穿透

3. 組件的 props

3.1 什么是組件的 props

3.2 在組件中聲明 props

3.3 無(wú)法使用未聲明的 props

3.4 動(dòng)態(tài)綁定 props 的值

3.5 props 的大小寫命名

4. Class 與 Style 綁定

4.1 動(dòng)態(tài)綁定 HTML 的 class

4.2 以數(shù)組語(yǔ)法綁定 HTML 的 class

4.3 以對(duì)象語(yǔ)法綁定 HTML 的 class

4.4 以對(duì)象語(yǔ)法綁定內(nèi)聯(lián)的 style

封裝組件的案例

1. 案例效果

2. 用到的知識(shí)點(diǎn)

3. 整體實(shí)現(xiàn)步驟

寫在最后

組件化開發(fā)思想

1. 什么是組件化開發(fā)

組件化開發(fā)指的是:根據(jù)封裝的思想,把頁(yè)面上可重用的部分封裝為組件,從而方便項(xiàng)目的開發(fā)和維護(hù)。例如:ibootstrap - Bootstrap可視化布局系統(tǒng) 所展示的效果,就契合了組件化開發(fā)的思想。用戶可以通過(guò)拖拽組件的方式,快速生成一個(gè)頁(yè)面的布局結(jié)構(gòu)。

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

2. 組件化開發(fā)的好處

前端組件化開發(fā)的好處主要體現(xiàn)在以下兩方面:

  • 提高了前端代碼的復(fù)用性和靈活性

  • 提升了開發(fā)效率和后期的可維護(hù)性

3. vue 中的組件化開發(fā)

vue 是一個(gè)完全支持組件化開發(fā)的框架。vue 中規(guī)定組件的后綴名是 .vue。之前接觸到的 App.vue 文件本質(zhì)上就是一個(gè) vue 的組件。

vue 組件的構(gòu)成

1. vue 組件組成結(jié)構(gòu)

每個(gè) .vue 組件都由 3 部分構(gòu)成,分別是:

  • template -> 組件的模板結(jié)構(gòu)

  • script -> 組件的 JavaScript 行為

  • style -> 組件的樣式

其中,每個(gè)組件中必須包含 template 模板結(jié)構(gòu),而 script 行為和 style 樣式是可選的組成部分。

2. 組件的 template 節(jié)點(diǎn)

vue 規(guī)定:每個(gè)組件對(duì)應(yīng)的模板結(jié)構(gòu),需要定義到 <template> 節(jié)點(diǎn)中。

<template>
    <!-- 當(dāng)前組件的Dom結(jié)構(gòu)需要定義到 template 標(biāo)簽的內(nèi)部 -->
</template>

注意:<template> 是 vue 提供的容器標(biāo)簽,只起到包裹性質(zhì)的作用,它不會(huì)被渲染為真正的 DOM 元素。

2.1 在 template 中使用指令

在組件的 <template> 節(jié)點(diǎn)中,支持使用前面所學(xué)的指令語(yǔ)法,來(lái)輔助開發(fā)者渲染當(dāng)前組件的 DOM 結(jié)構(gòu)。

代碼示例如下:

<template>
 ?<div class="app-container">
 ? ?<h1>App根組件</h1>
 ? ?<hr>
 ? ?<my-header title="星月" bgcolor="#f40" color="#fff"></my-header>
 ?</div>
</template>

2.2 在 template 中定義根節(jié)點(diǎn)

在 vue 2.x 的版本中,<template> 節(jié)點(diǎn)內(nèi)的 DOM 結(jié)構(gòu)僅支持單個(gè)根節(jié)點(diǎn):

<template>
 ?<div>
 ? ?<h1>App根組件</h1>
 ? ?<hr>
 ? ?<my-header title="星月" bgcolor="#f40" color="#fff"></my-header>
 ?</div>
</template>

但是,在 vue 3.x 的版本中,<template> 中支持定義多個(gè)根節(jié)點(diǎn):

<template>
    <h1>App根組件</h1>
 ? ?<my-header title="星月" bgcolor="#f40" color="#fff"></my-header>
</template>

3. 組件的 script 節(jié)點(diǎn)

vue 規(guī)定:組件內(nèi)的 <script> 節(jié)點(diǎn)是可選的,開發(fā)者可以在 <script> 節(jié)點(diǎn)中封裝組件的 JavaScript 業(yè)務(wù)邏輯。

<script>節(jié)點(diǎn)的基本結(jié)構(gòu)如下:

<script>
 ? ?// 導(dǎo)入組件
import MyHeader from './06.MyHeader/MyHeader.vue'
?
export default {
 ? ?// 導(dǎo)出需要定義的方法
 ?name: 'MyApp',
 ?components: {
 ? ?MyHeader,
  },
}
</script>

3.1 script 中的 name 節(jié)點(diǎn)

可以通過(guò) name 節(jié)點(diǎn)為當(dāng)前組件定義一個(gè)名稱:

<script>
    export default {
     ?name: 'MyApp'
    }
</script>

在使用 vue-devtools 進(jìn)行項(xiàng)目調(diào)試的時(shí)候,自定義的組件名稱可以清晰的區(qū)分每個(gè)組件:

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

3.2 script 中的 data 節(jié)點(diǎn)

vue 組件渲染期間需要用到的數(shù)據(jù),可以定義在 data 節(jié)點(diǎn)中:

<script>
export default {
 ?// 組件的名稱
 ?name: 'MyApp',
 ? ?// 在vue工程中要用deta(){ return} ,在普通html中使用vue可以直接data:{}
 ?data() {
 ? ?return {
 ? ? ?username: 'zs',
 ? ? ?count: 0,
 ?  }
  }
}
</script>

組件中的 data 必須是函數(shù)

vue 規(guī)定:組件中的 data 必須是一個(gè)函數(shù),不能直接指向一個(gè)數(shù)據(jù)對(duì)象。在vue工程中要用 deta(){ return { } } ,在普通html中使用vue可以直接data:{ }

3.3 script 中的 methods 節(jié)點(diǎn)

組件中的事件處理函數(shù),必須定義到 methods 節(jié)點(diǎn)中,示例代碼如下:

<script>
export default {
 ?// 組件的名稱
 ?name: 'MyApp',
 ? ?// 在vue工程中要用deta(){ return} ,在普通html中使用vue可以直接data:{}
 ?data() {
 ? ?return {
 ? ? ?username: 'zs',
 ? ? ?count: 0,
 ?  }
  },
 ? methods: { ?// 處理函數(shù)
 ? ?addCount() {
 ? ? ?this.count++
 ?  },
  },
}
</script>

4. 組件的 style 節(jié)點(diǎn)

vue 規(guī)定:組件內(nèi)的 <style> 節(jié)點(diǎn)是可選的,開發(fā)者可以在 <style> 節(jié)點(diǎn)中編寫樣式美化當(dāng)前組件的 UI 結(jié)構(gòu)。

<style > 節(jié)點(diǎn)的基本結(jié)構(gòu)如下:

<style lang="less" scoped>
h1 {
  color: red;
  i {
    color: blue;
  }
}
</style>

其中 <style> 標(biāo)簽上的 lang="css" 屬性是可選的,它表示所使用的樣式語(yǔ)言。默認(rèn)只支持普通的 css 語(yǔ)法,可

選值還有 less、scss 等。加上 scope ,可以防止樣式?jīng)_突,不加的話,父組件的樣式會(huì)在子組件上生效。如果加了 scoped,還想讓樣式在在子組件生效,可以給需要生效的樣式加上 /deep/ , 在vue3 中,改成了加 :deep( 這里放class,id等名字 )。

4.1 讓 style 中支持 less 語(yǔ)法

如果希望使用 less 語(yǔ)法編寫組件的 style 樣式,可以按照如下兩個(gè)步驟進(jìn)行配置:

① 運(yùn)行 npm install less -D 命令安裝依賴包,從而提供 less 語(yǔ)法的編譯支持

② 在 <style> 標(biāo)簽上添加 lang="less" 屬性,即可使用 less 語(yǔ)法編寫組件的樣式

<style lang="less" scoped>
h1 {
  color: red;
  i {
    color: blue;
  }
}
</style>

組件的基本使用

1. 組件的注冊(cè)

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

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

vue 中組件的引用原則:先注冊(cè)后使用。

1.1 注冊(cè)組件的兩種方式

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

  • 被全局注冊(cè)的組件,可以在全局任何一個(gè)組件內(nèi)使用

  • 被局部注冊(cè)的組件,只能在當(dāng)前注冊(cè)的范圍內(nèi)使用

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

1.2 全局注冊(cè)組件

注冊(cè)全局組件在 main.js 中配置如下:

// 1. 按需導(dǎo)入 createApp 函數(shù)
import { createApp } from 'vue'
// 2. 導(dǎo)入待渲染的 App.vue 組件
import App from './components/App.vue'

// 1. 導(dǎo)入需要被全局注冊(cè)的組件
import Swiper from './components/01.globalReg/Swiper.vue'
import Test from './components/01.globalReg/Test.vue'

// 3. 調(diào)用 createApp 函數(shù),創(chuàng)建 SPA 應(yīng)用的實(shí)例
const app = createApp(App)

// 2. 調(diào)用 app.component() 方法全局注冊(cè)組件
app.component(Swiper.name, Swiper)
app.component(Test.name, Test)

// 4. 調(diào)用 mount() 把 App 組件的模板結(jié)構(gòu),渲染到指定的 el 區(qū)域中
app.mount('#app')

1.3 使用全局注冊(cè)組件

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

<template>
  <h1>這是 <i>App.vue</i> 根組件</h1>
  <hr />

  <my-swiper></my-swiper>
  <MyTest></MyTest>
  <my-test></my-test>
</template>

1.4 局部注冊(cè)組件

局部組件的注冊(cè)和使用:

<template>
  <div>
    <h1>這是 App.vue 組件</h1>
    <hr />

    <my-style></my-style>
  </div>
</template>

<script>
    // 導(dǎo)入組件
import MyStyle from './Style.vue'

export default {
  name: 'MyApp',
  components: {  // 通過(guò) components 節(jié)點(diǎn)注冊(cè)私有組件
      // 注冊(cè)
    MyStyle
  }
}
</script>

1.5 全局注冊(cè)和局部注冊(cè)的區(qū)別

  • 被全局注冊(cè)的組件,可以在全局任何一個(gè)組件內(nèi)使用

  • 被局部注冊(cè)的組件,只能在當(dāng)前注冊(cè)的范圍內(nèi)使用

應(yīng)用場(chǎng)景:

如果某些組件在開發(fā)期間的使用頻率很高,推薦進(jìn)行全局注冊(cè);

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

1.6 組件注冊(cè)時(shí)名稱的大小寫

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

① 使用 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ā)中,推薦使用帕斯卡命名法為組件注冊(cè)名稱,因?yàn)樗倪m用性更強(qiáng)。

1.7 通過(guò) name 屬性注冊(cè)組件

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

示例代碼如下:

// 使用組件
<template>
  <h3>Swiper 輪播圖組件</h3>
</template>

<script>
export default {
  name: 'MySwiper',
}
</script>

<!-- 在main.js 中 -->
<!-- 1. 按需導(dǎo)入 createApp 函數(shù) -->
import { createApp } from 'vue'
<!-- 2. 導(dǎo)入待渲染的 App.vue 組件 -->
import App from './components/App.vue'
<!-- 1. 導(dǎo)入需要被全局注冊(cè)的組件 -->
import Swiper from './components/01.globalReg/Swiper.vue'

<!-- 3. 調(diào)用 createApp 函數(shù),創(chuàng)建 SPA 應(yīng)用的實(shí)例 -->
const app = createApp(App)

<!-- 2. 調(diào)用 app.component() 方法全局注冊(cè)組件 -->
app.component(Swiper.name, Swiper)

<!-- 4. 調(diào)用 mount() 把 App 組件的模板結(jié)構(gòu),渲染到指定的 el 區(qū)域中 -->
app.mount('#app')

2. 組件之間的樣式?jīng)_突問(wèn)題

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

之間樣式?jīng)_突的根本原因是:

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

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

2.1 思考:如何解決組件樣式?jīng)_突的問(wèn)題

為每個(gè)組件分配唯一的自定義屬性,在編寫組件樣式時(shí),通過(guò)屬性選擇器來(lái)控制樣式的作用域,示例代碼如下:

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

2.2 style 節(jié)點(diǎn)的 scoped 屬性

為了提高開發(fā)效率和開發(fā)體驗(yàn),vue 為 style 節(jié)點(diǎn)提供了 scoped 屬性,從而防止組件之間的樣式?jīng)_突問(wèn)題:

<style lang="less" scoped>
h1 {
  color: red;
  i {
    color: blue;
  }
}
</style>

style節(jié)點(diǎn)的 scoped 屬性,用來(lái)自動(dòng)為每個(gè)組件分配唯一的“自定義屬性",并自動(dòng)為當(dāng)前組件的 DOM 標(biāo)簽和 style 樣式應(yīng)用這個(gè)自定義屬性,防止組件的樣式?jīng)_突問(wèn)題。

2.3 /deep/ 樣式穿透

如果給當(dāng)前組件的 style 節(jié)點(diǎn)添加了 scoped 屬性,則當(dāng)前組件的樣式對(duì)其子組件是不生效的。如果想讓某些樣

式對(duì)子組件生效,可以使用 /deep/ 深度選擇器。

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

注意:/deep/ 是 vue2.x 中實(shí)現(xiàn)樣式穿透的方案。在 vue3.x 中推薦使用 :deep() 替代 /deep/。

vue3 中演示如下:

<style lang="less" scoped>
h1 {
  color: red;
  :deep(i) {
    color: blue;
  }
}
</style>

3. 組件的 props

為了提高組件的復(fù)用性,在封裝 vue 組件時(shí)需要遵守如下的原則:

  • 組件的 DOM 結(jié)構(gòu)、Style 樣式要盡量復(fù)用

  • 組件中要展示的數(shù)據(jù),盡量由組件的使用者提供

為了方便使用者為組件提供要展示的數(shù)據(jù),vue 組件提供了 props 的概念。

3.1 什么是組件的 props

props 是組件的自定義屬性,組件的使用者可以通過(guò) props 把數(shù)據(jù)傳遞到子組件內(nèi)部,供子組件內(nèi)部進(jìn)行使

用。代碼示例如下:

<template>
  <div class="app-container">
    <h1>App根組件</h1>
    <my-header title="星月" bgcolor="#f40" color="#fff"></my-header>
  </div>
</template>

props 的作用:父組件通過(guò) props 向子組件傳遞要展示的數(shù)據(jù)。

props 的好處:提高了組件的復(fù)用性。

3.2 在組件中聲明 props

在封裝 vue 組件時(shí),可以把動(dòng)態(tài)的數(shù)據(jù)項(xiàng)聲明為 props 自定義屬性。自定義屬性可以在當(dāng)前組件的模板結(jié)構(gòu)

中被直接使用。示例代碼如下:

<template>
  <div class="header-container" :style="{ backgroundColor: bgcolor, color: color }">
    {{title || 'Header 組件'}}
  </div>
</template>

<script>
export default {
  name: 'MyHeader',
  props: ['title', 'bgcolor', 'color']
}
</script>

3.3 無(wú)法使用未聲明的 props

如果父組件給子組件傳遞了未聲明的 props 屬性,則這些屬性會(huì)被忽略,無(wú)法被子組件使用,示例代碼如下:

<template>
  <div class="header-container" :style="{ backgroundColor: bgcolor, color: color }">
    {{title || 'Header 組件'}}
  </div>
</template>

<script>
export default {
  name: 'MyHeader',
  props: ['title', 'bgcolor'] // color 屬性沒(méi)有聲明,父組件傳color就沒(méi)有效果
}
</script>

3.4 動(dòng)態(tài)綁定 props 的值

可以使用 v-bind 屬性綁定的形式,為組件動(dòng)態(tài)綁定 props 的值,示例代碼如下:

<!-- 通過(guò) v-bind 屬性綁定,給title賦予了一個(gè)動(dòng)態(tài)的值。值在data中定義。 -->
<my-header :title="name" bgcolor="#f40" color="#fff"></my-header>

<script>
import MyHeader from './06.MyHeader/MyHeader.vue'

export default {
  name: 'MyApp',
  data() {
    return{
      name:'星月'
    }
  },
  components: {
    MyHeader,
  },
}
</script>

3.5 props 的大小寫命名

組件中如果使用“camelCase (駝峰命名法)”聲明了 props 屬性的名稱,則有兩種方式為其綁定屬性的值。

可以綁定原來(lái)的 Myname ,也可以綁定 my-name。

4. Class 與 Style 綁定

在實(shí)際開發(fā)中經(jīng)常會(huì)遇到動(dòng)態(tài)操作元素樣式的需求。因此,vue 允許開發(fā)者通過(guò) v-bind 屬性綁定指令,為元

素動(dòng)態(tài)綁定 class 屬性的值和行內(nèi)的 style 樣式。

4.1 動(dòng)態(tài)綁定 HTML 的 class

可以通過(guò)三元表達(dá)式,動(dòng)態(tài)的為元素綁定 class 的類名。示例代碼如下:

<hr>
<h2 class="thin" :class="isitalic ? 'italic' : '' ">星月學(xué)前端</h2>
<button @click="isitalic ? isitalic=fasle : isitalic=true">isitalic</button>

<script>
export default {
  data() {
    return{
      isitalic:true
    }
}
</script>

<style lang="less" scoped>
.app-container {
  margin-top: 45px;
  .thin{ // 字體變細(xì)
    font-weight: 200;
  }
  .italic{ // 傾斜字體
    font-style: italic;
  }
}
</style>

4.2 以數(shù)組語(yǔ)法綁定 HTML 的 class

如果元素需要?jiǎng)討B(tài)綁定多個(gè) class 的類名,此時(shí)可以使用數(shù)組的語(yǔ)法格式:

<h3 class="thin" :class="[isItalic ? 'italic' : '',isDelete ? 'delete' : '']">

4.3 以對(duì)象語(yǔ)法綁定 HTML 的 class

使用數(shù)組語(yǔ)法動(dòng)態(tài)綁定 class 會(huì)導(dǎo)致模板結(jié)構(gòu)臃腫的問(wèn)題。此時(shí)可以使用對(duì)象語(yǔ)法進(jìn)行簡(jiǎn)化:

<h3 class="thin" :class="class0bj">MyDeep組件</h3>

data(){
	retrun{
		classObj:{
			italic:true,
			delete:false,
		}
	}
}

4.4 以對(duì)象語(yǔ)法綁定內(nèi)聯(lián)的 style

:style 的對(duì)象語(yǔ)法十分直觀——看著非常像 CSS,但其實(shí)是一個(gè) JavaScript 對(duì)象。CSS property 名可以用駝

峰式 (camelCase) 或短橫線分隔 (kebab-case,記得用引號(hào)括起來(lái)) 來(lái)命名:

<div :style="{color: active,fontSize: fsize + 'px','background-color ' : bgcolor}">星月前端</div>

<button @click="fsize += 1">字號(hào)+1</button>
<button @click="fsize -- 1">字號(hào)-1</button>

data(){
	return {
		active:'red',
		fsize:30,
		bgcolor:'pink',
	}
}

封裝組件的案例

1. 案例效果

vue3---組件基礎(chǔ)(上)保姆級(jí)篇

封裝要求:

① 允許用戶自定義 title 標(biāo)題

② 允許用戶自定義 bgcolor 背景色

③ 允許用戶自定義 color 文本顏色

④ MyHeader 組件需要在頁(yè)面頂部進(jìn)行 fixed 固定定位,且 z-index 等于 999

使用示例如下:

<my-header :title="name" bgcolor="#f40" color="#fff"></my-header>

2. 用到的知識(shí)點(diǎn)

  • 組件的封裝與注冊(cè)

  • props

  • 樣式綁定

3. 整體實(shí)現(xiàn)步驟

  • 創(chuàng)建 MyHeader 組件

  • 渲染 MyHeader 組件的基本結(jié)構(gòu)

  • 在 App 組件中注冊(cè)并使用 MyHeader 組件

  • 通過(guò) props 為組件傳遞數(shù)據(jù)

app.vue 代碼:

<template>
  <div class="app-container">
    <h1>App根組件</h1>
    <my-header :title="name" bgcolor="#f40" color="#fff"></my-header>
    <hr>
  </div>
</template>

<script>
import MyHeader from './06.MyHeader/MyHeader.vue'

export default {
  name: 'MyApp',
  data() {
    return{
      name:'星月前端',
      isitalic:true
    }
  },
  components: {
    MyHeader,
  },
}
</script>

<style lang="less" scoped>
.app-container {
  margin-top: 45px;
  .thin{ // 字體變細(xì)
    font-weight: 200;
  }
  .italic{ // 傾斜字體
    font-style: italic;
  }
}
</style>

Myheader.vue 代碼:

<template>
  <div class="header-container" :style="{ backgroundColor: bgcolor, color: color }">
    {{title || 'Header 組件'}}
  </div>
</template>

<script>
export default {
  name: 'MyHeader',
  props: ['title', 'bgcolor', 'color']
}
</script>

<style lang="less" scoped>
.header-container {
  height: 45px;
  background-color: pink;
  text-align: center;
  line-height: 45px;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 999;
}
</style>

總結(jié)

① 能夠說(shuō)出什么是單頁(yè)面應(yīng)用程序及組件化開發(fā)

  • SPA、只有一個(gè)頁(yè)面、組件是對(duì) UI 結(jié)構(gòu)的復(fù)用

② 能夠說(shuō)出 .vue 單文件組件的組成部分

  • template、script、style(scoped、lang)

③ 能夠知道如何注冊(cè) vue 的組件

  • 全局注冊(cè)(app.component)、局部注冊(cè)(components)

④ 能夠知道如何聲明組件的 props 屬性

  • props 數(shù)組

④ 能夠知道如何在組件中進(jìn)行樣式綁定

  • 動(dòng)態(tài)綁定 class、動(dòng)態(tài)綁定 style

寫在最后

?個(gè)人筆記博客?

星月前端博客https://xingyue.vercel.app/

?原創(chuàng)不易,還希望各位大佬支持一下

?? 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!

?? 收藏,你的青睞是我努力的方向!

??評(píng)論,你的意見是我進(jìn)步的財(cái)富!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461698.html

到了這里,關(guān)于vue3---組件基礎(chǔ)(上)保姆級(jí)篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 整體認(rèn)識(shí)和路由配置、基礎(chǔ)數(shù)據(jù)渲染、熱榜區(qū)域?qū)崿F(xiàn)、圖片預(yù)覽組件封裝、認(rèn)識(shí)SKU組件、通用組件統(tǒng)一注冊(cè)全局(詳情頁(yè))【Vue3】

    整體認(rèn)識(shí)和路由配置、基礎(chǔ)數(shù)據(jù)渲染、熱榜區(qū)域?qū)崿F(xiàn)、圖片預(yù)覽組件封裝、認(rèn)識(shí)SKU組件、通用組件統(tǒng)一注冊(cè)全局(詳情頁(yè))【Vue3】

    整體業(yè)務(wù)認(rèn)識(shí) 路由配置 準(zhǔn)備組件模板 配置路由 綁定模板測(cè)試跳轉(zhuǎn) 封裝接口 獲取數(shù)據(jù)渲染模版 思考:渲染模版時(shí)遇到對(duì)象的多層屬性訪問(wèn)可能出現(xiàn)什么問(wèn)題? 模塊實(shí)現(xiàn)整體分析 結(jié)論:兩塊熱榜相比, 結(jié)構(gòu)一致,標(biāo)題title和列表內(nèi)容不同 渲染基礎(chǔ)熱榜數(shù)據(jù) 1- 準(zhǔn)備模版 2- 封

    2024年02月15日
    瀏覽(36)
  • 前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開發(fā) (組件封裝和使用)

    Vue 是前端開發(fā)中非常常見的一種框架,它的易用性和靈活性使得它成為了很多開發(fā)者的首選。而在 Vue2 版本中,組件的開發(fā)也變得非常簡(jiǎn)單,但隨著 Vue3 版本的發(fā)布,組件開發(fā)有了更多的特性和優(yōu)化,為我們的業(yè)務(wù)開發(fā)帶來(lái)了更多便利。本文將介紹如何使用 Vue3 開發(fā)業(yè)務(wù)組件

    2024年02月19日
    瀏覽(97)
  • Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類型提示功能(vite-plugin-dts 使用)

    Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類型提示功能(vite-plugin-dts 使用)

    在開發(fā)Vue3 + Ts項(xiàng)目時(shí):使用自己二次封裝的基礎(chǔ)組件,沒(méi)有 Ts類型提示 ,不能像 Element-plus 鼠標(biāo)停在標(biāo)簽或者屬性上就能提示當(dāng)前組件有哪些屬性(即props)及其屬性的類型,如下圖是 Element-plus 組件的 使用Vs Code Volar的提示: 此插件的作用:為打包的庫(kù)里加入聲明文件(即生

    2024年02月09日
    瀏覽(26)
  • 【Vue3】3-1 : 章節(jié)介紹 - Vue3組件應(yīng)用及單文件組件

    本書目錄:點(diǎn)擊進(jìn)入 一、本章學(xué)習(xí)目標(biāo) 二、課程安排 Vue3組件相關(guān)概念 掌握組件之間的通信 封裝一個(gè)可復(fù)用的組件 單文件組件SFC: 即.vue文件 = 樣式 + 結(jié)構(gòu) + 邏輯 腳手架的使用和底層實(shí)現(xiàn)機(jī)制 工程化的認(rèn)知 組件的概念及組件的 基本使用方式 組件之間 是如何進(jìn)行互相 通信

    2024年01月19日
    瀏覽(19)
  • Vue3+vite+vant UI移動(dòng)端項(xiàng)目創(chuàng)建保姆級(jí)教程

    Vue3+vite+vant UI移動(dòng)端項(xiàng)目創(chuàng)建保姆級(jí)教程

    vue3 默認(rèn)端口5173 想要把端口號(hào)修改為8088,在vite.config.js中寫入 安裝插件flexible (適配移動(dòng)端) 在main.js中引入 安裝 postcss-pxtorem (把px轉(zhuǎn)化為rem) 安裝這個(gè)之后 開發(fā)過(guò)程中就可以寫px了 插件會(huì)自動(dòng)轉(zhuǎn)化為移動(dòng)端單位rem 配置自動(dòng)按需引入組件 安裝插件 在vite.config.js中配置插件 適配

    2024年04月16日
    瀏覽(91)
  • vue3深入組件: 組件注冊(cè)

    一個(gè) Vue 組件在使用前需要先被“注冊(cè)”,這樣 Vue 才能在渲染模板時(shí)找到其對(duì)應(yīng)的實(shí)現(xiàn)。組件注冊(cè)有兩種方式:全局注冊(cè)和局部注冊(cè)。 全局注冊(cè) 我們可以使用 Vue 應(yīng)用實(shí)例的 .component() 方法,讓組件在當(dāng)前 Vue 應(yīng)用中全局可用。 全局注冊(cè)的問(wèn)題: 全局注冊(cè),但并沒(méi)有被使用

    2024年01月18日
    瀏覽(15)
  • 【vue3】vue3中父子組件傳參:

    【vue3】vue3中父子組件傳參:

    一、父?jìng)髯樱?【1】父組件傳值: 【2】子組件接收: 二、父調(diào)用子方法: 【1】父組件調(diào)用: 【2】子組件暴露: 三、子組件發(fā)送emit方法給父組件: 【1】父組件: 【2】子組件調(diào)用:

    2024年02月13日
    瀏覽(21)
  • vue3 動(dòng)態(tài)組件和異步組件

    vue3 動(dòng)態(tài)組件和異步組件

    當(dāng)使用 component :is=\\\"...\\\" 來(lái)在多個(gè)組件間作切換時(shí),被切換掉的組件會(huì)被卸載。我們可以通過(guò) KeepAlive組件強(qiáng)制被切換掉的組件仍然保持“存活”的狀態(tài)。

    2024年02月08日
    瀏覽(23)
  • vue3 組件自己引用自己 遞歸組件 組件命名

    本人前端開發(fā)一枚,以前一直用vue2.0,為了更新自己掌握的技術(shù)學(xué)習(xí)如何使用vue3.0。 在vue3.0項(xiàng)目中想要實(shí)現(xiàn)菜單組件,要使用到遞歸組件的方法,發(fā)現(xiàn)不知道怎么給組件重命名??! 在vue2.0中想要實(shí)現(xiàn)遞歸組件方式很簡(jiǎn)單,只要給組件命名,然后自己調(diào)用即可: 然而在vue3.0中

    2024年02月06日
    瀏覽(22)
  • vue3 動(dòng)態(tài)加載組件、動(dòng)態(tài)引入組件

    vue3 動(dòng)態(tài)加載組件、動(dòng)態(tài)引入組件

    1.問(wèn)題 在做一個(gè)用 vite 構(gòu)建的 vue3 項(xiàng)目時(shí),動(dòng)態(tài)拉取導(dǎo)入 .vue 頁(yè)面,然后控制臺(tái)一直有以下提示,頁(yè)面也無(wú)法渲染出來(lái)。 2.分析 根據(jù)上面的報(bào)錯(cuò)提示,讓我們安裝并使用: @rollup/plugin-dynamic-import-vars 這個(gè)插件(最終沒(méi)有這個(gè)方案)。 Vite官方文檔說(shuō) 需要使用Glob 導(dǎo)入形式 ,然

    2023年04月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包