小程序开发的资源网站-真实评测:使用uni-app打开好友程序,比原生开发好在哪里?

小程序原生开发存在很多不足:

原生wxml开发对Node、预编译器、webpack支持不好,影响开发效率和项目建立流程。所以大公司也会使用框架来开发

陌陌定义的wxml、wxs、wx:if等句型太私有化了。还不如认真学习Vue小程序开发的资源网站,学会通用,不要只为了陌陌小程序

Vue生态中有太多的外围工具,可以提高开发效率,比如ide、validator、三方库等。 。 与专业编辑器相比,陌陌的开发者工具并不好用,个性化设置也很少。

作为后端工程师,不仅是陌陌小程序,还有网页、其他小程序甚至App,人们都不喜欢来回切换开发工具、改变句型。

uni-app 自然可以解决这个问题,但是开发者常常会有一些疑惑:

本文从开发者关心的功能、性能、学习门槛、开发体验、生态、扩展性等维度进行一一分析对比和讲解。

功能实现

开发者最常问的问题:小程序迭代升级,增加了一批API,但uni-app框架没有及时更新怎么办?

虽然这是一个误解,但uni-app并不限制底层API调用; 小程序端,uni-app支持直接编译陌陌原生代码。

类比传统的Web开发,如果使用vue、react等框架让开发者很难操作浏览器提供的所有API,那么这样的框架一定是不成熟的。 小程序开发也是如此。 在uni-app框架中,也可以调用Momo提供的所有原生代码。

因此,如果存在个别API(平台特定或新增API),且uni-app尚未封装,开发者可以直接在uni-app中编译Momo原生API,即以wx开头的各种API。

例如,目前uni-app似乎没有封装跨平台的广告(ad)组件,但开发者仍然可以在小程序端使用Momo组件来解释广告。 代码示例如下:

小程序的疗效如下:

包括陌陌小程序自定义组件、WXS、云开发的复杂使用,在uni-app中也全面支持。

因此推论是:使用uni-app框架进行开发在功能上和原生小程序开发没有什么区别,不会有任何限制。

表演经验

开发者经常问的第二个问题:三方框架大部分内部都是分层封装的。 这种封装会减少运行负载并提高性能吗?

也是太担心了,uni-app不会造成性能下载,甚至会手动优化很多链接。 在很多场景下,性能体验都比Momo原来开发的要好。

类似于使用vue.js开发web,不仅性能不会比原生js差,而且因为使用了虚拟dom和差分更新技术,在大多数场景下,性能比原生js的开发者要好。自动编写操作dom的代码。

小程序需要频繁编写setData代码来更新数据,而这里重要的是更新差异数据。 如果不做任何区别,代码性能将会很差。 如果每个逻辑都判断更新差异数据,那么写代码就太麻烦了。

小程序开发的资源网站-真实评测:使用uni-app打开好友程序,比原生开发好在哪里?

使用uni-app,底层手动差异数据更新简单且高性能。

我们从优化理论和实测数据两个维度来仔细解释。

2.1

理论:框架优化方案

为了提升性能体验,小程序从架构设计层面做了大量的工作:

通过这样的规范约束,小程序的整体性能体验得到了很大的提升,但仍然存在很多性能陷阱,其中setData是最常见、最常见的。

以下是 Momo 的官方描述,以及 setData 背后的工作原理的简单介绍:

小程序的视口目前使用WebView作为渲染载体,逻辑层使用独立的JavascriptCore作为运行环境。 从架构上来说,WebView和JavascriptCore是独立的模块,没有直接数据共享的通道。 目前视口和逻辑层之间的数据传输实际上是通过双方提供的evaluateJavascript来实现的。

为了简化开发,Momo将evaluateJavascript调用封装到setDataJS方法中,实现视口与逻辑层之间的数据传输。 数据流图如下:

setData的执行会受到很多激励的影响。 每次setData传输的数据过多或者被频繁调用(参见Momo官方介绍),可能会导致性能体验问题。

幸运的是,uni-app 在这两方面都进行了优化。

2.1.1

减少setData传递的数据量

假设当前页面有一个列表(初始值为a、b、c、d),现在我们要向列表中添加4个新的列表项(e、f、g、h)。 我们分别使用 Momo Native 和 uni-app 两种模式编写代码。

小程序原生代码:

例如,在Momo的原始代码中,当执行change方法时,列表中的a、b、c、d、e、f、g、h等8个列表项都会通过setData传输。

统一应用程序代码:

如上面的uni-app代码,执行change方法时,只会传输列表中新增的4个列表项e、f、g、h,这样就大大简化了setData的传输量。

uni-app 借鉴了 westoreJSONDiff 库。 在调用setData之前,会先比较历史数据,准确高效的估计出变化的差异数据,然后调用setData只传输变化的数据,这样setData传输的数据量就可以实现。 的最小化,大大提高了通信性能。

Tips:其实传输的数据从a、b、c、d、e、f、g、h 8个列表项优化为e、f、g 4个列表项时,有些朋友并没有认真对待。 ,和h,但是我们提醒您不要低估这个机制,上面只是一个演示示例:

2.1.2

减少 setData 调用频率

假设我们有修改多个变量值的需求,我们有两种模式编译代码:Momo Native 和 Uni-App。

小程序原生代码:

以上四个setData调用会引起四个逻辑层和视口的数据通信

统一应用程序代码:

上面uni-app的代码最后会合并到{"a":1,"b":2,"c":3,"d":4}中,然后只调用一次setData就完成了所有数据传播。 大幅降低了setData的调用频率。

uni-app之所以有这样的优势,是因为uni-app是基于VueRuntime深度定制实现的,利用了Vue的nextTick机制。

2.2

实测:性能对比数据

有了上面的理论分析,我们接下来进行真机测试,用数据进行对比。

测试模型如下:

类微博列表是一个包含很多组件的列表。 这些复杂的列表对性能造成了较大的压力,非常适合性能测试。

从触发上拉加载到数据更新、页面渲染,都需要精确的时序。 人眼的视觉时序肯定不好。 我们采用程序嵌入的形式,制定时序时序如下:

Tips:setData弹跳函数的开始可以视为页面渲染完成的时刻,因为Momo setData的定义如下(Momo规范):

大批

类型

必需的

小程序开发的资源网站-真实评测:使用uni-app打开好友程序,比原生开发好在哪里?

描述

数据

目的

是的

本次要更改的数据

打回来

功能

setData引起的界面更新渲染后的反弹功能

测试方法:从页面空列表开始,通过程序手动触发上拉加载,每次添加20个列表,记录单次时长; 固定间隔连续触发N次上拉加载,导致页面上出现20*N个列表,估计这N次触发上拉的平均持续时间,直到渲染完成。

测试结果如下:

清单编号

莫莫原生

统一应用程序

200

第770章

第641章

400

第876章

第741章

600

1111

910

800

1406

1113

1000

1690

1321

说明:以400条微博列表为例,从页面空列表开始,每秒触发一次上拉加载(新增20条微博),记录单次时长,触发20次后停止(页面达到400条微博),估算这20次的平均时长,结果是陌陌原来的上拉->渲染完成在这20次的平均时长是876微秒,uni-app是741微秒。

这个数据可能违背很多人的直觉。 uni-app的性能其实比Momo更好!

其实使用Momo原生开发,你也可以自己编写代码来优化setData。 但为每个业务编译太多的判断是不现实的,所以还是用框架比较舒服。

这个结果和Web开发类似,Web开发也有原生js开发、vue、react框架等等。 如果不做特别的优化,原生js编写的网页性能往往不如vue和react框架。

正是因为Vue和React框架优秀,性能好,开发体验好,原生js开发的使用量逐渐减少。

群落生态

3.1

外围轮

小程序在网络之外构建了自己的生态,而很多网络生态中的轮子很难使用。

陌陌小程序还有周边生态,而其他几个小程序平台的生态基本还没有搭建起来。

uni-app周边生态非常丰富,插件市场有近800个插件。

首先uni-app兼容小程序生态小程序开发的资源网站,各种自定义组件可以直接导入使用。 在此基础上,uni-app插件市场出现了更多的vue组件,可以跨多个终端同时使用,而且性能优异。

这使得uni-app生态成为最丰富的小程序开发生态。

比如富文本分析、图表等组件,uni-app的插件性能超过了wxparse、wx-echart等Momo小程序组件。

小程序开发的资源网站-真实评测:使用uni-app打开好友程序,比原生开发好在哪里?

如果开发者需要丰富且高性能的组件,应该使用uni-app而不是原生小程序开发。

学习门槛、开发经验

首先,Momo原来的开发句型和React、Vue类似,有点不伦不类。 对于开发者来说,相当于学习了一套新的句型,大大增加了学习成本,这一点至今仍被大家诟病。

uni-app对开发者比较友好,简单来说就是vue的句型+小程序的api。

它遵循Vue.js句型规范,组件和API遵循Momo小程序的命名。 这些都是常见的技术栈,学习它们是后端的必备技能。 Uni-app没有太多额外的学习成本。

有一定 Vue.js 和 Momo 小程序开发经验的开发者可以快速上手 uni-app。

没有学过Vue的朋友不需要掌握Vue的全部。 他们只需要了解Vue基本句型、数据绑定、列表渲染、组件等,其他如路由、loader、cli、node.js、webpack等不需要学习。

因为HBuilderX工具可以配合uni-app进行无终端开发,可视化地创建项目、可视化地安装组件和扩展编译器,也就是说uni-app的学习门槛比网页开发vue.js要低。

从开发体验上来说,Momo的原生开发与uni-app有较大不同,主要有以下几个方面:

开发工具维度,差别就更大了:

未来的可扩展性

虽然现在的产品只要求发布到陌陌小程序,但如果有三天,老板和外面的和尚喝奶茶,转身要求覆盖阿里、百度、字节跳动等各个小程序平台.这时候程序员应该怎么办

这时,uni-ap的跨终端功能将成为程序员的自助工具。 基于uni-app开发的小程序可以同时发布到多个小程序,甚至App和H5平台,无需修改。 这不是梦,而是现实。

结语

统一应用程序

莫莫

功能

相同的

相同的

表现

日常场景比较好

需要自己编写复杂的代码来提高性能

群落生态

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 小程序开发的资源网站-真实评测:使用uni-app打开好友程序,比原生开发好在哪里? https://www.wkzy.net/game/165711.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务