好久沒有寫關(guān)于微信小程序的隨筆了,其實(shí)是不知道寫點(diǎn)什么好,之前的豆瓣圖書和知乎日?qǐng)?bào)已經(jīng)把小程序的基礎(chǔ)部分寫的很詳細(xì)了,高級(jí)部分的API有些還得不到IDE的調(diào)試支持。之前發(fā)表了知乎日?qǐng)?bào)小例,有網(wǎng)友問我小程序有沒有關(guān)于日歷顯示的組件,可以顯示所有天數(shù)的,自己看了一遍,好像沒有這個(gè)組件,所以打算那這個(gè)功能來練手,在準(zhǔn)備期間,微信開發(fā)者工具已經(jīng)升級(jí)了兩三次,添加了部分功能和修改了部分功能,導(dǎo)致之前的例子的寫法不兼容更新后的IDE,還得修改代碼。隨著小程序的不斷更新,功能越來越完善,我想我也應(yīng)該緊跟官方的升級(jí)步伐,這次的案例使用了IDE支持的ES6和新的API。
這次介紹的是一個(gè)比較簡(jiǎn)單的小應(yīng)用事項(xiàng)助手,其實(shí)跟事項(xiàng)也不沾多少邊,只是作為輔助功能,只有數(shù)據(jù)的添加和刪除,主要內(nèi)容是日歷這塊內(nèi)容。日歷組件在web應(yīng)用中應(yīng)用非常廣泛,插件也非常豐富,但是小程序不支持傳統(tǒng)的插件寫法,而是以數(shù)據(jù)驅(qū)動(dòng)內(nèi)容。
大部分的日歷選擇器都是差不多的,能顯示當(dāng)前的年份、月份和天數(shù),可以選擇某天、某月或者某年,我們可以打開操作系統(tǒng)中自帶的日歷觀察一番。
日歷的布局大同小異,本次案例的布局也是中規(guī)中矩,比較傳統(tǒng),頭部顯示當(dāng)前年份月份,頭部的左右個(gè)顯示一個(gè)翻頁按鈕,跳轉(zhuǎn)到上一月和下一月,下半部分顯示當(dāng)月的天數(shù)列表,由于每月的天數(shù)可能不一樣,列表的格數(shù)是固定的,所以當(dāng)月的天數(shù)顯示使用高亮,其余的使用偏灰色彩。
本次案例用到了ES6,先來了解一下案列中用到的幾個(gè)寫法。本人也是順帶學(xué)習(xí)順帶編寫,可能代碼中還存在部分老的寫法。
ES6中聲明變量可以用let聲明變量,用const聲明常量,即不可改變的量。
1
2
3
4
5
|
let version = '1.0.0';
const weekday = 7;
version = '2.0.0';
weekday = 8; //錯(cuò)誤,用const聲明的常量,不能修改值
|
本習(xí)慣用大寫字母和下劃線的組合方式來聲明全局的常量
1
|
const CONFIG_COLOR = '#FAFAFA';
|
小程序的每一個(gè)頁面都有一個(gè)相對(duì)應(yīng)的js文件,里面必不可少的就是Page函數(shù),Page函數(shù)接受的參數(shù)是一個(gè)對(duì)象,我們經(jīng)常使用的寫法就是:
1
2
3
4
5
6
7
8
9
10
11
12
|
Page({
data: {
userAvatar: './images/avatar.png',
userName: 'Oopsguy'
},
onLoad: function() {
//....
},
onReady: function() {
//....
}
});
|
現(xiàn)在換做ES6的寫法,我們可以這樣:
1
2
3
4
5
6
7
8
9
10
11
12
|
Page({
data: {
userAvatar: './images/avatar.png',
userName: 'Oopsguy'
},
onLoad() {
//....
},
onReady() {
//....
}
});
|
我們可以把以前的鍵值寫法省略掉,而且function聲明也不需要了。
ES6中擁有了類這一概念,聲明類的方式很簡(jiǎn)單,跟其他語言一樣,差別不大: