這篇文章主要介紹了微信小程式開發經驗整理總結開發經驗整理的相關資料,需要的朋友可以參考下
微信小程式開發經驗整理
前言:
最近小程式出來了,公司也要求我們開發一款小程式。
於是,就開始著手做了,做了差不多一週吧,也遇到了很多問題,這裡就來總結一下。 (主要是從一個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中有options參數,可以取得頁面傳值等等, onload只會執行一次
- 但是onShow可以每次切換頁面的時候執行,所以,需要每次刷新頁面的資料請求,可以放在onShow中,測試過,效能體驗基本上無影響
- page的生命週期沒有Android那麼豐富,頁面之間傳值也有一定的限制。
- 可以透過普通的url的傳值方式傳值,xxx?key = value ,但是要注意:我們傳的值其實是相當於字串和url拼接在一起,請不要直接傳一個物件,因為物件沒有toString方法。
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。