uniapp与原生小程序槽点对比,为何更推荐uniapp

2025-04-03
来源:网络整理

比较本地小程序

本地迷你计划有很多投诉,但相对推荐

官方文档 - 选择指南提供详细的多方比较评论,如果您需要深入了解,则可以阅读并参考。

应用程序末端的跨端框架正在迅速发展,本文仅将其与小型程序端进行比较。

我个人的看法是:如果您涉及跨端,那是一个无底的坑,但是您可以权衡取舍并做出很好的选择

功能实现

编写小程序最终将代码转换为本地小程序

它不限制基本的API呼叫本身,并且与 JS SDK和自定义组件兼容。即使未封装,您仍然可以直接编写本机写作方法。同时,它支持各种平台的查看层脚本语言,包括微信WXS,, SJS

在功能方面,迷你计划的开发与本地迷你程序没有什么不同

性能经验

因为它需要横端,所以它将按一层包装和转换。它似乎增加了运营负担,但实际上,常规场景中的性能经验更好

微信小程序文档 - 文章“理性使用”清楚地指出:数据的大小和频率将影响运行性能

由于数据需要序列化,并且所有数据都从逻辑层传输到数据层,因此视图层更新是异步触发的,并且每个调用都会触发遍历,更新,甚至是虚拟DOM树的页面重新渲染。

例如,在官方评估中提供的示例:在数组中添加新数据时,原始数据,需要合并,序列化和传输新数据。

data: { listData: [] }, onReachBottom() { //上拉加载 let listData = this.data.listData; listData.push(...Api.getNews());// 新增数据 this.setData({ listData }) // 全量数据,发送数据到视图层 // 例如原有1000条,新增20条后,setData仍然需要从逻辑层传递1020条数据到视图层 }

需要手动优化本地语法中的吸引人方案:

data: { listData: [] },

微信开发选择什么语言_微信小程序开发语言选什么_开发微信小程序的编程语言

onReachBottom() { //上拉加载 // 通过长度获取下一次渲染的索引 let index = this.data.listData.length; let newData = {}; //新变更数据 Api.getNews().forEach((item) => { newData['listData[' + (index++) + ']'] = item //赋值,索引递增 }) this.setData(newData) //增量数据,发送数据到视图层 /* this.setData({ listData[21] = xxx listData[22] = xxx }) */ }

10

11

12

13

14

15

16

17

18

实施使用差异策略来最大程度地减少数据传输并减少通信损失;以及VUE中的异步更新机制,首先在虚拟DOM中应用所有事件循环中的所有更改,然后将最小更改应用于视图以避免重复触发更新。

微信小程序开发语言选什么_开发微信小程序的编程语言_微信开发选择什么语言

可以将其与VUE开发和本地发展进行比较。如果没有进行特殊优化,则本机性能通常不如框架性能好。

优化的本地性能>性能>不优化的本地性能

社区生态

由于它们都在迷你程序平台中使用,因此大多数插件或问题解决方案相对易于连接。因此,在社区生态的比较中,基本上可以忽略差异。例如,在搜索问题时,两个社区都可以尝试

微信小程序需要在管理背景中搜索附加组件,这提供了开放式插件市场

在社区活动方面,社区和微信开放社区都很受欢迎,并且大多数问题都有相应的帖子(尽管实际业务中会有很多问题可以找到明确的答案)

这两个微信迷你计划在生态上都更加完美

发展经验

本地迷你程序的原始语法被批评为“无与伦比的”。对于开发人员而言,这相当于学习一组新的语法,大大增加了学习成本。

使用的VUE语法 +迷你程序API方法更友好,入门的困难大大减少了。

在编辑中,有自我开发的。尽管它受到了很多批评,但它等同于微信本机开发人员工具,这些工具提供了视觉配置,代码提示,转到定义,快速创建新项目,文件以及方便的编译和包装辅助功能。它支持州管理工具,VUEX,支持预处理器,新的ES语法,更好的工程支持等。

发展经验明显优于本地小程序

可扩展性

制定迷你计划的主要目的之一是依靠平台来促进交通转移。一次主要开发曾经,多端覆盖范围可以轻松地将应用程序扩展到多个平台,这对企业具有很高的价值。

保持可伸缩性而没有任何缺点

Uni-App本地的摘要

功能

相同的

相同的

表现

自动框架优化

需要手动优化

社区生态

分享