這次的教程里,我們要把組件化進(jìn)行到底!最近半年的幾個(gè)項(xiàng)目中,都遇到了需要使用Toast或者Notification組件的情況。在目前已有的一些基于Vue.js開(kāi)發(fā)的組件庫(kù),都沒(méi)有找到太合適的,所以自己重頭實(shí)現(xiàn)了一個(gè)。歷經(jīng)幾個(gè)項(xiàng)目的磨練,這個(gè)提示組件的功能已經(jīng)越來(lái)越完善,這次就分享一下組件以及其實(shí)現(xiàn)思路吧。
在河?xùn)|等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,河?xùn)|網(wǎng)站建設(shè)費(fèi)用合理。GitHub 倉(cāng)庫(kù): https://github.com/Yuyz0112/vue-notie
Demo 地址: http://lab.myriptide.com/vue-notie/

深入組件化,組件的拆分、整合與復(fù)用
Vue.js的組件化可以說(shuō)是其招牌特性之一,而在實(shí)際應(yīng)用時(shí),并非一味地追求組件顆粒越小越好,而是需要根據(jù)項(xiàng)目的實(shí)際需求,來(lái)分析自己需要什么級(jí)別的組件。
例如在一個(gè)SPA中,我可能有主頁(yè)、文章列表頁(yè)、文章頁(yè)、個(gè)人中心頁(yè)4個(gè)主要的視圖,于是我將其分別對(duì)應(yīng)的寫(xiě)成4個(gè)組件。
但是在實(shí)際編寫(xiě)的過(guò)程中,發(fā)現(xiàn)他們共用了同一套側(cè)邊欄,而側(cè)邊欄對(duì)應(yīng)的代碼也在4個(gè)組件中重復(fù)書(shū)寫(xiě)了4次。所以可以將側(cè)邊欄單獨(dú)寫(xiě)成一個(gè)組件進(jìn)行復(fù)用。
之后,我們可能發(fā)現(xiàn)可以復(fù)用的還有一些表單、按鈕之類(lèi)的內(nèi)容我們都可以復(fù)用成組件。但實(shí)際上,我們也會(huì)發(fā)現(xiàn)過(guò)度的組件化會(huì)導(dǎo)致代碼量上升、開(kāi)發(fā)時(shí)間增加以及額外的數(shù)據(jù)傳遞等等。所以如果不打算制作一個(gè)完整的組件庫(kù),那么在實(shí)際項(xiàng)目中做到按需拆分、整合即可,不用過(guò)分的追求每個(gè)可復(fù)用的部分都寫(xiě)成單個(gè)組件。
為什么需要一個(gè)提示組件
因?yàn)閍lert大部分時(shí)間不能滿足我們的需求啊。往往項(xiàng)目里需要一個(gè)類(lèi)似于alert的東西,用美觀、可定制的方式提示用戶一些信息,因此這樣一個(gè)提示組件很有必要。
同時(shí),我們也不希望同一時(shí)間出現(xiàn)多個(gè)提示混淆用戶,因此在設(shè)計(jì)上,我們將提示組件設(shè)定為具有 唯一性 ,整個(gè)應(yīng)用中各個(gè)視圖調(diào)用的都是同一個(gè)提示組件。
Show me the code
接下來(lái),由簡(jiǎn)入繁依次實(shí)現(xiàn)提示組件的各個(gè)功能。
基本功能
最基本的功能當(dāng)然是觸發(fā)后顯示,并且能夠以某種方式關(guān)閉。唯一需要自定義的部分,就是具體顯示的內(nèi)容。所以最開(kāi)始組件長(zhǎng)這樣:
<template>
<div class="notification fixed"
v-if="show"
transition="slide">
<div class="delete"
@click="close()"></div>
<div class="content">
{{ options.content }}
</div>
</div>
</template>
<script>
export default {
props: {
options: {
type: Object,
default: () => {
return {}
}
},
show: {
type: Boolean,
default: false
}
},
methods: {
close () {
this.show = false
this.options = {}
}
}
}
</script>
<style scoped lang="sass">
.slide-transition
transition: all .3s ease
transform: translate3d(0, 0, 0)
.slide-enter,
.slide-leave
transform: translate3d(0, -100%, 0)
.delete
-moz-appearance: none
-webkit-appearance: none
background: rgba(51,51,51,0.2)
cursor: pointer
display: inline-block
height: 24px
position: relative
vertical-align: top
width: 24px
float: right
&:before,
&:after
background: #fff
content: ""
display: block
height: 2px
left: 50%
margin-left: -25%
margin-top: -1px
position: absolute
top: 50%
width: 50%
&:before
transform: rotate(45deg)
&:after
transform: rotate(-45deg)
&:hover
background: rgba(51,51,51,0.5)
.notification
width: 100%
line-height: 2
z-index: 3
position: fixed
top: 0
left: 0
.content
padding: .75rem 2rem
</style>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞標(biāo)題:vue.js的提示組件-創(chuàng)新互聯(lián)
鏈接分享:http://chinadenli.net/article28/dhcpcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站制作、企業(yè)建站、外貿(mào)建站、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)