微信小程序后臺(tái)返回大量多余數(shù)據(jù)的處理

打一架藕畔,不行就再打一架-----來源:視覺中國(guó)

后臺(tái)接口返回一個(gè)數(shù)組,數(shù)組里面N多對(duì)象庄拇,每個(gè)對(duì)象里面幾十上百條數(shù)據(jù)注服,最好玩的是,我只需要每個(gè)對(duì)象里面的某兩個(gè)數(shù)據(jù)丛忆、祠汇、、熄诡、

類似這種:

datas:[
 {
 id:1000,
 name: "帥哥"可很,
 title: '...',
 b: '...',
 d: 0,
 f:0,
 ....
 },
 {
 id:1001,
 name: "美女",
 title: '...',
 b: '...',
 d: 0,
 f:0,
 ....
 },
 ...
]

其實(shí)我只要id和name凰浮,找后臺(tái)解決我抠、、袜茧、算了吧菜拓,奈何天生就是個(gè)儒生知态,溫文爾雅洗贰,打架是打不贏的刻获,要是能打贏的就直接打吧衡楞,打完讓他們改驹沿!

數(shù)據(jù)量過多犀盟,對(duì)網(wǎng)絡(luò)請(qǐng)求影響大嗎翁都?說實(shí)話潮罪,不大姨谷,又不是幾兆的圖片逗宁,返回?cái)?shù)據(jù)的速度反正我感受不到延遲。

但是數(shù)據(jù)量過多對(duì)<u style="text-decoration: none; border-bottom: 1px dashed gray;">小程序</u>渲染界面有影響嗎梦湘?

答案是:有瞎颗!一般情況下我們是在wxml中循環(huán)data,然后取出item.id和item.name,其他數(shù)據(jù)看起來和我們無關(guān)捌议,但是查看官方文檔setData相關(guān)信息的時(shí)候有下面這一段話

setData 是小程序開發(fā)中使用最頻繁的接口哼拔,也是最容易引發(fā)性能問題的接口。在介紹常見的錯(cuò)誤用法前瓣颅,先簡(jiǎn)單介紹一下 setData 背后的工作原理管挟。

工作原理

小程序的視圖層目前使用 WebView 作為渲染載體,而邏輯層是由獨(dú)立的 JavascriptCore 作為運(yùn)行環(huán)境弄捕。在架構(gòu)上僻孝,WebView 和 JavascriptCore 都是獨(dú)立的模塊导帝,并不具備數(shù)據(jù)直接共享的通道。當(dāng)前穿铆,視圖層和邏輯層的數(shù)據(jù)傳輸您单,實(shí)際上通過兩邊提供的 evaluateJavascript 所實(shí)現(xiàn)。即用戶傳輸?shù)臄?shù)據(jù)荞雏,需要將其轉(zhuǎn)換為字符串形式傳遞虐秦,同時(shí)把轉(zhuǎn)換后的數(shù)據(jù)內(nèi)容拼接成一份 JS 腳本,再通過執(zhí)行 JS 腳本的形式傳遞到兩邊獨(dú)立環(huán)境凤优。

而 evaluateJavascript 的執(zhí)行會(huì)受很多方面的影響悦陋,數(shù)據(jù)到達(dá)視圖層并不是實(shí)時(shí)的。

其實(shí)就是我們setData里面的所有數(shù)據(jù)都被轉(zhuǎn)成了字符串筑辨,然后字符串郵費(fèi)轉(zhuǎn)換成JS腳本俺驶,然后頁(yè)面根據(jù)JS腳本去渲染頁(yè)面。那么我們能做的就是盡量少傳數(shù)據(jù)棍辕,而此時(shí)后臺(tái)返回這一大串?dāng)?shù)據(jù)就與此相悖了暮现,所以最好是新建一個(gè)tempData,將要的數(shù)據(jù)取出來之后再setDta這個(gè)tempData,以此來提高微信小程序的頁(yè)面渲染速度楚昭,提升微信小程序運(yùn)行效率栖袋,優(yōu)化微信小程序的用戶體驗(yàn)。

我們可以這樣寫:

[mw_shl_code=applescript,true] var tempData = []
for(var i = 0; i < datas.length; i++) {
var tempObj = {}
tempObj.id = datas[i].id
tempObj.name = datas[i].name
tempData.push(tempObj)
}
console.log(tempData)
[/mw_shl_code]

或者使用高階函數(shù)map():

let tempDatas = datas.map(function(data){
 return {
 id: data.id,
 name: data.name 
 } 
 })
console.log(tempDatas)

此時(shí)我們?cè)偈褂胹etData({})就能提高渲染效率了

同時(shí)再分享兩個(gè)setData技巧

1抚太、有一個(gè)Object如下

obj:{a:"a",b:"b",c:"c"},

此時(shí)已經(jīng)渲染到頁(yè)面了塘幅,然后我們修改了obj,此時(shí)可以選擇:

1)平時(shí)的做法

let obj = this.data.objobj.b = "我是后來修改的"this.setData({ obj: obj})

2)但是更優(yōu)化的做法是

this.setData({ 'obj.b': "我是后來修改的"})

不僅省了兩行代碼,同時(shí)還提高頁(yè)面渲染效率2尿贫、其實(shí)和1差不多电媳,就是Object變成數(shù)組Array當(dāng)我們要給數(shù)組的其中一個(gè)數(shù)據(jù)進(jìn)行修改時(shí),我們可以參照上面的方法

this.setData({ 'array[1]': "我是后來修改的"})

當(dāng)我們要給數(shù)組的多個(gè)數(shù)據(jù)進(jìn)行修改時(shí)帅霜,我們會(huì)寫一個(gè)循環(huán),然后修改array,此時(shí)是無法識(shí)別的,要寫成如下形式

for(var i = 0;i < 5;i++) { 
 this.setData({ [`array[${i}]`]:"我是后來修改的" 
}) }

小伙伴們還有其他有關(guān)微信小程序setData的其他知識(shí)點(diǎn)呼伸,歡迎留言哦身冀,同時(shí)知道為上面那個(gè)為啥要加 []的,希望多多指教括享!

專欄作家

韋弦zhy 搂根。小程序社區(qū)博主。分享小程序開發(fā)實(shí)戰(zhàn)铃辖,堅(jiān)持原創(chuàng)剩愧。

本文原創(chuàng)發(fā)布于小程序社區(qū)。未經(jīng)許可娇斩,禁止轉(zhuǎn)載
原文地址:微信小程序后臺(tái)返回大量多余數(shù)據(jù)的處理-小程序社區(qū)/博主專區(qū)-微信小程序開發(fā)社區(qū)-微信小程序聯(lián)盟

相關(guān)文章

微信小程序 使用wxs計(jì)算獲取到的數(shù)據(jù)
微信小程序JSON數(shù)據(jù)的傳遞
小程序頁(yè)面效果之--滑動(dòng)屏幕加載數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仁卷,一起剝皮案震驚了整個(gè)濱河市穴翩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锦积,老刑警劉巖芒帕,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丰介,居然都是意外死亡背蟆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門哮幢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來带膀,“玉大人,你說我怎么就攤上這事橙垢《膺叮” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵钢悲,是天一觀的道長(zhǎng)点额。 經(jīng)常有香客問我,道長(zhǎng)莺琳,這世上最難降的妖魔是什么还棱? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮惭等,結(jié)果婚禮上珍手,老公的妹妹穿的比我還像新娘。我一直安慰自己辞做,他們只是感情好琳要,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秤茅,像睡著了一般稚补。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上框喳,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天课幕,我揣著相機(jī)與錄音,去河邊找鬼五垮。 笑死乍惊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的放仗。 我是一名探鬼主播润绎,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了莉撇?” 一聲冷哼從身側(cè)響起呢蛤,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稼钩,沒想到半個(gè)月后顾稀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坝撑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年静秆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巡李。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抚笔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侨拦,到底是詐尸還是另有隱情殊橙,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布狱从,位于F島的核電站膨蛮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏季研。R本人自食惡果不足惜敞葛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望与涡。 院中可真熱鬧惹谐,春花似錦、人聲如沸驼卖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)酌畜。三九已至怎囚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桥胞,已是汗流浹背恳守。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埠戳,地道東北人井誉。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓蕉扮,卻偏偏與公主長(zhǎng)得像整胃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喳钟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 后臺(tái)接口返回一個(gè)數(shù)組屁使,數(shù)組里面N多對(duì)象在岂,每個(gè)對(duì)象里面幾十上百條數(shù)據(jù),最好玩的是蛮寂,我只需要每個(gè)對(duì)象里面的某兩個(gè)數(shù)據(jù)蔽午、...
    韋弦Zhy閱讀 4,738評(píng)論 4 11
  • 因新工作主要負(fù)責(zé)微信小程序這一塊,最近的重心就移到這一塊酬蹋,該博客是對(duì)微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn)及老,初...
    majun00閱讀 7,345評(píng)論 0 9
  • 微信小程序 項(xiàng)目結(jié)構(gòu) 上圖為微信小程序的項(xiàng)目結(jié)構(gòu)骄恶,pages下面包含了小程序中的每一個(gè)頁(yè)面,每一個(gè)頁(yè)面由頁(yè)面結(jié)構(gòu)匕垫,...
    Jensen95閱讀 8,927評(píng)論 0 19
  • 一.微信小程序是啥 本質(zhì)其實(shí)就是(混合)的app 介于web app與native 原生app之間僧鲁,具備豐富的調(diào)用...
    極樂叔閱讀 3,066評(píng)論 1 4
  • 昨天第一天住在單位附近,凌晨一點(diǎn)入睡象泵,床墊太硬寞秃,枕頭太高,一夜沒睡好偶惠,白天精神狀態(tài)有點(diǎn)不假春寿。 明天出差,上班一周就...
    愛游泳的Danny閱讀 206評(píng)論 1 0