黄芪有什么作用| 口干口苦吃什么药好| 笔什么龙什么| 今天什么时候下雨| 牛筋草有什么作用| 投其所好是什么意思| 3月5号是什么星座| 带状疱疹有什么症状| 肌红蛋白偏低说明什么| 肛门出血是什么原因| 燕麦色是什么颜色| 马可以加什么偏旁| 做放疗的人吃什么好| 修心是什么意思| 交杯酒是什么意思| 08年是什么年| 聚酯纤维是什么面料优缺点| 什么是染色体| 胃阳不足吃什么中成药| 手抖吃什么药马上控制| 梦见佛像是什么预兆| 黑加出念什么| 冷冻液是什么| left是什么意思| 舒肝解郁胶囊治什么病| 什么东西可以代替阴茎| 喇蛄和小龙虾什么区别| 阴道里面痒是什么原因| 三位一体是什么生肖| 什么蔬菜补铁| 原研药是什么意思| hipanda是什么牌子| 做梦遗精是什么原因| fourone是什么牌子| 尾戒代表什么| 7月7是什么节日| 尿路感染吃什么药效果最好| 中元节是什么意思| 梦见生男孩是什么征兆| 店招是什么意思| 鲸属于什么类动物| 吃丝瓜有什么功效和作用| cea是什么意思| 宋江代表什么生肖| 94年什么命| 酮症酸中毒什么原因引起的| 撤退性出血什么意思| 什么叫粳米| 什么是胶原蛋白| 小孩记忆力差是什么原因| 前列腺增大有什么危害| 什么是嗳气有何症状| 脱发看什么科| 始祖鸟什么档次| 儿保做些什么检查项目| 白内障的主要症状是什么| doosan挖掘机是什么牌子| 小蛮腰是什么意思| 床头朝向有什么讲究| 鳄梨是什么水果| 巡警是做什么的| 口腔医学学什么| 痛风用什么药治疗最好| 吃什么代谢快有助于减肥| 补充电解质是什么意思| 不等是什么意思| 炎症是什么| 为什么上课会犯困| 耳朵发痒是什么原因| 坐月子能吃什么蔬菜| 什么情况会染上鼠疫| 逆生长是什么意思| 立克次体病是什么意思| 梦见自己得了重病预示什么| blackpink什么意思| ar技术是什么意思| 狂犬疫苗什么时候打有效| 什么米最贵| 眼睛有异物感是什么原因| 肝不好吃什么中成药| 腋下异味用什么药| 股票pb是什么意思| 去冰和常温有什么区别| 亚麻是什么植物| 包皮炎吃什么消炎药| 吃什么能消除囊肿| 独守空房是什么意思| 肛门上长了个肉疙瘩是什么原因| 血常规用什么颜色的试管| 处女女和什么星座最配| 头孢曲松是什么药| 心情沉重是什么意思| 什么的娃娃| pg什么意思| 舌苔发青是什么原因| 7.11什么星座| 新疆有什么水果| 湿疹是因为什么原因引起的| 巧克力囊肿是什么| 什么什么相什么的成语| 69年属什么生肖| 血热吃什么药| 梦见打老虎是什么预兆| 食指是什么经络| 什么是埋线双眼皮| 鸡眼用什么药| epr是什么| 把尿是什么意思| 乳腺增生乳腺结节吃什么药| 心率低吃什么药最好| 为什么会梦见前男友| 狗为什么不死在家里| 什么叫败血症| 月经前有褐色分泌物是什么原因| 肠道菌群失调有什么症状| 今年88岁属什么生肖| 夏天空调开什么模式| 老虎油是什么意思| 图例是什么| 菠萝蜜的核有什么功效| nk是什么意思| 生物制剂是什么药| 脚上有水泡是什么原因| 天蝎座和什么星座不合| 轰趴是什么意思| 出汗多是什么病| 乙状结肠腺瘤是什么病| 男人左手麻木什么原因| 碳酸饮料喝多了有什么危害| 条索影是什么意思| 今年71岁属什么生肖| 血小板数目偏高是什么意思| 生物科技是做什么的| 什么什么不见| 道德经适合什么人看| 阿玛尼手表属于什么档次| 换什么机油好| 镜花水月什么意思| fnh是什么病| 排尿无力是什么原因| 心绞痛什么感觉| 早上起床头晕是什么原因| 什么是阴虚火旺| 生蚝什么时候最肥| ct值是什么意思| 焯水什么意思| 远房亲戚是什么意思| 尿多是什么问题| sec是什么意思| 粉尘作业时必须佩戴什么口罩| 阴唇痒用什么药| 冲锋什么| 脚代表什么生肖| 室上性早搏是什么意思| 眼胀是什么原因| 县委副书记是什么级别| ph值低是什么原因| 代谢是什么意思| 三叉神经痛挂什么科就诊| 佛心是什么意思| 第一次坐飞机需要注意什么| 梦见打死蛇是什么意思| 中国最长的河流是什么| 祖师香是什么意思| 伤口愈合为什么会痒| fashion什么意思| 山药炒什么好吃| 尿蛋白高不能吃什么食物| 吃什么对肾有好处| 淋病有什么症状| 土地确权是什么意思| 孕妇缺铁吃什么食物好| 女人为什么会宫外怀孕| 脚后跟疼为什么| 左耳疼痛什么原因引起| 龙跟什么生肖最配| 暗的反义词是什么| fourone是什么牌子| 血小板低是什么问题| 仰天长叹的意思是什么| 什么的池水| 细菌感染是什么引起的| 心脏缺血吃什么补的快| 小腿肌肉酸痛什么原因| 行气是什么意思| 为什么飞机起飞降落要打开遮光板| 高血压吃什么最好| 菜心是什么菜| 水仙什么意思| 无字五行属什么| 飞机杯长什么样子| 妈妈的姐姐应该叫什么| 胆囊结石需要注意什么| 前列腺饱满是什么意思| 朱砂有什么功效| 本是什么生肖| 表面抗体阳性什么意思| 大量出汗是什么原因引起的| 贪污是什么意思| 梅核气吃什么药好得快| 青蒜是什么| 梦见栽树是什么预兆| 二级烫伤是什么程度| 椎管狭窄吃什么药| 今年什么时候立秋| 吃什么可以软化肝脏| 利玛窦什么时候来中国| 不是什么而是什么造句| 红糖荷包蛋有什么功效| 2月15日是什么星座| pr是什么意思医学| 故事是什么意思| 马蹄粉是什么粉| 尿路感染有什么症状| 什么动物睡觉不闭眼睛| 促甲状腺素低是什么原因| 胸片是检查什么的| 中年人手抖是什么原因| 右手发麻是什么病的前兆| 摩托车代表什么生肖| 宫颈病变是什么| 交会是什么意思| 通便吃什么最快排便| 劳力士手表什么档次| 奶酪是什么做的| 火华念什么| 意守丹田是什么意思| 什么是僵尸肉| 虾为什么叫对虾| 为什么叫老鸨| 做梦吃屎有什么预兆| 头发长不长是什么原因怎么办| 俱往矣是什么意思| 五行缺金是什么意思| 缺锌容易得什么病| 紫色加红色是什么颜色| 锑对人体有什么危害| 子宫前倾是什么意思| 灼口综合症吃什么药| 一学年是什么意思| 宫腔积液排出什么颜色| 淋巴细胞绝对值偏低是什么意思| 婴儿为什么戴银不戴金| 9月13日是什么纪念日| 肾不好吃什么药| 吃什么可以化痰| 胃疼胃胀用什么药效果最好| 糖尿病的诊断标准是什么| 五月21号是什么星座| 大马士革是什么意思| 县长什么级别| 赊账是什么意思| 拉水吃什么药| 小蜘蛛吃什么| 桢字五行属什么| 金鱼吃什么| 17号来月经什么时候是排卵期| 搞破鞋是什么意思| 脚手发热是什么原因| 冰粉为什么要加石灰水| 曼波是什么意思| 大白刁是什么鱼| 腰间盘突出压迫神经什么症状| 急性上呼吸道感染吃什么药| 百度

2018欢乐跑中国10公里锦标赛在广州举行

百度 习近平指出,2018年是全面贯彻中共十九大精神的开局之年,是决胜全面建成小康社会、实施“十三五”规划承上启下的关键之年。

setData 是小程序开发中使用最频繁、也是最容易引发性能问题的接口。

# 1. setData 的流程

setData 的过程,大致可以分成几个阶段:

  • 逻辑层虚拟 DOM 树的遍历和更新,触发组件生命周期和 observer 等;
  • 将 data 从逻辑层传输到视图层;
  • 视图层虚拟 DOM 树的更新、真实 DOM 元素的更新并触发页面渲染更新。

# 2. 数据通信

对于第 2 步,由于小程序的逻辑层和视图层是两个独立的运行环境、分属不同的线程或进程,不能直接进行数据共享,需要进行数据的序列化、跨线程/进程的数据传输、数据的反序列化,因此数据传输过程是异步的、非实时的

iOS/iPadOS/MacOS 上,数据传输是通过 evaluateJavascript 实现的,还会有额外 JS 脚本解析和执行的耗时。

数据传输的耗时与数据量的大小正相关,如果对端线程处于繁忙状态,数据会在消息队列中等待

# 3. 使用建议

# 3.1 data 应只包括渲染相关的数据

setData 应只用来进行渲染相关的数据更新。用 setData 的方式更新渲染无关的字段,会触发额外的渲染流程,或者增加传输的数据量,影响渲染耗时。

  • ? 页面或组件的 data 字段,应用来存放和页面或组件渲染相关的数据(即直接在 wxml 中出现的字段);
  • ? 页面或组件渲染间接相关的数据可以设置为「纯数据字段」,可以使用 setData 设置并使用 observers 监听变化;
  • ? 页面或组件渲染无关的数据,应挂在非 data 的字段下,如 this.userData = {userId: 'xxx'}
  • ? 避免在 data 中包含渲染无关的业务数据;
  • ? 避免使用 data 在页面或组件方法间进行数据共享
  • ? 避免滥用 纯数据字段 来保存可以使用非 data 字段保存的数据。

# 3.2 控制 setData 的频率

每次 setData 都会触发逻辑层虚拟 DOM 树的遍历和更新,也可能会导致触发一次完整的页面渲染流程。过于频繁(毫秒级)的调用 setData,会导致以下后果:

  • 逻辑层 JS 线程持续繁忙,无法正常响应用户操作的事件,也无法正常完成页面切换;
  • 视图层 JS 线程持续处于忙碌状态,逻辑层 -> 视图层通信耗时上升,视图层收到消息的延时较高,渲染出现明显延迟;
  • 视图层无法及时响应用户操作,用户滑动页面时感到明显卡顿,操作反馈延迟,用户操作事件无法及时传递到逻辑层,逻辑层亦无法及时将操作处理结果及时传递到视图层。

因此,开发者在调用 setData 时要注意:

  • ? 仅在需要进行页面内容更新时调用 setData;
  • ? 对连续的 setData 调用尽可能的进行合并
  • ? 避免不必要的 setData;
  • ? 避免以过高的频率持续调用 setData,例如毫秒级的倒计时;
  • ? 避免在 onPageScroll 回调中每次都调用 setData。

# 3.3 选择合适的 setData 范围

组件的 setData 只会引起当前组件和子组件的更新,可以降低虚拟 DOM 更新时的计算开销。

  • ? 对于需要频繁更新的页面元素(例如:秒杀倒计时),可以封装为独立的组件,在组件内进行 setData 操作。必要时可以使用 CSS contain 属性限制计算布局、样式和绘制等的范围。

# 3.4 setData 应只传发生变化的数据

setData 的数据量会影响数据拷贝和数据通讯的耗时,增加页面更新的开销,造成页面更新延迟。

  • ? setData 应只传入发生变化的字段;
  • ? 建议以数据路径形式改变数组中的某一项或对象的某个属性,如 this.setData({'array[2].message': 'newVal', 'a.b.c.d': 'newVal'}),而不是每次都更新整个对象或数组;
  • ? 不要在 setData 中偷懒一次性传所有data:this.setData(this.data)

# 3.5 控制后台态页面的 setData

由于小程序逻辑层是单线程运行的,后台态页面去 setData 也会抢占前台页面的运行资源,且后台态页面的的渲染用户是无法感知的,会产生浪费。在某些平台上,小程序渲染层各 WebView 也是共享同一个线程,后台页面的渲染和逻辑执行也会导致前台页面的卡顿。

  • ? 页面切后台后的更新操作,应尽量避免,或延迟到页面 onShow 后延迟进行;
  • ? 避免在切后台后仍进行高频的 setData,例如倒计时更新。

# 4. 性能分析

开发者可以通过组件的 setUpdatePerformanceListener 接口获取更新性能统计信息,来分析产生性能瓶颈的组件。

沦落什么意思 吃什么降血脂和胆固醇 室内传导延迟什么意思 地藏菩萨是管什么的 做完人流需要注意什么
什么是双高 名字为什么不能叫安然 神经衰弱吃什么药效果最好 牙龈肿痛吃什么 什么是全脂牛奶
陈坤为什么地位那么高 招蚊子咬是什么原因 胃食管反流吃什么中成药最好 生态棉是什么面料 阴道壁是什么样的
老是犯困想睡觉是什么原因 心跳过缓是什么原因造成的 翠鸟吃什么 油价什么时候上涨 ad是什么意思
胎儿胆囊偏大有什么影响hcv9jop3ns2r.cn 破是什么生肖hcv9jop4ns5r.cn 老人经常头晕是什么原因引起的hcv8jop5ns7r.cn 经常喝苏打水有什么好处和坏处hcv8jop0ns8r.cn 北斗星代表什么生肖hcv9jop0ns2r.cn
血液属于什么组织hcv8jop2ns3r.cn 问号是什么意思hcv7jop5ns4r.cn 白手起家是什么生肖hcv9jop8ns0r.cn 放风筝是什么季节hcv8jop6ns6r.cn 农历4月14日是什么星座hcv9jop4ns1r.cn
amh是什么意思hcv8jop5ns6r.cn 为什么放生泥鳅果报大hcv8jop6ns8r.cn rf是什么意思hcv8jop3ns8r.cn 天天睡觉做梦是什么原因96micro.com 办理港澳通行证需要什么材料hcv7jop5ns6r.cn
斜视是什么hcv8jop4ns4r.cn 三查八对的内容是什么hcv9jop1ns4r.cn 四个又读什么hcv9jop4ns8r.cn 群聊名字什么最好听hcv8jop5ns0r.cn 104岁属什么生肖hcv9jop6ns6r.cn
百度