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