寫這篇文章之前瘟忱,首先 吐槽一下支付寶小程序開發(fā)工具(螞蟻開發(fā)者工具),希望支付寶團隊能夠給后來的開發(fā)者帶來更好的編碼體驗苫幢。謝謝7糜铡!:巍触菜!
1. 時不時的給我彈出掃碼登錄。
關(guān)鍵是我進入開發(fā)工具時已經(jīng)掃過一次哀峻,代碼編譯完之后又要讓我掃涡相,而且不止一次。剩蟀。催蝗。。(心里真是一萬個草泥馬奔騰喻旷,啥都不說了生逸,給你個眼神自己體會牢屋,你懂得)
2.掃一掃? 需要自己設定返回來的數(shù)據(jù)且预。??
我想支付寶這樣設計的初衷應該是好的,設計數(shù)據(jù)比較自由烙无,人性化锋谐。 可是,我想說的是(大哥截酷,這是掃碼碼啊涮拗,能不能給我一點真實的體驗,而且如果我是小白,不會設置又該怎么辦三热?鼓择? 唉,寶寶心里苦就漾,想靜一靜)
3.清除緩存設置
說實話呐能,對于做過微信小程序的我來說,這一點讓我實在無法忍受抑堡。不說了摆出,直接看圖,這是微信小程序清理緩存
來首妖,再來看看咱們親愛的支付寶
大哥偎漫,我清理個緩存還需要打開調(diào)試,然后手動清除有缆。象踊。。棚壁。這讓我又回到了瀏覽器清理緩存的年代通危,唉!
4.調(diào)試界面 需要手動放大
打開調(diào)試(最左側(cè)第二個灌曙,感覺像七星瓢蟲的按鈕)菊碟,右邊的窗口默認是這樣的
需要手動點擊左上角放大按鈕,才會放大 在刺。逆害。。蚣驼。而且我點擊編譯按鈕接著寫代碼之后再次打開調(diào)試界面之后調(diào)試窗口又變得很小魄幕。。颖杏。(我只想說纯陨,my god !!!? 我想調(diào)試一下js 為什么就這么難!A舸ⅰ翼抠! 難道是我打開的姿勢不對!;窕洹R跤薄!Xはァ)
好吧量愧,吐槽完螞蟻開發(fā)者工具的一丟丟小問題(是不是小問題钾菊,給你個眼神,自己體會偎肃。煞烫。。)累颂,接下來咱們步入正題红竭,來談談我在這次支付寶小程序開發(fā)過程中遇到的一些問題,希望看到的朋友相互學習喘落,共同進步哈(真心懇求 看過的大牛茵宪,不足之處給出指點,小生不勝感激)
1.app.json
"window": { "defaultTitle": "ABox", "titleBarColor": "#000000" }
這里是設置一下 你小程序的標題瘦棋,和標題顏色稀火,支付寶小程序目前還不能設置 標題的背景色(回顧一下微信小程序,對比一下赌朋,臉上又是一臉嫌棄凰狞。。沛慢。赡若。)
2.app.js
onShow(query) { if(query.length){ //判斷一個對象是否存在 let qrCode = query.query.qrCode let queryParms = qrCode.split("?")[1] let params = queryParms.split('&') let shelfNumber='' if (params) { params.forEach(v => { let kv=v.split("=") if (kv.length>1){ if (kv[0]==="id"){ shelfNumber=kv[1] } } }) } my.setStorageSync({ key: 'shelfNumber', data: shelfNumber }); } }
這里主要是設置一下 用支付寶掃一掃 就能獲取到我們的商品banner、和商品列表团甲。我想這是一個十分普遍而又正常的需求逾冬。這里需要后臺配置好二維碼的一些返回路徑和一些參數(shù) ,具體因產(chǎn)品而異躺苦。這里身腻,我主要想說的是,我把這個掃完二維碼獲取相應的參數(shù)匹厘,放在了 app.js 的 onshow(query) 里面? 嘀趟,剛開始 我放在了home.js 的 onload(query)? 獲取的參數(shù)不是我想要的,最后結(jié)合后臺愈诚,又看了一些小程序的生命周期函數(shù)她按,選擇放在了?app.js 的 onshow(query)(?app.js 的 onshow() 比hoeme.js onload() 方法提前執(zhí)行,盡管你在app.json里面配置了默認顯示的是?hoeme
3. 緩存
my.setStorageSync({? key: 'shelfNumber', data: shelfNumber });
不得不說炕柔,對于做過微信小程序的我來說酌泰,這跟微信小程序還是有區(qū)別的。(還好坑不大汗唱,沒摔死宫莱。。哩罪。授霸。) 咱們下面來看一下微信小程序 的:
wx.setStorageSync("UserInfo", userInfo)
是不是簡單好多。當然取緩存的時候也是有區(qū)別的际插,支付寶的:
let shelfNumber = my.getStorageSync({ key: 'shelfNumber' }).data;
微信的:
let JSONToken = wx.getStorageSync("JSONToken")
4.find 方法
這是es6 的方法 剛開始在我的iphone8上我們的商品列表還可以顯示出來碘耳,換到我的另一款手機 Android 手機 和 產(chǎn)品經(jīng)理的華為9 上面卻是空的。最后定位為 find在安卓上報錯 不是一個方法 框弛。?
剛開始:
let layer = products.find(function (v) { return v.id == data.cid })
最后換成了這個:
let layer = {} for (var i = 0; i < products.length; i++) { if (products[i].id == data.cid) { layer = products[i] break } }
解決了問題
5.image 問題
剛開始我把購物車中 -? + 號圖片的用了同一個class 名:
.oprateredimage{ width:100%; height: 100%}
+號圖片 死活顯示不出來辛辨。剛開始以為自己的樣式寫的有問題,自己檢查了一下沒有問題瑟枫,最后實在無解斗搞,
就對 + 圖片這樣設置
.cart-add-image{ width: 50rpx; height: 50rpx;}
解決了問題
6.swiper高度問題
我們的頭部是一個swiper和一個包括 貨架編號和掃一掃的盒子 ,這樣的:
剛開始我對頭部進行了position:fixed定位慷妙,貨架編號和掃一掃的盒子死活顯示不正確僻焚,最后進行檢查
swiper有默認高度 ,改成了這樣:
.swiperView{ width: 100%; height: 188rpx !important; }
解決了問題
7.my.httpRequest 問題
headers?
這個說實話有點坑膝擂,因為我們?nèi)ソY(jié)算的時候需要請求一下后臺生成訂單的接口虑啤,此時需要傳一下??headers當時我也傳按照后臺的需要傳了,但是后臺那邊一直顯示header 為空 架馋,自己也擼了一下邏輯狞山,感覺沒問題啊? 最后冷靜下來,又看了一遍支付寶小程序的網(wǎng)絡請求 叉寂。終于找到了問題所在??headers? 萍启,微信小程序用的是?header? 。由于是剛做完微信小程序又接著做的支付寶小程序屏鳍,以為一樣伊约,就也寫成了?header,所以才會出現(xiàn)錯誤
success
這個問題是我在用戶授權(quán)的時候發(fā)現(xiàn)的孕蝉,我在用戶授權(quán)之后需要調(diào)一下后臺接口屡律,獲取token,明明是新的授權(quán)碼降淮,可是一直獲取不到token,看了一下后臺返回額狀態(tài)碼 201? 顯示已生成token超埋,沒走 success,走了catch(用promise寫的)佳鳖,雖然是查了一下狀態(tài)碼 201:請求已經(jīng)被實現(xiàn)霍殴,而且有一個新的資源已經(jīng)依據(jù)請求的需要而建立 。但好像并沒有什么卵用(可能自己太菜了)系吩,最后自己靈光一閃:是不是支付寶小程序? ?my.httpRequest? success 只是針對 狀態(tài)碼是200的情況 来庭,于是讓后臺改了一下返回的狀態(tài)碼,果然是
解決了問題
好累穿挨,終于寫完了月弛。以上就是我對支付寶小程序的一些拙見肴盏。希望看過朋友的多多指點,相互學習帽衙。謝謝2嗽怼!