Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-uni-app-x-zh
提交
ae83790d
U
unidocs-uni-app-x-zh
项目概览
DCloud
/
unidocs-uni-app-x-zh
通知
144
Star
2
Fork
33
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
9
列表
看板
标记
里程碑
合并请求
11
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-uni-app-x-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
9
Issue
9
列表
看板
标记
里程碑
合并请求
11
合并请求
11
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ae83790d
编写于
12月 24, 2023
作者:
W
wanganxp
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x
上级
c050eeac
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
10 deletion
+11
-10
docs/select.md
docs/select.md
+11
-10
未找到文件。
docs/select.md
浏览文件 @
ae83790d
选型对比
#
选型对比
uni-app x开发的是一个真正的原生应用,这和其他跨平台开发框架的区别是什么?
...
...
@@ -20,7 +20,7 @@ uni-app x开发的是一个真正的原生应用,这和其他跨平台开发
但那些非web-view的框架到底哪里不如原生?
# js+原生渲染
#
#
js+原生渲染
react native等抛弃webview,改由原生渲染的跨平台方案,2014年就推出了。如今手机硬件也越来越好了,为什么性能还达不到原生?
js+原生渲染的方案问题如下:
...
...
@@ -57,7 +57,7 @@ js+原生渲染的方案问题如下:
当然在js API的封装上可以做些优化,比如微信的storage提供了wx.batchGetStorageSync这种批量读取的API,既然遍历性能差,那干脆一次性从原生读出来再传给js。
这也只能是无奈的方案,如果在遍历时想用js做什么判断就实现不了了,而且一次性读出很大的数据后传给js这一下,也需要通信时间。
# flutter
#
#
flutter
flutter2018年发布,第一次统一了逻辑层和渲染层,而且使用了强类型。
它没有使用原生渲染,而是使用由dart驱动的渲染引擎,这样逻辑层的dart代码操作UI时,再也没有延时了!bindingx、wxs这种补丁方案再也不需要了。
...
...
@@ -71,7 +71,7 @@ flutter2018年发布,第一次统一了逻辑层和渲染层,而且使用了
下载apk后可以看到dart操作flutter的UI真的没有通信折损,100个slider的拖动非常流畅。
[](
./static/test-cross/flutter-slider.mp4
)
<video
id=
"video"
preload=
"none"
controls=
"controls"
width=
"100%"
src=
"./static/test-cross/flutter-slider.mp4"
></video>
flutter看起来很完美。但为什么也没有成为主流呢。在很多大厂兴奋的引入后又默默放弃呢?
...
...
@@ -90,13 +90,13 @@ flutter看起来很完美。但为什么也没有成为主流呢。在很多大
以下截图的测试环境是华为mate 30 5G,麒麟990。手机上所有进程杀掉。如下图:
-
1k数据从原生读到dart并渲染
![](
./static/test-cross/flutter_1k_read.jpeg
)
![](
./static/test-cross/flutter_1k_read.jpeg
)
#{.zooming height="400px"}
-
1k数据从原生读到dart并渲染再写回
![](
./static/test-cross/flutter_1k_readwrite.jpeg
)
![](
./static/test-cross/flutter_1k_readwrite.jpeg
)
#{.zooming height="400px"}
-
0.1k数据从原生读到dart并渲染
![](
./static/test-cross/flutter_0.1k_read.jpeg
)
![](
./static/test-cross/flutter_0.1k_read.jpeg
)
#{.zooming height="400px"}
-
0.1k数据从原生读到dart并渲染再写回
![](
./static/test-cross/flutter_0.1k_readwrite.jpeg
)
![](
./static/test-cross/flutter_0.1k_readwrite.jpeg
)
#{.zooming height="400px"}
通信损耗非常明显。数据量从1k降低到0.1k时,通信时间并没有减少10倍,这是因为通信耗时有一个基础线,数据再小也降不下去。
...
...
@@ -154,7 +154,7 @@ flutter的混合渲染的问题,在所有使用原生渲染的跨平台开发
总结下flutter:逻辑层和UI层交互没有通信折损,但逻辑层dart和原生api有通信成本,自绘UI和原生ui的混合渲染问题很多。
# js+flutter渲染
#
#
js+flutter渲染
flutter除了上述提到的原生通信和混合渲染,还有2个问题:dart生态、热更新、以及比较难用的嵌套写法。
...
...
@@ -183,7 +183,7 @@ flutter最大的优势是dart操作UI不需要通信,以及强类型,而改
但其实完全可以双端一致,如果你使用某个原生渲染框架遇到不一致问题,那只是这个框架厂商做的不好而已。
# uni-app x
#
#
uni-app x
2022年,uts语言发布。2023年,uni-app x发布。
...
...
@@ -266,6 +266,7 @@ uni-app x的推出,目标不是改进跨平台框架的性能,而是给原
其实google自己也知道原生开发写法太复杂,关于换种更高效的写法来写原生应用,他们的做法是推出了compose UI。
不过遗憾的是这个方案引入了性能问题。我们专门测试使用compose UI做100个slider滑动的例子,流畅度明显不行。
源码见:
[
https://gitcode.net/dcloud/test-cross/-/tree/master/test_compose_ui_slider_100
](
https://gitcode.net/dcloud/test-cross/-/tree/master/test_compose_ui_slider_100
)
,
项目下有打包后的apk可以直接安装体验。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录