微信小程序可以看作是由逻辑层、视图层两个线程协同完成运行的。

逻辑层负责执行JS代码,视图层负责渲染UI页面。逻辑层与视图层之间的事件触发以及数据传递,也就是setData的方法的一个调用全是由底层的Native层负责中转完成的。


我们以iOS Mac端为例,底层有一个叫做evaluateJavaScript函数,这个函数专门负责执行JS函数,每当这个逻辑层它有代码要执行的时候,这个代码它先转为字符串传递给这个函数,再由这个函数负责将这个代码传递给对应的WebView组件完成渲染、完成执行。

setData函数它用于更新视图数据,它的执行也不例外,底层的Native层,在逻辑层与视图层中间它像一座非常窄的 一个窄窄的一个独木桥,极大地限制了两个线程之间的一个通讯效率,按照微信小程序的性能评判标准,setData每次传递的数据大小不能超过256KB,超过这个限制 页面就容易卡顿,还有并不是低于256KB它便不会产生性能问题。在这个页面或者是列表组件scroll事件里面,如果我们频繁地调用setData视图层它来不及渲染也会出现明显的一个卡顿现象。

运行时优化点

1、使用WXS脚本,在视图层完成事件出理
2、重渲染机制
3、支持WXWebAssembly
4、允许开发者另开Worker线程
5、分页渲染,使用虚拟DOM
6、使用LocalStorage接口将数据缓存在本地
7、5s的挂起状态
8、启用Http2、Quic协议
9、getCurrentPages()接口
10、原生的Context节点
11、本地上传到云

项目诊断

1、代码依赖分析
2、性能报告
3、代码质量扫描
4、调试区的Performance面板
5、Memory面板
6、JavaScript Profiler面板
7、体验评分(Audits)面板

项目所使用语言以及软件版本

微信小程序运行机制介绍以及运行时可优化点相关推荐

  1. 微信小程序-04-详解介绍.json 配置文件

    致我自己:小程序开发不是简单一两天的事,一两天只能算是了解,有时候看多了会烦,感觉很熟悉了,其实只是对表面进行了解,对编程却知之甚少,小程序开发不是简单的改模板,一两天很多部分改模板可能都做不到,坚持 ...

  2. 微信小程序的简单介绍

    微信小程序的简单介绍 1.与HTML的区别 HTML 微信小程序 <div></div> <view></view> <h1></h1 ...

  3. 小程序 微信统计表格_微信小程序登录机制

    " 不是0,也不是1,有0也有1 " 总有一个瞬间,你想记录当下的一些事情,所以有了这篇文章,不会口吐芬芳,我直接开门了,但愿能让你见山. 1. 背景 21 届的校园招聘已经打响了 ...

  4. 我是怎么绕过微信小程序审核机制的

    开发微信小程序最尴尬的是 好不容易开发完了,却在代码审核时被卡住了. 因为你可能认为你的类目是开放类目中的一个,但是微信可能判定为另一个需要资质的或者未开放的. 壹包小薯条本人在提交个人微信小程序&q ...

  5. 微信小程序登录流程+介绍wx.login和auth.code2Session

    微信小程序登录流程+介绍wx.login和auth.code2Session 几个核心API和核心字段 wx.login() 调用接口获取登录凭证(code) code2Session 登录凭证校验, ...

  6. 微信小程序:想要点击图片时进行一个放大的功能,写完之后可以正常显示,但点击时图片加载不出来,在此想问一下各路大神有没有解决办法

    微信小程序:想要点击图片时进行一个放大的功能,写完之后可以正常显示,但点击时图片加载不出来,在此想问一下各路大神有没有解决办法 wxml: 在这里插入代码片 <view class='zhanp ...

  7. 微信小程序 - 人脸识别前端(二)拍照方式优化

    微信小程序 - 人脸识别前端(二)拍照方式优化 前文提及的识别方式较 low ,另外会留下识别痕迹,此处使用 <camera>组件进行优化. 前文地址:前文 参考文章:zhoujie-人脸 ...

  8. android post请求时报415错误,解决微信小程序用 SpringMVC 处理http post时请求报415错误...

    解决微信小程序用 SpringMVC 处理http post时请求返回415错误 写微信小程序时遇到的问题,这个坑硬是让我整了半天 wx.request请求跟ajax相似处理方法一致javascrip ...

  9. 教你理解微信小程序的生命周期和运行原理

    写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决.小助君公众号带你学习小程序的生命周期和运行原理. 小程序由两大线程组成:负责界面的线程(view thread)和服务线 ...

最新文章

  1. JVM内存回收算法简述
  2. java set spliterator_Java TreeSet spliterator()方法
  3. bmob php支付,支付服务 - 支付服务RESTful 开发文档 - 《Bmob 文档中心》 - 书栈网 · BookStack...
  4. 好程序员web前端干货之web前端开发框架汇总
  5. Flutter高级第1篇:ListView嵌套GridView、不同终端屏幕适配方案
  6. Thinking in Java之匿名内部类
  7. Java:详解List集合的排序功能
  8. mixly编程怎样音乐_Mixly编程之MP3模块的使用方法
  9. m6A甲基化及预测方法工具总结
  10. java中控指纹仪_java 中控URU4500指纹仪开发
  11. 模拟爬虫下载QQ空间相册高清图片
  12. 模型数据处理之数据格式转换——SuperMap iDesktop
  13. 【C语言教程】1、C 语言简介
  14. chrome pdf android,Android PDF阅读器 (基于谷歌平台的Adobe Reader)
  15. NAO机器人——编程基础
  16. linux驱动系列学习之Framebuffer子系统(三)
  17. 0004-python第三天:基本数据类型
  18. 百度云短信v3.0接口升级注意点
  19. ecs 对比 本地服务器_2019年度教育信息化优秀案例丨上海交通大学:高校基于ECS优化DNS权威解析...
  20. 微信小程序转为App并上架应用市场

热门文章

  1. Mysql下载详细步骤
  2. 串行通信接口8251A
  3. 使用axis2,根据WSDL生成java客户端代码
  4. white-space属性
  5. java怎么读取db文件,java怎么连接db数据库文件
  6. 继 1.4亿美国用户遭殃后,Equifax 让40万英国人的信息也面临风险
  7. SQL insert into 语句的写法
  8. What's new about Apache Kylin v3.0.0-alpha
  9. 无线产品的多种无线加密方式及其区别
  10. 百望云冲刺港交所IPO,胜算几成?