通用方法(模組化)
- ajax請求: wx.request()
// wx.request 封裝 post: function(url = '', json, cb = () => {}, cbErr) { var _this = this var token = '' let userInfo = wx.getStorageSync('userInfo') wx.getStorage({ key: 'token', success: function(res) { token = res.data json.token = token json.business_no = business_no wx.request({ url: _this.globalData.web_url + url, header: { 'content-type': 'application/x-www-form-urlencoded' }, method: 'POST', data: json, success: function(res) { if (res.data.code == 200) { cb(res) } else if (res.data.code == 301) { _this.handleLogin(userInfo) } else if (res.data.code == 41000) { wx.showToast({ title: res.data.msg || '操作失敗,請稍後再試', icon: 'none', duration: 2000 }) } }, fail: function(err) { console.log('err:', err) wx.showToast({ title: err || '操作失敗,請稍後再試', icon: 'none', duration: 2000 }) } }) } }) },複製程式碼
- 日期時間格式化: dateFormat()
// 格式化整數 formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n }, // 格式化時間日期 formatTime(date, format = 'yyyy-mm-dd hh:mm') { var _this = this var date = date * 1000 if (date) { const year = new Date(date).getFullYear() const month = new Date(date).getMonth() + 1 const day = new Date(date).getDate() const hour = new Date(date).getHours() const minute = new Date(date).getMinutes() const second = new Date(date).getSeconds() if (format == 'yyyy-mm-dd') { return [year, month, day].map(_this.formatNumber).join('/') } else { return ( [year, month, day].map(_this.formatNumber).join('/') + ' ' + [hour, minute].map(_this.formatNumber).join(':') ) } } },
複製程式碼
- 獲取裝置型號
//獲取裝置型號 getDevice() { wx.getSystemInfo({ success: function(res) { console.log('device-model:', res) if (res.model.indexOf('iPhone X') != -1) { this.globalData.deviceType = 1 console.log('deviceType324234', _this.globalData.deviceType) } } }) },複製程式碼
資料儲存
關於同步快取和非同步快取的區別
以Sync(同步,同時)結尾的都是都是同步快取,二者的區別是,非同步不會阻塞當前任務,同步快取直到同步方法處理完才能繼續往下執行。
非同步快取
wx.setStorage({
key:'token',
data: '231321313123'
})
wx.getStorage({
key:'token',
success: function(res){
console.log(res.data)
}
})
wx.removeStorage({
key: 'token',
success: function(res){
cosnole.log(res.data)
}
})複製程式碼
小程式合成圖片文字並儲存到本地
技術點:
- canvas【wx.drawImage(), wx.fillText(), wx.draw()】
- wx.canvasToTempFilePath(false,callback) // 把當前畫布指定區域的內容匯出生成指定大小的圖片,並返回檔案路徑
- wx.saveImageToPhotosAlbum() //將檔案儲存到本地相簿,注意要在圖片生成的回撥函式中執行
注意問題:
真機除錯的時候,圖片如果是網路圖片會顯示不出來,需要先呼叫wx.downloadFile將圖片快取下來
或者直接將圖片放在本地再進行合成
頁面:
<canvas canvas-id="shareCanvas" style="width:300px;height:300px;border:1rpx solid #ccc;"></canvas>複製程式碼
效果圖:
小程式但引數分享(邀請有禮)
Page({
onShareAppMessage: function (res) {
if (res.from === 'button') {
// 來自頁面內轉發按鈕
console.log(res.target)
}
return {
title: '自定義轉發標題',
path: '/page/user?id=123'
}
}
})複製程式碼
可以將需要攜帶的引數放在path的頁面引數中,然後在頁面的onload(options)方法中的options獲取
分享時小程式封面圖片:
imageUrl | 自定義圖片路徑,可以是本地檔案路徑、程式碼包檔案路徑或者網路圖片路徑,支援PNG及JPG,不傳入 imageUrl 則使用預設截圖。顯示圖片長寬比是 5:4 |
小程式基礎庫版本與微信客戶端版本的關係
小程式的能力需要微信客戶端來支撐,每一個基礎庫都只能在對應的客戶端版本上執行,高版本的基礎庫無法相容低版本的微信客戶端。
以微信 6.5.8 為例,客戶端在釋出時攜帶的是 1.1.1 基礎庫(6.5.7 上已全量的穩定版)釋出,在 6.5.8 釋出後,我們再通過後臺灰度 1.2.0 基礎庫。
目前小程式開發文件中很多的元件都是基於版本庫最低1.4.0的,所以建議設定線上最低基礎庫為1.4.0