vue寫(xiě)一個(gè)組件
寫(xiě)一個(gè)vue組件
我下面寫(xiě)的是以.vue結(jié)尾的單文件組件的寫(xiě)法,是基于webpack構(gòu)建的項(xiàng)目。如果還不知道怎么用webpack構(gòu)建一個(gè)vue的工程的,可以移步到vue-cli。
一個(gè)完整的vue組件會(huì)包括一下三個(gè)部分:
- template:模板
- js: 邏輯
- css : 樣式
每個(gè)組件都有屬于自己的模板,js和樣式。如果將一個(gè)頁(yè)面比喻成一間房子的話,組件就是房子里的客廳、臥室、廚房、廁所。如果把廚房單獨(dú)拿出來(lái)的話,組件又可以是刀、油煙機(jī)...等等。就是說(shuō)頁(yè)面是由組件構(gòu)成的,而組件也可以是組件構(gòu)成的。這樣就可以非常的靈活,耦合性也非常的低。
先來(lái)看看一個(gè)組件在不是.vue文件內(nèi)的寫(xiě)法:
Vue.component('simple-counter', {
template: '<div id="inputBox"><input type="text"></div>',
data () { // 數(shù)據(jù)
return {
counter: 0
}
},
methods: {
// 寫(xiě)點(diǎn)方法
},
created () {
// 生命鉤子
},
computed: {
// 計(jì)算屬性
}
})
template是用來(lái)干嘛的呢?
<template> <div id="inputBox"> <input type="text"> </div> </template> <!-- template就是這個(gè)組件的html,也就是下面部分(vue-loader會(huì)將template標(biāo)簽下的內(nèi)容解析出來(lái)): --> <div id="inputBox"> <input type="text"> </div> <!-- 對(duì)應(yīng)原生寫(xiě)法的話,就是template內(nèi)的dom字符串 -->
js部分
export default {
data () {
return {
counter: 0
}
},
methods: {
// 方法
},
created () {
// 生命鉤子
},
computed: {
// 計(jì)算屬性
}
}
// 在這里很明顯js部分就是對(duì)應(yīng)的原生寫(xiě)法內(nèi)的非template部分了。
// export default這個(gè)是es6的模塊寫(xiě)法,不懂的可以先去了解es6的模塊化
css部分
<style lang="scss" scoped> ...樣式 </style>
<!--這里的你可以使用scss(CSS擴(kuò)展語(yǔ)言)只要安裝"sass-loader"和"node-sass"這兩個(gè)npm包就好了,vue-cli已經(jīng)配好相關(guān)參數(shù)了。如果想使用less或其它c(diǎn)ss擴(kuò)展語(yǔ)音,只要裝好各自的編譯包就好了。而scoped是讓css的作用域只在該文件下。-->
引入
要怎么在其它組件引用該組件?
組件一(button.vue)
<template>
<div class="button">
<button @click="onClick">{{text}}</button>
</div>
</template>
<script>
export default {
props: ['text'], // 獲取父組件的傳值
data () {
return {
}
},
methods: {
onClick () {
console.log('點(diǎn)擊了子組件')
}
}
}
</script>
<style lang="scss" scoped>
.button {
button {
width: 100px;
}
}
</style>
組件二(box.vue)
<template>
<div class="box">
<v-button :text="text"></v-button> <!--使用組件并傳值(text)-->
</div>
</template>
<script>
import Button from './button.vue' // 引入子組件
export default {
components: {
'v-button': Button
},
data () {
return {
text: '按鍵的name'
}
},
methods: {
}
}
</script>
總結(jié)
以上所述是小編給大家介紹的vue組寫(xiě)一個(gè)組件,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue style屬性設(shè)置背景圖片的相對(duì)路徑無(wú)效的解決
這篇文章主要介紹了vue style屬性設(shè)置背景圖片的相對(duì)路徑無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
django+vue實(shí)現(xiàn)跨域的示例代碼
在我們的項(xiàng)目中需要用到django實(shí)現(xiàn)跨域的問(wèn)題,本文通過(guò)示例代碼給大家詳細(xì)介紹django+vue實(shí)現(xiàn)跨域的方法,感興趣的朋友跟隨小編一起看看吧2022-03-03
在Vue3中實(shí)現(xiàn)動(dòng)態(tài)路由的示例代碼
Vue3中的動(dòng)態(tài)路由是一種高級(jí)功能,它允許你在URL中包含變量,這些變量可以在組件內(nèi)部通過(guò)$route.params對(duì)象訪問(wèn),動(dòng)態(tài)路由通常用于構(gòu)建可配置性強(qiáng)、更具靈活性的應(yīng)用,本文詳細(xì)介紹了如何在vue3中實(shí)現(xiàn)動(dòng)態(tài)路由,需要的朋友可以參考下2024-07-07
Vuex modules模式下mapState/mapMutations的操作實(shí)例
這篇文章主要介紹了Vuex modules 模式下 mapState/mapMutations 的操作實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
前端使用print.js實(shí)現(xiàn)打印功能(基于vue)
最近新接了一個(gè)需求,想要在前端實(shí)現(xiàn)打印功能,下面這篇文章主要給大家介紹了關(guān)于前端使用print.js實(shí)現(xiàn)打印功能(基于vue)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

