1.全局變量的使用
每個小程序都需要在 app.js 中調用 App 方法注冊小程序示例,綁定生命周期回調函數、錯誤監聽和頁面不存在監聽函數等。
詳細的參數含義和使用請參考 App 參考文檔 。
整個小程序只有一個 App 實例,是全部頁面共享的。開發者可以通過 getApp 方法獲取到全局唯一的 App 示例,獲取App上的數據或調用開發者注冊在 App 上的函數。
我們在做小程序的時候往往需要大量的請求,而請求的域名也都是相同的,我們可以把域名儲存到全局變量中,這樣會方便后面請求域名的修改。(user_id、unionid、user_info之類經常用到的都可以放在全局變量中)
//app.jsApp({ globalData: { user_id: null, unionid:null, url:"https://xxx.com/index.php/Home/Mobile/", //請求的域名 user_info:null }})當在頁面中使用時記得要引用下app.js,小程序已經提供了方法
//index.js//獲取應用實例const app = getApp() //獲取app//let url = app.globalData.url; //使用方法,可先定義或者直接使用app.globalData.urlwx.request({ url: app.globalData.url + 'checkfirst', //就可以直接在這里調用 method:'POST', header:{"Content-Type":"application/x-www-form/"} data:{}, success:(res)=>{}2.箭頭函數的使用
當我們調用接口請求時要通過請求返回的數據改變頁面數據經常要用到臨時指針來保存this指針。
但如果使用ES6的箭頭函數就可以避免
使用臨時指針
onLoad: function (options) { let that = this //保存臨時指針 wx.request({ url: url + 'GetCouponlist', method: 'POST', header: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: { }, success(res) { that.setData({ //使用臨時指針 coupon_length:res.data.data.length }) } })使用ES6箭頭函數 ( ) => {}
success:(res) => { this.setData({ //此時this仍然指向onLoad coupon_length:res.data.data.length }) }3.HTTP請求方法的封裝
在小程序中http請求是很頻繁的,但每次都打出wx.request是很煩的,而且代碼也是冗余的,所以我們要把他封裝起來
首先要在utils文件夾中新建一個js,我命名為request.js,在里面封裝出post和get的請求,記得最后要聲明出來
//封裝請求const app = getApp()let host = app.globalData.url/** * POST 請求 * model:{ * url:接口 * postData:參數 {} * doSuccess:成功的回調 * doFail:失敗回調 * } */function postRequest(model) { wx.request({ url: host + model.url, header: { "Content-Type": "application/x-www-form-urlencoded" }, method: "POST", data: model.data, success: (res) => { model.success(res.data) }, fail: (res) => { model.fail(res.data) } })}/** * GET 請求 * model:{ * url:接口 * getData:參數 {} * doSuccess:成功的回調 * doFail:失敗回調 * } */function getRequest(model) { wx.request({ url: host + model.url, data: model.data, success: (res) => { model.success(res.data) }, fail: (res) => { model.fail(res.data) } })}/** * module.exports用來導出代碼 * js中通過 let call = require("../util/request.js") 加載 */module.exports = { postRequest: postRequest, getRequest: getRequest}
新聞熱點
疑難解答