好久沒有寫關于微信小程序的隨筆了,其實是不知道寫點什么好,之前的豆瓣圖書和知乎日報已經把小程序的基礎部分寫的很詳細了,高級部分的API有些還得不到IDE的調試支持。之前發表了知乎日報小例,有網友問我小程序有沒有關于日歷顯示的組件,可以顯示所有天數的,自己看了一遍,好像沒有這個組件,所以打算那這個功能來練手,在準備期間,微信開發者工具已經升級了兩三次,添加了部分功能和修改了部分功能,導致之前的例子的寫法不兼容更新后的IDE,還得修改代碼。隨著小程序的不斷更新,功能越來越完善,我想我也應該緊跟官方的升級步伐,這次的案例使用了IDE支持的ES6和新的API。
這次介紹的是(shi)一個比較(jiao)簡單的小應(ying)用事項助手(shou),其實跟事項也不沾多少邊,只(zhi)是(shi)作為輔(fu)助功能,只(zhi)有數據的添加(jia)和刪(shan)除,主要內(nei)容(rong)是(shi)日(ri)歷(li)這塊內(nei)容(rong)。日(ri)歷(li)組件在(zai)web應(ying)用中(zhong)應(ying)用非常(chang)廣(guang)泛,插(cha)件也非常(chang)豐(feng)富,但是(shi)小程序不支持傳統的插(cha)件寫法,而是(shi)以數據驅(qu)動內(nei)容(rong)。
大部分(fen)的(de)日(ri)歷(li)選擇器都是差不多(duo)的(de),能顯(xian)示當前的(de)年份(fen)、月份(fen)和天數,可以選擇某(mou)天、某(mou)月或者某(mou)年,我(wo)們可以打開(kai)操作系(xi)統中自(zi)帶的(de)日(ri)歷(li)觀(guan)察(cha)一番。
日歷的(de)布(bu)局大同小異,本次案例的(de)布(bu)局也是中規(gui)中矩,比較傳統,頭(tou)部(bu)(bu)顯(xian)示當前年份月份,頭(tou)部(bu)(bu)的(de)左右(you)個顯(xian)示一(yi)個翻頁按鈕(niu),跳轉到(dao)上一(yi)月和下一(yi)月,下半部(bu)(bu)分(fen)顯(xian)示當月的(de)天(tian)數(shu)列(lie)表,由于每月的(de)天(tian)數(shu)可能不一(yi)樣,列(lie)表的(de)格數(shu)是固定的(de),所以當月的(de)天(tian)數(shu)顯(xian)示使用高(gao)亮,其(qi)余(yu)的(de)使用偏(pian)灰色彩。
本次案(an)例用(yong)(yong)到了(le)ES6,先來(lai)了(le)解一下案(an)列中(zhong)用(yong)(yong)到的幾個寫法。本人也是順帶(dai)學習順帶(dai)編寫,可能(neng)代碼(ma)中(zhong)還存在部(bu)分(fen)老的寫法。
ES6中聲(sheng)明變量(liang)可以用let聲(sheng)明變量(liang),用const聲(sheng)明常量(liang),即不(bu)可改變的量(liang)。
|
1
2
3
4
5
|
let version = '1.0.0';
const weekday = 7;
version = '2.0.0';
weekday = 8; //錯誤,用const聲明的常量,不能修改值
|
本(ben)習慣(guan)用大寫字母和下劃(hua)線的組合方式來聲明(ming)全局的常(chang)量(liang)
|
1
|
const CONFIG_COLOR = '#FAFAFA';
|
小(xiao)程序(xu)的每一個(ge)頁面都有一個(ge)相對應的js文件(jian),里面必不可(ke)少的就(jiu)是(shi)Page函(han)數,Page函(han)數接受的參數是(shi)一個(ge)對象,我(wo)們經常使用的寫(xie)法就(jiu)是(shi):
|
1
2
3
4
5
6
7
8
9
10
11
12
|
Page({
data: {
userAvatar: './images/avatar.png',
userName: 'Oopsguy'
},
onLoad: function() {
//....
},
onReady: function() {
//....
}
});
|
現(xian)在換做(zuo)ES6的寫(xie)法,我(wo)們可以這樣:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
Page({
data: {
userAvatar: './images/avatar.png',
userName: 'Oopsguy'
},
onLoad() {
//....
},
onReady() {
//....
}
});
|
我們可以(yi)把(ba)以(yi)前的鍵值寫法省略掉,而且function聲明也不需要(yao)了(le)。
ES6中擁有(you)了類這一概念,聲明類的方(fang)式(shi)很簡單,跟其他語言一樣,差別(bie)不大: