沒有搭建腳手架時(shí)vue組件的使用方式
沒有搭建腳手架時(shí)vue組件的使用
全局組件
//全局組件 第一種聲名方式
var s = Vue.extend({
template: "<h6>全局組件 第一種聲名方式</h6>"
})
Vue.component("hello", s);
//前臺(tái)標(biāo)簽調(diào)用 <hello></hello>
//全局組件 第二種聲明方式
Vue.component("k", {
template: "<h6>全局組件 第二種聲明方式</h6>"
});
//前臺(tái)標(biāo)簽調(diào)用 <k></k>局部組件
components: {
//局部組件,聲明方式1
zujian1: {
template: "<h6>局部組件,聲明方式</h6>" //因?yàn)槁暶鞯氖亲址苯诱{(diào)用 <zujian1></zujian1>
},
//局部組件,聲明方式2
zujian2: {
template: "#zujian2",
data() {
return {
msg: "組件2的值"
}
}
},
}
//第二種調(diào)用方式
//因?yàn)槁暶鞯牟皇亲址圆荒苤苯邮褂?需要通過標(biāo)簽<template id="zujian2"></template> 標(biāo)簽之間必須要用html標(biāo)簽
如<template id="zujian2"><div>{{msg}}</div></template> 不能沒有html標(biāo)簽就直接調(diào)用
<head>
<template id="zujian2"> //此處要加上組件的id
<p>{{msg}}</p>
</template>
<body>
<!--頁面容器-->
<div id="my" class="container" v-cloak>
<div class="container">
<hello></hello>
<k></k>
<zujian1></zujian1>
<zujian2></zujian2> /*為空的時(shí)候不能使用,必須要用到模板*/
</div>
</div>
</body>
</head>vue腳手架—組件的使用
為什么用組件

需求:想要多個(gè)收起 展開的部分
方法1: 復(fù)制代碼
- 代碼重復(fù)
- 冗余不利于維護(hù)
<template>
<div id="app">
<!-- 目標(biāo):點(diǎn)擊展開或收起時(shí),把內(nèi)容區(qū)域顯示或者隱藏 -->
<h3>折疊面板</h3>
<div>
<div class="title">
<h4>芙蓉樓送辛漸</h4>
<span @click="isShow = !isShow">{{ isShow ? '收起' : '展開' }}</span>
</div>
<div class="container" v-show="isShow">
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
</div>
</div>
<!-- 復(fù)制 -->
<div>
<div class="title">
<h4>芙蓉樓送辛漸</h4>
<span @click="isShow1 = !isShow1">{{ isShow1 ? '收起' : '展開' }}</span>
</div>
<div class="container" v-show="isShow1">
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
</div>
</div>
<!-- 復(fù)制 -->
<div>
<div class="title">
<h4>芙蓉樓送辛漸</h4>
<span @click="isShow2 = !isShow2">{{ isShow2 ? '收起' : '展開' }}</span>
</div>
<div class="container" v-show="isShow2">
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isShow: false,
isShow1: false,
isShow2: false,
}
},
}
</script>
<style scoped>
#app {
width: 400px;
margin: 20px auto;
background-color: yellow;
border: 4px solid burlywood;
border-radius: 2px;
padding: 10px;
}
h3 {
text-align: center;
}
.title {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #ccc;
padding: 0 5px;
}
</style>
vue 組件-概念
可復(fù)用的vue實(shí)例,封裝標(biāo)簽,樣式和代碼
組件化: 封裝的思想,把頁面上 可復(fù)用的部分,封裝為組件,從而方便項(xiàng)目的開發(fā)和維護(hù)
一個(gè)頁面,可以拆分成一個(gè)個(gè)組件(一個(gè)vue文件),一個(gè)組件就是一個(gè)整體,每個(gè)組件可以有自己獨(dú)立的結(jié)構(gòu),樣式和行為(html,css,js)

vue組件–基礎(chǔ)使用
每個(gè)組件都是一個(gè)獨(dú)立的個(gè)體,代碼里體現(xiàn)為一個(gè)獨(dú)立的vue文件
哪部分標(biāo)簽復(fù)用,就把哪部分封裝到組件內(nèi)
- 組件內(nèi)template只能有一個(gè)標(biāo)簽
- 組件內(nèi)的data必須是一個(gè)函數(shù),獨(dú)立作用域
步驟:
1.創(chuàng)建組件
創(chuàng)建組件 components/Pannel.vue
封裝結(jié)構(gòu)+樣式+js 組件都是獨(dú)立的,為了復(fù)用
<template>
<div>
<div class="title">
<h4>芙蓉樓送辛漸</h4>
<span @click="isShow = !isShow">{{ isShow ? '收起' : '展開' }}</span>
</div>
<div class="container" v-show="isShow">
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
<p>一片冰心在玉壺</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
isShow: false,
}
},
}
</script>
<style scoped>
.title {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #ccc;
padding: 0 5px;
}
</style>
2.注冊組件
注冊組件,創(chuàng)建后需要注冊后再使用
全局注冊使用
全局入口main.js 在new Vue之上注冊
語法:
// 全局注冊組件
// 1 引入組件
import Pannel from './components/Pannel'
// 2 全局注冊組件
/*
Vue.component('組件名',組件對象)
*/
Vue.component('PannelG', Pannel)
全局注冊組件PannelG,就可以當(dāng)做標(biāo)簽在任意vue文件中的template中使用
單雙標(biāo)簽都可以或者小寫加 - 形式,運(yùn)行后,會(huì)把這個(gè)自定義標(biāo)簽當(dāng)做組件解析,使用 組件里封裝的標(biāo)簽替換到這個(gè)位置
<PannelG></PannelG>
<PannelG />
<pannel-g></pannel-g>
局部注冊使用
語法
import 組件對象 from 'vue文件路徑'
export default {
components:{
'組件名':組件對象
}
}
在vue文件中引入,注冊,使用
<template>
<div id="app">
<hr />
<MyPannel></MyPannel>
<my-pannel></my-pannel>
</div>
</template>
<script>
// 1引入組件
import MyPannel from './components/MyPannel.vue'
export default {
//2 局部注冊組件
components: {
MyPannel: MyPannel,
},
}
</script>
組件使用總結(jié):
- (創(chuàng)建)封裝html+css+js到獨(dú)立的.vue文件中
- (引入注冊)組件文件==>得到組件配置對象
- (使用)當(dāng)前頁面當(dāng)做標(biāo)簽使用
vue組件-scoped作用
解決多個(gè)組件樣式名相同,沖突問題
需求:div標(biāo)簽名選擇器,設(shè)置背景色
問題: 組件里的div和外面的div都生效了
解決:給Pannel.vue組件里style標(biāo)簽上加scoped屬性
<style scoped>
在style上假如scoped屬性,就會(huì)在此組件的標(biāo)簽上加上一個(gè)隨機(jī)生成的data-v開頭的屬性
而且必須是當(dāng)前組件的元素,才會(huì)有這個(gè)自定義屬性,才會(huì)被這個(gè)樣式作用到
style上加scoped,組件內(nèi)的樣式只在當(dāng)前vue組件生效
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VUE中如何優(yōu)雅實(shí)現(xiàn)爺孫組件的數(shù)據(jù)通信
所謂祖孫組件,也就是3層嵌套的組件,下面這篇文章主要給大家介紹了關(guān)于VUE中如何優(yōu)雅實(shí)現(xiàn)爺孫組件的數(shù)據(jù)通信的相關(guān)資料,需要的朋友可以參考下2022-04-04
Vue實(shí)現(xiàn)一鍵將HTML導(dǎo)出為圖片的完整教程
在日常開發(fā)中,經(jīng)常會(huì)遇到這樣的需求:將頁面內(nèi)容生成圖片(分享海報(bào))或者導(dǎo)出報(bào)表截圖,因此本文將教你如何在 Vue 項(xiàng)目中,一鍵將 HTML 內(nèi)容導(dǎo)出為圖片(PNG),需要的朋友可以參考下2026-03-03
Vue Router打造絲滑的滾動(dòng)控制與驚艷的路由動(dòng)畫
Vue Router 作為 Vue.js 生態(tài)中的核心路由解決方案,提供了強(qiáng)大的滾動(dòng)行為控制和路由過渡動(dòng)畫能力,讓我們能夠打造出令人印象深刻的用戶體驗(yàn),下面小編就和大家簡單介紹一下吧2025-12-12
vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能
這篇文章主要介紹了vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能
這篇文章主要介紹了elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能,本文給大家分享實(shí)現(xiàn)思路結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-07-07

