许多人知道,跨平台框架的应用表现更好。但是大多数人只知道这是因为硬件很好。
实际上,还有另一个重要原因。 iOS用C编写,并且还使用了OS的API和渲染层。当JS本地调用时,某些类型可以优化共享内存。但是,复杂的对象仍然无法将指针直接投入共享内存。
但是,无论是Java还是,他们仍然需要与V8和Dart进行通信。
2.2渲染与本机渲染之间共存的问题
自渲染引擎在技术上很好。但是生态兼容性存在问题。
许多三方软件和SDK都是本地的,当本机渲染和自渲染共存时,存在许多问题。
开发人员知道的一个常见陷阱是输入方法,因为输入方法是典型的本机UI,并且它与自动划分UI并存,并且输入框被阻塞并适应了表单。输入方法有很多类型,这非常困难。适应。
混合的渲染以及信息流广告,地图,图表,动画以及许多其他三方SDK。目前,内存使用率很高,渲染帧速率降低,字体在不同的渲染方法中不一致,黑暗主题不一致,国际化,无障碍,UI自动化测试以及各种不一致的不一致。 。 。
这里没有提供开源示例,因为官员确认此问题,它提供了两种方法:混合集成模式和虚拟显示模式。
但是,它们在渲染速度,内存使用情况,版本兼容性和键盘交互方面都有自己的问题。有关详细信息,请参阅官方网站:#。这是用中文翻译的:#
在所有主要应用程序中,微信的迷你计划主页是使用UI的少数接口之一,并且已经在线超过一年。
以下是微信8.0.44(目前最新版本),从微信的页面中输入Mini程序的首页。
在视频中,手机切换到黑暗主题后,UI仍然是白色的,并且父装容器的本机视图已变成黑色。它在黑色背景上绘制了一个白色界面,经验很差。
该迷你程序主页的界面非常简单,没有输入框,避免混合渲染,然后单击搜索图标后跳到黑色本机渲染界面。
如果此界面嵌入了本机信息流SDK,您将看到 UI中的信息流量广告是黑色背景,这是更不可接受的。
当然,这并不意味着不可能做一个黑暗的主题。重新启动微信后,该界面将变黑。这只是对渲染引擎不一致引起的各种问题的解释。
注意:如何确定是否开发了接口?在手机设置的开发人员选项中,有GPU渲染模式分析,并且UI不会触发此分析。而且布局边界无法审查。
在使用本机渲染(例如Weex,Uni-App X)的所有跨平台开发框架中,混合渲染的问题并不存在。
总结:逻辑层和UI层之间的相互作用没有通信损失,但是逻辑层飞镖和本机API具有通信成本,并且自绘制UI和本机UI存在许多混合渲染问题。
3。JS+渲染
除了上述本地交流和混合渲染外,还有其他三个问题:DART生态学,热门更新和相对困难的嵌套写作。
一些制造商已用JS发动机代替了DART引擎,以解决以上三个问题。例如,微信,webf,-x。
实际上,这是一个令人困惑的行为。因为这又回到了Weex的旧路径,所以它只是用渲染替代了本机渲染。
最大的优点是,DART操作UI不需要通信和强大的类型,而是更改为JS。操作UI需要再次进行通信,并且需要JS运行时引擎。
为了解决JS和渲染层之间的通信问题,微信已经启动了补丁技术动画,以允许代码的这一部分在UI层中运行。 (当然,除了跨语言之外,交叉处理的交流还会更加明显)
该项目是用100使用-x制成的。您可以读取源代码并下载APK进行体验。显然,您可以看到逻辑层和UI层之间的通信引起的切口。
在上面的视频中,请注意您用手指按下的那个视频,并关注其他99个人通过数据通信命令,无法同步,并且界面将被框架。
但是,由于自渲染无法通过开发人员工具查看GPU渲染模式,因此它无法直观地反映框架图的帧下降。
Note -X不支持低于.0的手机,不要寻找太旧而无法测试的手机。
许多人认为自我引诱是王国,但实际上,自我引入是一个坑。因为UI也会带来混合的渲染问题。
换句话说,与JS+渲染相比,这两种解决方案既是JS的弱类型,逻辑层和渲染层的通信问题以及本机API通信问题,而JS+也具有额外的混合动力。渲染问题。
一些学生可能会说,本地渲染在iOS和双端很难保持一致,而自渲染也没有这个问题。
但是实际上,它可以完全与两端一致。如果您与某个本机渲染框架遇到不一致问题,只是该框架制造商做得不好。
是的,遗憾的是,跨端组件的投资不足,而且该官员甚至没有组件,从而导致了本评论中未提供的-100个示例和视频。
4。Uni-App x
2022年,UTS语言发布。 2023年,Uni-App X发布。
UTS语言是基于修改的强烈键入语言。当编译到不同平台时,有不同的输出:
Uni-App X是基于UTS语言重新开发的Uni-App组件,API和VUE框架。
前端学生熟悉以下示例,但是当将其编译成应用程序时,它将变成一个纯应用程序,没有JS引擎,否,否,并且它是从逻辑层到UI层的本机。
{{title}}
这听起来有些奇妙,许多人不相信。我必须反复告诉您,您可以使用以下方法对其进行验证:
但是,开发人员不应误解以前的Uni-App代码可以无缝迁移。
了解Uni-App X的基本原理后,让我们看一下Uni-App X下的100个效果。
该项目下有源代码工程并编译了APK。
在下面的视频中,当打开GPU渲染模式时,您会看到没有垂直线路穿过红色框架落下安全水平线,即没有框架下降。
Uni-App X在应用程序端,无论逻辑层或渲染层如何,都没有通信问题或混合渲染问题。并不是说它已经实现了本地性能,而是它是本地应用程序本身,并且其性能与本机应用程序没有什么不同。
这也是其他跨平台开发框架无法做到的。
Uni-App X是一个大胆的技术突破。让我们分享选择此技术路线的想法:
经过多年的跨平台开发,Uni-App在网络和微型程序平台上取得了巨大的成功,各种规模的开发人员正在使用它。但是,在应用程序平台中,大型开发人员仅使用UNI MINI- SDK,整体将使用中小型开发人员的应用程序。
原因是Uni-App在Web和中没有性能问题。它直接用于JS或WXML。 Uni-App只是一种跨平台写作方法。与本机JS或本地人的陈述说WXML性能很差,无法使用Uni-App开发。
但是,过去,基于迷你程序架构的应用程序的性能确实不如本地发展。
那么,为什么不能将应用程序平台直接汇编成应用程序平台的本地语言,例如Web和Mini程序?
Uni-App X,目标不是提高跨平台框架的性能,而是要使用跨平台写作方法提供本机应用程序。
这种想法的转变使Uni-App X超过其他跨平台开发框架。
在网络端的JS作为JS编译,在迷你程序侧等上作为WXML编译,并按照应用程序侧进行编译。每个平台都只能帮助开发人员更改相同的写作样式,而他们运行的代码是平台的本机代码。
但是,两年前,这条路线有2个巨大的风险:
没有人走过
即使可以完成,工作量也很大
没有人确定可以制作该产品,并且有许多内部争议。
幸运的是,在遇到了无数的困难和挑战之后,该产品终于发布了。
更改写作方法来编写本机应用程序也带来了另一个好处。
对于具有相同业务功能的应用程序,使用VUE写作要比纯本机笔迹快得多。也就是说,Uni-App X不仅因为跨平台,而且在单个平台上具有更高的开发效率,提高了开发效率。
实际上,我也知道,本地发展的写作方法太复杂了。关于更有效地更改本机应用程序的写作方法,它们的方法是启动UI。
不幸的是,该解决方案引入了性能问题。我们专门测试了使用UI进行100张幻灯片的示例,并且平滑度也会掉落框架。
请参阅源代码:如果项目下面有包装APK,则可以直接安装和体验它。
打开GPU渲染模式时,您会看到,当100个UI拖动时,大多数垂直线突破了红色框架落下安全水平线,这意味着该框架会认真下降。
由于已经包装了不同开发框架的-100应用程序,因此我们还比较了不同框架下的包装尺寸和内存使用量:
软件包音量(单位:M)内存占用(单位:KB)
18
.8
-x
45.7
.2
Uni-App x
8.5
.2
UI
4.5
..2
软件包卷数据描述:
内存使用数据描述:
5。后记
跨语言交流,弱类型,混合渲染,包装量和内存足迹都是跨平台框架过去不如本地的所有物品。
这些问题在Uni-App X中不存在,它只是一个变化写作风格的本机应用程序。
各种框架类型逻辑层和UI通信损失逻辑层和OS API通信损失混合渲染
,NVUE,WEEX
虚弱的
有
有
没有任何
强大的
没有任何
有
有
微信,webf,-x
虚弱的
有
有
有
Uni-App x
强大的
没有任何
没有任何
没有任何
本地应用
强大的
没有任何
没有任何
没有任何
当然,作为一项客观分析,有必要在这里强调Uni-App X刚刚发布,并且仍然存在许多不成熟的方面。例如,在上一篇文章中,Diss微信的黑暗模式实际上,Uni-App X到目前为止不支持Dark Mode。甚至iOS版本也只能开发UTS插件,并且无法制作完整的iOS应用程序。
需求墙上充满了不应该完成的单次X。也欢迎大家投票。
此外,本机界面中不应该有太多元素,否则性能会很差。自渲染和UI解决了这个问题。为了本地解决这一问题,我们需要引入一种自抽取机制来减少元素数量。这对应于Uni-App X中的绘制自画API。
Uni-App X技术路线是行业真正需要的。随着产品的迭代和改进,它可以真正帮助开发人员提高开发效率而不牺牲性能。
使跨平台的发展比本地差并成为历史。
欢迎经验体验Uni-App X的样本应用,感受其启动速度和渲染流利度。
源代码是:或扫描下面的QR代码以下载包装的APK文件:
UTS-01.png
在此示例中,有几个示例测试通信性能。除了内置-100外,另一个是“模板 - 视图自定义滚动天花板”。滚动时,元素的最高值始终是固定值。没有摇晃。
我们不会游说您任何开发技术,但您应该知道他们的原则和差异。
欢迎提醒和讨论。
橄榄分支
欢迎所有对Uni-App团队感兴趣的学生将其简历提交给 @.io,或单击下面阅读原始文本并通过掘金向我发送私人消息。
这是一个纯粹的工程师团队。该公司90%的员工是代码编写工程师。他们不需要结识客户或编写解决方案。他们中的大多数都有原始的权益。欢迎好奇并追求卓越的极客加入。
感谢您在2023年的辛勤工作,希望我们明年可以继续狂风!
单击以接收“掘金未来,编码在一起”,新年红信封封面