863
搜狐
微信小程序開發教程 基礎篇3-app.js 解析
上一篇教程中寫道,開發工具會生成一個默認的程序框架,其中程序的主流程代碼包含在app.js中。默認實現中,該部分功能比較簡單,不過對於學研究小程序開發還是比較有價值的。
由於代碼行數不多,下麵一次性貼出來後進行講解
//app.jsApp({ onLaunch: function () { //調用API從本地緩存中獲取數據 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) }, getUserInfo:function(cb){ var that = this if(this.globalData.userInfo){ typeof cb == "function" && cb(this.globalData.userInfo) }else{ //調用登錄接口 wx.login({ success: function () { wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } }) } }) } }, globalData:{ userInfo:null } })
代碼中定義了一個App對象,該對象包含onLaunch, getUserInfo兩個方法和globalData成員變量其中onLaunch方法會在程序啟動時由框架來進行調用。在該方法中,程序通過微信提供的本地存儲接口獲取了一個logs變量,第一次獲取時會返回空,這時將變量初始化為空數組。之後在數組頭部添加一個格式化的時間字符串,之後將數組變量存儲在本地。
getUserInfo方法很容易理解,會執行獲取用戶信息的功能。不過該方法不同於onLaunch,它不是框架預設的函數,因此不會自動觸發調用。該方法是在index.js的onload方法中調用的(關於index.js部分會在後續教程中講解)。該方法需要調用者傳遞一個名為cb的參數,首先判斷是否獲取過用戶信息,如果獲取過並且cb是函數的話,就會調用cb函數並將globalData成員變量傳遞進去,否則將調用wx.login接口來獲取用戶信息。
對js不熟悉或者很少接觸腳本語言的同學可能會對上述代碼的語法產生困惑,這幾行代碼涉及到了函數回調,匿名函數,閉包等概念,我後續會針對這部分單獨寫一篇教程。
代碼最後定義了 globalData成員變量,該成員包含userInfo變量,用來保存用戶信息。
hello, 我是瘋狂早茶,懂點設計,懂點產品,碼農一枚,歡迎互聯網技術,產品從業者,愛好者關注交流。我的微信公眾號crazytea1,歡迎關注
最後更新:2017-10-08 03:10:42