uni-app如何实现高性能

这篇具有很好参考价值的文章主要介绍了uni-app如何实现高性能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章主要讲解uni-app如何实现高性能的问题?

什么是uni-app?

简单说一下什么是uni-app,uni-app是继承自vue.js,对vue做了轻度定制,并且实现了完整的组件化开发,并且支持多端发布的一种架构,开发的项目可适配多平台。

uni-app如何实现高性能,uni-app,前端,vue.js

过内前端开发的大致分歧 

国内前端开发生态现在的两个分歧,分割线上方的主要是以vue为核心实现的,下面的是以react实现的。从下面的生态图也可以看出,在国内vue的生态是比较大的。

uni-app如何实现高性能,uni-app,前端,vue.js

 uni-app实现高性能的基本思路

uni-app如何实现高性能,uni-app,前端,vue.js

拿小程序进行举例:

在uni-app中我们可能只有一个界面,其中包含<template>、<script>、<style>这三部分的,而在小程序中包含.js、.json、.wxml、.wxss这四个文件。

uni-app如何实现高性能,uni-app,前端,vue.js 在开发的时候可能是单文件的形式,如果发行到小程序的时候还是转化成四个文件,这个过程就需要一个转化。转化的过程就是编译器需要干的工作,通用的方式就是进行拆分,拆分文件。

那么如何进行转化呢?

简单的来说文件转化:如果文件比较简单,可能将<template>转化成.wxss文件、<script>转化为.js、<style>转化为.wxss文件。如果文件比较复杂的化,文件转化后的可读性就会降低。

uni-app如何实现高性能,uni-app,前端,vue.js

 编译完之后就是运行,那么在运行时是又会有什么问题呢?

小程序和vue都有相应的生命周期、事件函数和数据绑定,那么在运行的时候该以哪个为主呢?

uni-app如何实现高性能,uni-app,前端,vue.js 这就相当于两个不同地域的人见面进行交流,他们只懂各自的语言,那么怎么才能进行交流呢,常见的方法就是找个翻译,他同时懂两方的语言,由他来做中间的桥梁,实现两方的沟通。这个时候uni-app runtime就应用而生,来实现此部分的工作。上面的架构就变成的这样:

uni-app如何实现高性能,uni-app,前端,vue.js

 数据的流向和事件的流向:

数据是由vue进行管理,数据有更改的时候由vue通知uni-app runtime,再有uni-app runtime进行转发给小程序,由此实现数据的流向;事件函数的管理正好相反,当用户触发小程序的事件,由小程序通知给uni-app runtime,再由uni-app runtime转发给vue,vue在收到事件通知后实现事件的响应函数。

uni-app如何实现高性能,uni-app,前端,vue.js

 生命周期是由小程序到vue,由vue进行管理

uni-app如何实现高性能,uni-app,前端,vue.js

性能优化 

常见的性能优化包含两方面内容:启动加载性能(页面启动的时候比较慢)、页面渲染性能(页面滑动的时候响应慢)。

uni-app如何实现高性能,uni-app,前端,vue.js

 众所周知vue开发的程序,是通过dom树进行渲染,当dom树中的数据进行更改的时候,vue会利用自身的算法实现最小的更改对界面进行重新渲染;而小程序的的dom和vue的dom是关联不起来,因此实现的思路变成了下面这种样式:

uni-app如何实现高性能,uni-app,前端,vue.js

结合生命周期就变成了这样 ,因此在小程序开发中不会vue dom

uni-app如何实现高性能,uni-app,前端,vue.js

vue优化

uni-app如何实现高性能,uni-app,前端,vue.js 由于上面讲过小程序的开发是要重新编译文件的,因此在编译过程中会在panse、optimze中只需标注静态节点,这部分在重新渲染时是不用在进行渲染的;vue的生成实在render中,因此在执行的时候是要修改render的,这部分是针对vue的页面,因此在小程序的开发中这部分是被删除掉的。patch是用于变例vue中的节点,如果由变更就会通知前端进行重新渲染,没有则不必。小程序只针对data因此,只需要将data传递给小程序即可。

uni-app如何实现高性能,uni-app,前端,vue.js

小程序的数据大体流向

uni-app如何实现高性能,uni-app,前端,vue.js

实际数据流向 

uni-app如何实现高性能,uni-app,前端,vue.js

因此从小程序的数据流向可以看出,在小程序中的数据更新就是调用setdata,如何 才能进行优化呢?

1.减少setdata的调用频次;

2.减少setdata在调用是的数据量。

具体方法:

 uni-app如何实现高性能,uni-app,前端,vue.js

 上图左边是在小程序中进行了,需要四次通讯,而在vue中我们可以通过一次进行实现,大大减少通讯的消耗;有人会立即指出神经病才会向左边这样写代码,那么我们换个思路,如果是四个变量呢?是不是在小程序中需要四次。这个也是可以优化的。

uni-app如何实现高性能,uni-app,前端,vue.js

uni-app如何实现高性能,uni-app,前端,vue.js setdata数据量如何减少呢?

下面这个例子中页面用到了a、b两个数据,但在执行方法的时候有a、b、c和d四个参数,在小程序的开发中肯定会传输四次;而实际中我们利用vue只需要传递a一个值就行了,因为只有a一个值改变了。

uni-app如何实现高性能,uni-app,前端,vue.js

常见的页面刷新:左边是微信的小程序的写法,右边是vue的写法;如果页面默认加载50条数据,在第一次下拉更新时,微信小程序需要传输100条数据,而在vue中只需要传输50条数据,数据量明显减少;

在第二次下拉更新时,微信小程序需要传输150条数据,而在vue中只需要传输50条数据,数据量明显减少;

在第三次下拉更新时,微信小程序需要传输200条数据,而在vue中只需要传输50条数据,数据量明显减少;

在第四次下拉更新时,微信小程序需要传输250条数据,而在vue中只需要传输50条数据,数据量明显减少;

在第五次下拉更新时,微信小程序需要传输300条数据,而在vue中只需要传输50条数据,数据量明显减少;

在第六次下拉更新时,微信小程序需要传输350条数据,而在vue中只需要传输50条数据,数据量明显减少;

uni-app如何实现高性能,uni-app,前端,vue.js

总结:减少setdata传输量的方式 就是在vue的patch中删除vnode,仅使用diff data,借鉴westore Json Diff库实现高效、精确的差量数据。

uni-app如何实现高性能,uni-app,前端,vue.js

 性能渲染优化

uni-app实现了全套的vue组件的自主开发

uni-app如何实现高性能,uni-app,前端,vue.js

 微信小程序滚动优化

首先看一下微信小程序滚动刷新会带来的后果就是频繁刷新,增加数据的传输

uni-app如何实现高性能,uni-app,前端,vue.js

增加滚动边界,在不触发滚动条件的时候不传输数据uni-app如何实现高性能,uni-app,前端,vue.js 

 uni-app测试效果

uni-app如何实现高性能,uni-app,前端,vue.js

加载性能

uni-app如何实现高性能,uni-app,前端,vue.jsuni-app如何实现高性能,uni-app,前端,vue.jsuni-app开发的好处: 

uni-app如何实现高性能,uni-app,前端,vue.js

跨端的好处 

uni-app如何实现高性能,uni-app,前端,vue.js 平台能力

uni-app如何实现高性能,uni-app,前端,vue.js 生态:

uni-app如何实现高性能,uni-app,前端,vue.js

 uni-app的平台架构

uni-app如何实现高性能,uni-app,前端,vue.js

码字不易,如果您觉的我的文章对您有帮助的话,建议您在经济能力之内慷慨打赏一元给我买瓶水, 这将是我下一步继续书写本题目的动力;如果您囊肿羞涩也没有关系,希望您点个关注,写点评论;您的支持将是我创作之路上的无线动力;青山依旧绿水长流,希望我们下期来能再见。 文章来源地址https://www.toymoban.com/news/detail-847424.html

到了这里,关于uni-app如何实现高性能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • UNI-APP 人脸识别分析及实现(前端)

    实现流程: 1、打开摄像头——自动读取照片——传输给后端——后端交由第三发或自主开发来识别——返回结果(相识度比) 2、打开摄像头——自动读取视频——传输给后端——后端通过解析视频,截取图片交由第三发或自主开发来识别——返回结果(相识度比) 通过分

    2023年04月08日
    浏览(47)
  • C++高性能优化编程之如何测量性能(一)

    C++高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C++并发线程编程 不好的编程习惯,不重视程序性能测量分析让代码跑的更快,会导致 浪费大量的CPU周期、程序响应时间慢以及卡顿,用户满意度下降,进而浪费大量的时间返工去重构本应该一开始就

    2024年02月06日
    浏览(65)
  • 企业如何构建高性能计算云?

    HPC是推动科学和工程应用发展的重要组成部分。除了将处理器向Exascale迈进之外,工作负载的性质也在不断变化—从传统的模拟和建模到混合工作负载,包括企业内部和云应用,还需要整合、吸收和分析来自无数物联网传感器的数据。同时,随着HPC基础设施上的人工智能工作

    2024年02月03日
    浏览(53)
  • 如何评估和优化系统的高性能

    系统的关键性能指标:吞吐量,延迟和TP。 吞吐量:反应单位时间内处理请求的能力。 延迟:从客户端发送请求到接收响应的时间。 延迟和吞吐量的曲线如下图所示: 总体来看,随着压力增大,系统单位时间内被访问的次数增加。结合延迟和吞吐量观察的话,系统优化性能

    2024年02月22日
    浏览(59)
  • win11如何开启电脑高性能模式?

    我们打开电脑高性能模式通常是在控制面板-硬件和声音-选择电源计划 正常情况下,在选择电源计划界面便有高性能模式选项,选中并保存即可。 但有时候我们在选择电源计划界面只有一个平衡模式,没有高性能模式怎么办呢? 不慌,只要在cmd窗口输入下行命令即可! 回车

    2024年02月14日
    浏览(80)
  • 如何配置一台高性能的IBM服务器

    在当今信息化时代,服务器作为企业数据存储、处理和传输的核心设备,其性能的优劣直接关系到企业的运营效率和安全性。而IBM作为全球领先的企业级服务器提供商,其产品广泛应用于各行各业。本文将为你详细介绍如何配置一台高性能的IBM服务器,帮助你打造稳定、高效

    2024年01月23日
    浏览(59)
  • 002. 使用最小堆实现高性能定时器实现

    定时器原理 – 任务的容器(要求:数据结构有序或相对有序;能快速查找最近触发的定时任务) + 触发条件(可以通过带有time_out的系统函数,如epoll_wait的最后一个参数); 最小堆的特点 – 是一颗完全二叉树; – 某个节点的值总是小于等于它子节点的值(即定位到最小值的时间

    2024年02月07日
    浏览(53)
  • uni-app:如何实现安卓设备的无线调试

    在前端开发中,与安卓设备进行调试是一个常见的任务。通常,我们使用ADB(Android Debug Bridge)通过USB连接来进行调试。然而,有时候我们可能需要无线进行调试,这样可以提供更大的灵活性和便利性。在本文中,我们将介绍如何使用uni-app框架和ADB来实现安卓设备的无线调试

    2024年02月01日
    浏览(49)
  • 通过Span实现高性能数组,实例解析

    SpanT 是 C# 7.2 引入的一个强大的数据结构,用于表示内存中的一块连续数据。它可以用于实现高性能的数组操作,而无需额外的内存分配。在本文中,我将详细介绍如何使用 SpanT 来实现高性能数组操作,并提供一些示例代码来说明其用法。 SpanT 是 System.Memory 命名空间中的结构

    2024年02月05日
    浏览(58)
  • Docker与Kafka:实现高性能流处理

    Docker 和 Kafka 都是现代技术中的重要组成部分,它们各自在不同领域发挥着重要作用。Docker 是一个开源的应用容器引擎,用于自动化部署、创建、运行和管理应用程序。Kafka 是一个分布式流处理平台,用于构建实时数据流管道和流处理应用程序。 在大数据和实时数据处理领域

    2024年02月20日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包