基于WePY2.x框架下的小程序開發(fā)實(shí)現(xiàn)動(dòng)畫效果的彈窗組件

這個(gè)項(xiàng)目很適合新手入門WePY框架和小程序開發(fā),包含組件封裝,自定義導(dǎo)航,微信登錄,網(wǎng)絡(luò)請(qǐng)求、各種業(yè)務(wù)邏輯處理等。覺得有用的幫忙給個(gè)star~

基于WePY2.x框架下仿豆瓣小程序

標(biāo)題實(shí)在是不知道該怎么再進(jìn)行縮減了。首先說(shuō)明下是小程序開發(fā),其次是基于WePY框架下。因?yàn)槠涫褂妙?strong>Vue語(yǔ)法進(jìn)行小程序開發(fā),與原生小程序開發(fā)和基于Taro框架下使用類React語(yǔ)法的小程序開發(fā)在語(yǔ)法上還是有很大區(qū)別的,所以特別強(qiáng)調(diào)一下。

一、前言

隨著公司小程序需求的日益上升,在假期自學(xué)了原生小程序開發(fā)以及小程序云開發(fā)。但是公司小程序工程又是基于WePY框架下進(jìn)行開發(fā)的,其使用類Vue語(yǔ)法,方便那些習(xí)慣于用Vue框架進(jìn)行前端開發(fā)的同學(xué)。所以進(jìn)行WePY開發(fā)之前,還要先去學(xué)習(xí)Vue。

但是類Vue畢竟是類Vue,與本身的Vue還是有諸多不同的。在WePY1.x的時(shí)代,一眼就能看到原生小程序的影子。目前的2.x時(shí)代已經(jīng)對(duì)此優(yōu)化了很多,本篇文章就是基于WePY2.x下實(shí)現(xiàn)動(dòng)畫效果的彈窗組件的,所以使用的時(shí)候一定要先注意版本。

二、代碼

動(dòng)畫彈窗組件

里面包含了Vue、原生小程序基于WePY框架三種實(shí)現(xiàn)方案。具體為什么會(huì)有3種,且往下看。

三、實(shí)現(xiàn)歷程

1. Vue實(shí)現(xiàn)

因?yàn)閃ePY框架下的小程序是類Vue語(yǔ)法,所以自然而然想到用Vue的方式去解決問(wèn)題。

  • 實(shí)現(xiàn)效果


    Vue實(shí)現(xiàn)效果
  • 實(shí)現(xiàn)原理

通過(guò)Vue的transition標(biāo)簽+CSS3動(dòng)畫屬性

  • 實(shí)現(xiàn)代碼

Vue實(shí)現(xiàn)彈窗組件

本案例通過(guò)cdn引用而Vue,去測(cè)試實(shí)現(xiàn)動(dòng)畫彈窗。因?yàn)橹皇菍?shí)驗(yàn),所以并沒(méi)有使用Vue腳手架

  • 實(shí)現(xiàn)邏輯

水平有限,在自己的知識(shí)區(qū)內(nèi)進(jìn)行解釋。具體可以看代碼

通過(guò)transition組件去監(jiān)聽其下DOM的插入與移除。transition的特性就是可以給任何元素和組件添加enter/leave的過(guò)渡。詳細(xì)點(diǎn)說(shuō)就是當(dāng)DOM通過(guò)v-ifv-show顯示或隱藏時(shí),transition會(huì)在其顯示與隱藏的過(guò)渡階段動(dòng)態(tài)添加enter或者leave類。然后結(jié)合CSS3的transition屬性,去針對(duì)不同的過(guò)渡階段做動(dòng)畫樣式。這點(diǎn)其實(shí)和React的一個(gè)動(dòng)畫庫(kù)react-transition-group有異曲同工之妙,之前的一篇文章有玩過(guò)React轉(zhuǎn)場(chǎng)動(dòng)畫,期間就使用了React這個(gè)庫(kù)。

  • 結(jié)果

在Vue工程下,成功實(shí)現(xiàn)了彈窗組件。將其移植到WePY的小程序工程中,出現(xiàn)了問(wèn)題。WePY雖然是類Vue語(yǔ)法,但畢竟不是真正的Vue,所以不識(shí)別transition組件~Game Over

2. 原生小程序?qū)崿F(xiàn)

打開小程序官方文檔,發(fā)現(xiàn)有相關(guān)實(shí)現(xiàn)動(dòng)畫的API

  • 實(shí)現(xiàn)效果


    原生小程序?qū)崿F(xiàn)效果
  • 實(shí)現(xiàn)原理

小程序官方API wx.createAnimation(Object object)

  • 實(shí)現(xiàn)代碼

原生小程序?qū)崿F(xiàn)彈窗組件

  • 實(shí)現(xiàn)邏輯

水平有限,在自己的知識(shí)區(qū)內(nèi)進(jìn)行解釋。具體可以看代碼

創(chuàng)建組件時(shí),使用wx.createAnimation初始化一個(gè)動(dòng)畫實(shí)例。通過(guò)observes監(jiān)聽組件的是否顯示屬性的變化。根據(jù)屬性的改變值調(diào)用動(dòng)畫實(shí)例的bottom(改變哪個(gè)CSS屬性就調(diào)用動(dòng)畫實(shí)例的哪個(gè)方法)函數(shù),并傳入bottom改變的值。然后導(dǎo)出動(dòng)畫隊(duì)列并其綁定給動(dòng)畫載體(標(biāo)簽)的animation屬性。

  • 結(jié)果
    WePY工程不支持原生小程序語(yǔ)法,最明顯的就是原生小程序通過(guò)setData手動(dòng)去實(shí)現(xiàn)數(shù)據(jù)綁定,而WePY可以通過(guò)類Vue的v-bind進(jìn)行綁定。并且兩者組件之間本身就是有很多區(qū)別的。具體可以查看WePY文檔

3. WePY小程序?qū)崿F(xiàn)

雖然WePY不支持原生小程序的語(yǔ)法,但是其工程內(nèi)是可以調(diào)用原生小程序的官方API的

  • 實(shí)現(xiàn)效果


    WePY實(shí)現(xiàn)效果
  • 實(shí)現(xiàn)原理

小程序官方API wx.createAnimation(Object object)

  • 實(shí)現(xiàn)代碼

WePY小程序?qū)崿F(xiàn)彈窗組件

  • 實(shí)現(xiàn)邏輯

水平有限,在自己的知識(shí)區(qū)內(nèi)進(jìn)行解釋。具體可以看代碼

通過(guò)類Vue語(yǔ)法v-bind去綁定動(dòng)畫載體的animation屬性,在watch下去監(jiān)聽顯示與隱藏屬性的改變,然后動(dòng)態(tài)去導(dǎo)出wx.createAnimation創(chuàng)建的動(dòng)畫實(shí)例的動(dòng)畫隊(duì)列。此時(shí)不用進(jìn)行setData,因?yàn)?strong>v-bind已經(jīng)自動(dòng)將新的動(dòng)畫隊(duì)列綁定到動(dòng)畫載體上了。

  • 結(jié)果

完美解決需求,最后的實(shí)現(xiàn)也確實(shí)很有意思,用的vue語(yǔ)法,去綁定原生小程序組件特有的animation屬性。所以印證了勇于嘗試,勇于探索是解決問(wèn)題的唯一之道

四、額外補(bǔ)充

在三種方式封裝組件中,無(wú)論哪一種都是支持solt插槽組件。所以可以將彈窗內(nèi)容作為插槽,以便使用者針對(duì)業(yè)務(wù)需求擴(kuò)展出更加個(gè)性化的彈窗樣式。

五、感觸

前端雖雜,但還是很有趣的。加油吧!??!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 開源項(xiàng)目 wepy-wechat-demo:基于wepy開發(fā)的仿微信聊天界面小程序 深大的樹洞:基于wepy開發(fā)的...
    dufebin閱讀 4,223評(píng)論 0 19
  • 在說(shuō)說(shuō)WePY框架之前,先小結(jié)一下自己對(duì)前端工作的基本認(rèn)識(shí)。對(duì)普通的前端開發(fā)者來(lái)講,做到心中有數(shù),方能得心應(yīng)手。在...
    鋒享前端閱讀 1,031評(píng)論 0 1
  • 即使在這個(gè)信息全球化、思想開放的現(xiàn)代社會(huì),國(guó)人對(duì)于姻婚的觀念還是相當(dāng)傳統(tǒng)的,女孩一旦芳齡過(guò)30歲,就自然被社...
    依寒閱讀 700評(píng)論 0 0
  • 不是因?yàn)橛辛讼M艌?jiān)持 而是因?yàn)閳?jiān)持才有希望 不是因?yàn)橛辛藱C(jī)會(huì)才爭(zhēng)取 而是因?yàn)闋?zhēng)取了才有機(jī)會(huì) 不是因?yàn)闀?huì)了才去做 ...
    Seven_七柒琪閱讀 307評(píng)論 0 0
  • 哄小轟閱讀 197評(píng)論 0 1

友情鏈接更多精彩內(nèi)容