微信小程式開發05-日曆元件的實現

發表於2018-08-07

接上文:微信小程式開發04-打造自己的UI庫

github地址:https://github.com/yexiaochai/wxdemo

我們這裡繼續實現我們的日曆元件,這個日曆元件稍微有點特殊,算是相對複雜的元件了,然後一般的日曆元件又會有很多的變化,所以我們這裡實現最基本的標籤即可:

這個是非常簡陋的日曆雛形,在程式碼過程中有以下幾點比較痛苦:

① WXML與js間應該只有資料傳遞,根本不能傳遞方法,應該是兩個webview的通訊,而日曆元件這裡在WXML層由不得不寫一點邏輯

② 本來在WXML中寫邏輯已經不太對了,而我們引入的WXS,使用與HTML中的js片段也有很大的不同

這些問題,一度讓程式碼變得複雜,而可以看到一個簡單的元件,還沒有複雜功能,涉及到的檔案都太多了,這裡是呼叫層:

事實上,我們以上資料根本不應該寫到data裡面,應該屬性傳遞,我們這裡先為了簡單實現功能,接下來我們繼續完善這個元件,具體程式碼請看git:

這個日曆元件應該是在小程式中寫的最複雜的元件了,尤其是很多邏輯判斷的程式碼都放在了WXML裡面,根據之前的瞭解,小程式渲染在一個webview中,js邏輯在一個webview中,他這樣做的目的可能是想讓效能更好,但是我這裡程式碼寫起來事實上是有點痛苦的,我們這裡開始組裝元件,將資料配置放到屬性上,開始組裝abstract-page,事實上我認為日曆這種非全域性元件本來不應該放到基類中:

① 因為Component提供的是一個標籤,而且涉及的檔案很多,加上繼承關係很不好管理

② 因為日曆元件事實上是一個標籤,所以我們會有一個引入的基礎WXML,一個使用的js,完全獨立一個檔案更加複雜

③ 本來小程式或者複雜的頁面都應該元件化開發,所以我們簡歷一個頁面級別的元件,分散到對應的頁面中

小程式像是給靈活的HTML&JS戴上了枷鎖,只允許在其允許的範圍靈活,我們這裡嘗試對頁面進行再拆分:

核心程式碼還是在abstract-page裡面:

這裡再改造一下,我們基本的日曆元件便完成了80%了:

至此,我們元件相關課題基本結束,接下來,我們開始我們的業務程式碼

相關文章