微信小程序之数据的同步渲染

这篇具有很好参考价值的文章主要介绍了微信小程序之数据的同步渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序之数据的同步渲染

结论: 微信小程序通过setData方法实现数据的同步渲染,直接修改data无法实现同步渲染。

setData工作原理

小程序分为逻辑层和渲染层,而每次逻辑层改变了,要借用Native运行。小程序的渲染层和逻辑层由两个线程管理:渲染层的界面使用了 WebView 进行渲染;逻辑层采用 JsCore 线程运行 JS 脚本。一个小程序存在多个界面,所以渲染层存在多个 WebView 线程,逻辑层和渲染层两个线程的通信会经由微信客户端 Native 做中转,逻辑层发送网络请求也经由 Native 转发。

使用setData方法其实就是将逻辑层的数据通过Native进行中转同步到渲染层,所以我们不要重复 setdata, ,但是也要减少数据的传输量。我们的数据传输实际是一次 Javascript 脚本过程,当数据量过大时会增加脚本的编译执行时间,占用 WebView JS 线程。

方法是去除不必要的事件绑定( WXML 中的 bind 和 catch ),从而减少通信的数据量和次数。

Native

native是使用原生系统内核的,相当于直接在系统上操作。是我们传统意义上的软件,更加稳定。

webView

webView是Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,WebView直译网页视图,我们可以简单的看作一个可以嵌套到界面上的一个浏览器控件!

JsCore

JSCore是WebKit默认内嵌的JS引擎,之所以说是默认内嵌,是因为很多基于WebKit分支开发的浏览器引擎都开发了自家的JS引擎,其中最出名的就是Chrome的V8。这些JS引擎的使命都相同,那就是解释执行JS脚本。而从上面的渲染流程图我们可以看到,JS和DOM树之间存在着互相关联,这是因为浏览器中的JS脚本最主要的功能就是操作DOM树,并与之交互。

相比静态编译语言生成语法树之后,还需要进行链接,装载生成可执行文件等操作,解释型语言在流程上要简化很多。这张流程图右边画框的部分就是JSCore的组成部分:Lexer、Parser、LLInt以及JIT的部分(之所以JIT的部分是用橙色标注,是因为并不是所有的JSCore中都有JIT部分)。接下来我们就搭配整个工作流程介绍每一部分,它主要分为以下三个部分:词法分析、语法分析以及解释执行。文章来源地址https://www.toymoban.com/news/detail-503165.html

到了这里,关于微信小程序之数据的同步渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)

    富文本组件: 回显方法: bug复现: 数据:\\\"p杰佛的撒娇佛是阿达分阶段实施的佛教的撒img src=\\\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/

    2024年02月08日
    浏览(37)
  • 解决微信小程序数据渲染缓慢或卡顿的方法 (uniapp vue3)

    在微信小程序中渲染数据时通常会使用setData方法,但是setData对数据是有影响的,单次设置的数据不能超过1024kB,否则就会出现卡顿甚至有时会导致小程序闪退等现象。而我们平时在实现业务时,一般会采取数据分页而防止大量数据渲染导致小程序白屏/卡顿,例如在一些商城

    2024年02月08日
    浏览(57)
  • 微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录

    数据绑定的基本原则:在data中定义数据,在wxml中使用数据 1.1. 在data中定义数据 在data中定义数据,找到页面对应的.js文件,然后把数据定义到data中即可。 pages/list/list.js 1.2. 在wxml中渲染数据 (mustache语法) mustache语法,插值表达式 将data中的数据绑定到页面中渲染,使用mu

    2024年02月13日
    浏览(38)
  • 微信小程序之WXML 模板语法之数据绑定、事件绑定、wx:if和列表渲染

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年01月22日
    浏览(49)
  • 微信小程序:uni-app列表数据渲染子组件修改数据sync/v-model无效的问题

    有如下一个列表,将数据循环传递给子组件,实现业务解耦,组件拆分 Vue的正常逻辑是,父组件和子组件的数据传递的是一个对象,属于引用传递,可以直接在子组件中修改数据,父组件中也会变化,它们操作的是同一个数据。 uni-app子组件中修改 H5正常,转为微信小程序后

    2024年02月10日
    浏览(42)
  • 微信小程序渲染出错

    第一个错误渲染出错: [渲染层错误] Uncaught (in promise) [object DOMException](env: Windows,mp,1.06.2306020; lib: 2.19.2) 第二错误method值为空TypeError: Cannot read property \\\'method\\\' of undefined     at Vi.playdate (play.js? [sm]:51)     at Object.i.safeCallback (WASubContext.js?t=wechats=1687920555309v=2.19.2:2)     at WASubContex

    2024年02月10日
    浏览(41)
  • 微信小程序渲染实时时间

    总结一下自己怎么用JS初级的内容来写一个页面实时渲染时间的方法。 util.js文件代码如下: 例如,我要在index.js中引用util.js中的模块formatTime。那么,首先在index.js中定义变量util,使用require函数加载util.js文件。这里必须使用相对路径。 调用函数时,传入new Date()参数,返回值

    2024年02月11日
    浏览(40)
  • 微信小程序------WXML模板语法之条件渲染和列表渲染

    目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用         上一期我们讲解wxml模版语法中的数据绑定和事件绑定(上一期链接:微信小程序-----WXML模板语法之数据绑定与事件

    2024年01月16日
    浏览(43)
  • 微信小程序skyline渲染引擎尝鲜

    概述 官方描述 当小程序基于 WebView 环境下时,WebView 的 JS 逻辑、DOM 树创建、CSS 解析、样式计算、Layout、Paint (Composite) 都发生在同一线程,在 WebView 上执行过多的 JS 逻辑可能阻塞渲染,导致界面卡顿。以此为前提,小程序同时考虑了性能与安全,采用了目前称为「双线程模

    2024年02月04日
    浏览(42)
  • 微信小程序iconfont真机渲染失败

    解决方法: 1.将下载的.woff文件在transfonter转为base64, 2.打开网站,导入文件,开启base64按钮,下载转换后的文件 3. 在下载解压后的文件夹中找到stylesheet.css,并复制其中的base64 4. 修改index.wxss文件,将url中的本地地址替换为base64

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包