微信小程序 開發經驗整理
前言:
最近小程序出來了,公司也要求我們開發一款小程序。
于是,就開始著手做了,做了差不多一周吧,也遇到了很多問題,這里就來總結一下。(主要是從一個Android開發者的角度來述說的,可能比較零碎的一些知識點和經驗,如果大家還有補充,歡迎)
總結
1:傳參,方法判斷
js中 方法中可以傳遞一個方法作為形參,在java中是不可以的。比如start項目中的
getUserInfo:function(cb){varthat=thisif(this.globalData.userInfo){typeofcb=="function"&&cb(this.globalData.userInfo)}else{//調用登錄接口wx.login({success:function(){wx.getUserInfo({success:function(res){that.globalData.userInfo=res.userInfotypeofcb=="function"&&cb(that.globalData.userInfo)}})}})}},
這里就是傳遞一個形參,cb的方法,并且這里還有一個很巧妙的判斷方法
typeofcb=="function"&&cb(that.globalData.userInfo)
利用的&&的運算規律,首先判斷cb是不是一個方法, 這里的==可以作為類型是否相當的判斷,然后在&&中如果前面的不滿足,后面的則不會執行;如果是cb是一個方法,調用cb方法,并且傳入success成功回調的userinfo參數
還有一點,if(this.globalData.userInfo) 可以作為是否為null的判斷條件,在java中不可以。
2:log打印
log的打印,如果直接打印“”+變量 是不可以的,因為人家沒有toString()方法
Xconsole.log("info"+info);
所以只能分開打印
console.log("info");console.log(info);
3: json取對象
json的使用,可以通過 json["key"]來取其子對象
person:{name:"jafir",age:"11",}varname=person["name"];varage=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,
因為這里的isSuccess不是boolean,而是一個非空類型,既然非空,if就是為true
如果,默認undefined,if則為false
5:使用"that"
建議在 page{}外面定義一個that變量,然后在onLoad中賦值為this,以后所有的地方,都可以使用that,這樣就避免有些地方,this并不是指向page的上下文對象
//上下文對象varthat;page({onLoad:function(options){//頁面初始化options為頁面跳轉所帶來的參數that=this;}...that.setData({xxx:xxx,})})
6:page的生命周期方法
只有onload中有options參數,可以獲取頁面傳值等等,onload只會執行一次
但是onShow可以每次切換頁面的時候執行,所以,需要每次刷新頁面的數據請求,可以放在onShow中,測試過,性能體驗基本無影響
page的生命周期沒有Android那么豐富,頁面之間傳值也有一定的限制。
可以通過普通的url的傳值方式傳值,xxx?key = value ,但是要注意:我們傳的值其實是相當于字符串和url拼接在一起,請不要直接傳一個對象,因為對象沒有toString方法。
傳遞json對象的步驟為:
1.把json對象變成字符串,如果本身就是那就直接用,如果是json對象,需要 parseString(json)
2.和url進行參數拼接?key=value
3.取得時候在onload的options里面取出,
onLoad:function(options){varvalue=options.key}
然后JSON.stringify(value)轉為json對象使用
7: 頁面間跳轉
從主頁跳轉一個新的界面 新界面處理完邏輯 成功與否 結束之后怎么通知 主頁結果?
這種情況,一般是沒有辦法解決的。經過測試,如果你想要從二級非主頁界面直接navigator打開主頁,是不行的,會報錯。
所以,我們采用的策略是:二級界面處理完數據之后,直接返回,然后在主頁界面重新拉取數據。所以會出現,我們的請求接口是在onShow方法里面執行的。因為onload只會執行一次
8:wxml
1.text標簽可以使用bindtap
<imagesrc="{{logoUrl?logoUrl:'../../img/paihao.png'}}"></image>
可以使用這種方式來顯示默認的圖片
3.再強調一下 在標簽中使用data-xx-oo ="value",在對應對象中可以通過e.currentTarget.dataset.xxOo獲得,這里的xx-oo ,-其實是會轉義駝峰。這種一般使用場景為 你可以給你所點擊或者綁定事件的view設置一個數據,比如你一個picker里面有5個view,就可以綁定每個view不同的值,在觸發事件的時候取到相應的值
4.如果你想要顯隱view你可以通過wx:if="true/false"來處理,但是這樣的話,如果為false,page不會去渲染這個view,它所在的位置空間也不會預留,假如下面的view就會往上排。如果想要留存它的位置空間,可以修改其style樣式來解決
9:統一網絡請求處理結果
你可以封裝一下網絡請求的返回結果,做統一處理
requestWithGet:function(paramsData){data.method='GET'this.requestInternal(paramsData)},requestWithPost:function(paramsData){data.method='POST'this.requestInternal(paramsData)},requestInternal:function(paramsData){varthat=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})typeofparamsData.fail=="function"&¶msData.fail(res);},complete:function(res){//在這里做完成的統一處理typeofparamsData.complete=="function"&¶msData.complete(res);}})}
這樣在使用請求的時候,可以直接先wx.request({}) 這樣,就可以IDE給你聯想生成對應的請求格式,然后直接把“wx.request” 替換 “requestWithGet”或者“requestWithPost”就OK了
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
中國銀行的分期手續費是根據分期時間和利率計算的,以下是中行分期手續費率:1、如果分3期,費率為1.95%。2、如果分6期,費率為3.60%。3、如果分9期,費率為5.40%。4、如果分12期,費率為7.20%。5、如果分18期,費率為11.70%。6、如果分24期,費率為費率為15%。中國銀行(BANK OF CHINA)是中央管理的大型國有銀行,國家副部級單位,中國香港、中國澳門的發鈔行,于19...
余額寶中存入十萬元一天能夠有多少收益?余額寶當中存入十萬元,每天可以獲得6.5元的收益。余額寶的收益如何計算?余額寶收益=已經確認金額÷10000×當日萬分收益,比如你在余額寶里面存了10萬塊錢,當日萬分收益是0.4,那么你當天的收益就是100000÷10000×0.4=4元。余額寶收益的計算公式“收益= (已確認余額/10000)*...
-創新服務準確響應日益復雜的供應鏈需求。-信用風險和運營風險評估雙管齊下,全面審計和跟蹤汽車零部件供應商的供應鏈能力。上海2017年4月20日電/美通社/–中國領先的商業信息提供商和風險管理服務機構華夏鄧巴今日推出鄧巴注冊行業解決方案——汽車零部件供應商供應鏈能力檔案及評估報告。作為鄧白氏企業信用展示服務中的首個行業解決方案——鄧白氏注冊服務組合,通過對重點汽車零部件制造企業供應鏈能力...