這篇文章主要介紹了微信小程式開發經驗整理總結開發經驗整理的相關資料,需要的朋友可以參考下
微信小程式開發經驗整理
前言:
最近小程式出來了,公司也要求我們開發一款小程式。
於是,就開始著手做了,做了差不多一週吧,也遇到了很多問題,這裡就來總結一下。 (主要是從一個Android開發者的角度來述說的,可能比較零碎的一些知識點和經驗,如果大家還有補充,歡迎)
總結
#1:傳參,方法判斷
js中方法中可以傳遞一個方法作為形參,在java中是不可以的。例如專案中的
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) } }) } }) } },
這裡就是傳遞一個形參,cb的方法,而這裡還有一個很巧妙的判斷方法
typeof cb == "function" && cb(that.globalData.userInfo)
利用的&&的運算規律,首先判斷cb是不是一個方法, 這裡的==可以作為類型是否相當的判斷,然後在&&中如果前面的不滿足,後面的則不會執行;如果是cb是方法,呼叫cb方法,傳入success成功回呼的userinfo參數
還有一點,if(this.globalData.userInfo) 可以作為是否為null的判斷條件,在java中不可以。
2:log印
log的列印,如果直接列印「」+變數是不可以的,因為人家沒有toString()方法
X console.log("info"+info);
所以只能分開列印
console.log("info"); console.log(info);
3: json取物件
json的使用,可以透過json["key"]來取其子物件
person: { name: "jafir", age: "11", } var name = person["name"]; var age = person["age"];
info: {persons:[{name:"123",age:11},{name:"jafir1",age:12}]} //如果有数组 通过这种方法获取 console.log(that.data.info["persons"][1].name) console.log(that.data.info["persons"][1].age)## 4:定義boolean型別值要注意如果在page的data中要定義一個boolean型別的值,必須是isSuccess : true而不是isSuccess :"true"
#
if (this.data.isSccess) { console.log("true") } else { console.log("false") }因為如果是isSucees : "true" ,結果為true,沒問題,但是如果是isSucess:"false",結果依舊為true,
//上下文对象 var that; page({ onLoad: function (options) { // 页面初始化 options为页面跳转所带来的参数 that = this; } ... that.setData({ xxx: xxx, }) })6:page的生命週期方法
onLoad: function (options) { var value= options.key }然後JSON.stringify( value)轉為json物件使用
這種情況,一般是沒有辦法解決的。經過測試,如果你想要從二級非主頁介面直接navigator打開主頁,是不行的,會報錯。
<image src="{{logoUrl?logoUrl:'../../img/paihao.png'}}"></image>
4.如果你想要显隐view你可以通过wx:if="true/false"来处理,但是这样的话,如果为false,page不会去渲染这个view,它所在的位置空间也不会预留,假如下面的view就会往上排。如果想要留存它的位置空间,可以修改其style样式来解决
style="visibility:{{isShow?'visible':'hidden'}}"
9:统一网络请求处理结果
你可以封装一下网络请求的返回结果,做统一处理
requestWithGet: function(paramsData) { data.method = 'GET' this.requestInternal(paramsData) }, requestWithPost: function(paramsData) { data.method = 'POST' this.requestInternal(paramsData) }, requestInternal: function (paramsData) { var that = this; console.log('requestInternal: 开始请求接口[' + paramsData.url + ']'); //开始网络请求 wx.request({ url: paramsData.url, data: paramsData.data, method: paramsData.method, success: function (res) { console.log('requestInternal: 接口请求成功[' + paramsData.url + ']'); paramsData.success(res); }, fail: function (res) { console.log('requestInternal: 接口请求失败[' + paramsData.url + ']'); console.log(res); ////在这里做请求失败的统一处理 wx.showToast({ title: '网络访问失败', duration: 1500 }) typeof paramsData.fail == "function" && paramsData.fail(res); }, complete: function (res) { //在这里做完成的统一处理 typeof paramsData.complete == "function" && paramsData.complete(res); } }) }
这样在使用请求的时候,可以直接先wx.request({}) 这样,就可以IDE给你联想生成对应的请求格式,然后直接把“wx.request” 替换 “requestWithGet”或者“requestWithPost”就OK了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
以上是微信小程式開發經驗整理總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!