diff --git a/docs/select.md b/docs/select.md
index af89f2bd18b5557f418910180604df4716896843..813d605f8379cfaf181cc7e1ffdcedd59c329456 100644
--- a/docs/select.md
+++ b/docs/select.md
@@ -76,7 +76,7 @@ flutter2018年发布,第一次统一了逻辑层和渲染层,而且使用了
下载apk后可以看到dart操作flutter的UI真的没有通信折损,100个slider的拖动非常流畅。
-
+
flutter看起来很完美。但为什么也没有成为主流呢?很多大厂兴奋的引入后为何又不再扩大使用范围呢?
@@ -152,13 +152,19 @@ flutter开发者都知道的一个常见坑是输入法,因为输入法是典
在各大App中,微信的小程序首页是为数不多的使用flutter UI的界面。
-下面是微信8.0.44(此刻最新版),这个界面很简单,规避了输入框等混合渲染,点击搜索图标后又跳转到了原生渲染的界面里,这里也没有原生API的频繁调用。但是在手机切换暗黑主题后,这个UI却还是白的,而且flutter的父容器原生view已经变黑了,它又在黑底上绘制了一个白色界面,体验非常差。假使这个界面再内嵌一个原生的信息流SDK,那你会看到信息流广告是黑底的,更无法接受。
+下面是微信8.0.44(此刻最新版),从微信的发现页面进去小程序首页。
-
+
+
+视频中手机切换暗黑主题后,这个UI却还是白的,而且flutter的父容器原生view已经变黑了,它又在黑底上绘制了一个白色界面,体验非常差。
+
+这个小程序首页界面很简单,没有输入框,规避了混合渲染,点击搜索图标后又跳转到了黑色的原生渲染的界面里。
+
+假使这个界面再内嵌一个原生的信息流SDK,那会看到白色UI中的信息流广告是黑底的,更无法接受。
当然这不是说flutter没法做暗黑主题,重启微信后这个界面会变黑。这里只是说明渲染引擎不一致带来的各种问题。
-> 注:如何识别一个界面是不是用flutter开发的?在手机设置的开发者选项里,有一个GPU呈现模式分析,flutter的UI不触发这个分析。
+> 注:如何识别一个界面是不是用flutter开发的?在手机设置的开发者选项里,有一个GPU呈现模式分析,flutter的UI不触发这个分析。且无法审查布局边界。
flutter的混合渲染的问题,在所有使用原生渲染的跨平台开发框架中都不存在,比如react native、weex、uni-app x。
@@ -179,7 +185,7 @@ flutter最大的优势是dart操作UI不需要通信,以及强类型,而改
这个项目[https://gitcode.net/dcloud/test-cross/-/tree/master/test_arkuix_slider_100](https://gitcode.net/dcloud/test-cross/-/tree/master/test_arkuix_slider_100),
使用ArkUI-x做了100个slider,大家可以看源码,下载apk体验,明显能看到由于逻辑层和UI层通信导致的卡顿。
-
+
上述视频中,手指按下的那个slider,和其他通过数据通讯指挥跟随一起行动的99个slider,无法同步,并且界面掉帧。
@@ -242,18 +248,22 @@ uts语言是基于typescript修改而来强类型语言,编译到不同平台
```
这听起来有点天方夜谭,很多人不信。DCloud不得不反复告诉大家,可以使用如下方式验证:
-- 在编译uni-app x项目时,在项目的unpackage目录下看到编译后生成的kt文件
+- 在编译uni-app x项目时,在项目的unpackage目录下看看编译后生成的kt文件
- 解压打包后的apk,看看里面有没有js引擎或flutter引擎
- 手机端审查布局边界,看看渲染是不是原生的(flutter和webview都无法审查布局边界)
-大家也可以下载hello uni-app x这个示例应用,源码在:[https://gitcode.net/dcloud/hello-uni-app-x/](https://gitcode.net/dcloud/hello-uni-app-x/);打包后的apk扫描下面的二维码。
+但是开发者也不要误解之前的uni-app代码可以无缝迁移。
+- 之前的js要改成uts。uts是强类型语言,上面的示例恰好类型都可以自动推导,不能推导的时候,需要用`:`和`as`声明和转换类型。
+- uni-app x支持css,但是css的子集,不影响开发者布出所需的界面,但并非web的css全都兼容。
+
+hello uni-app x是示例应用,源码在:[https://gitcode.net/dcloud/hello-uni-app-x/](https://gitcode.net/dcloud/hello-uni-app-x/);打包后的apk扫描下面的二维码。
![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-app-x/hello-uniappx-apkqrcode.png)
在这个示例中,组件-表单组件下有slider100,100个滑块跟随手指移动,大家可以体验看看流畅度。
打开GPU呈现模式,可以看到没有一条竖线突破那条红色的掉帧安全横线,也就是没有一帧掉帧。
-
+
uni-app x是一次大胆的技术突破,分享下DCloud选择这条技术路线的思路:
@@ -266,12 +276,14 @@ DCloud做了很多年跨平台开发,uni-app在web和小程序平台取得了
那么App平台,为什么不能像web和小程序那样,直接编译为App平台的原生语言呢?
-uni-app x的推出,目标不是改进跨平台框架的性能,而是给原生应用提供一个更高效的写法。
+**uni-app x,目标不是改进跨平台框架的性能,而是给原生应用提供一个跨平台的写法。**
+
+这个思路的转换使得uni-app x超越了其他跨平台开发框架。
在web端编译为js,在小程序端编译为wxml等,在app端编译为kotlin。
每个平台都只是帮开发者换种一致的写法而已,运行的代码都是该平台原生的代码。
-同样业务功能的app,使用vue的写法,可比手写纯原生快多了。也就是uni-app x对开发效率的提升不只是因为跨平台,单平台它的开发效率也更高。
+另外,同样业务功能的app,使用vue的写法,可比手写纯原生快多了。也就是uni-app x对开发效率的提升不只是因为跨平台,单平台它的开发效率也更高。
其实google自己也知道原生开发写法太复杂,关于换种更高效的写法来写原生应用,他们的做法是推出了compose UI。
@@ -280,15 +292,17 @@ uni-app x的推出,目标不是改进跨平台框架的性能,而是给原
源码见:[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可以直接安装体验。
-打开GPU呈现模式,可以看到大多数竖线都突破那条红色的掉帧安全横线,也就是掉帧严重。
+打开GPU呈现模式,可以看到compose ui的100个slider拖动时,大多数竖线都突破那条红色的掉帧安全横线,也就是掉帧严重。
-
+
uni-app x在app端,不管逻辑层、渲染层,都是kotlin,没有通信问题、没有混合渲染问题。不是达到了原生的性能,而是它本身就是原生应用,它和原生应用的性能没差别。
+这也是其他跨平台开发框架做不到的。
+
当然uni-app x刚刚推出,还有很多不成熟的地方,比如前文diss微信的暗黑模式,其实截止到目前uni-app x还不支持暗黑模式。甚至iOS版现在只能开发uts插件,还不能做完整应用。
-但这个技术路线是最佳路径,随着产品的迭代完善,它能真正解决开发者开发效率和性能兼得的问题,让跨平台开发不如原生,成为历史。
+但这个技术路线是产业真正需要的东西,随着产品的迭代完善,它能真正解决开发者开发效率和性能兼得的问题,**让跨平台开发不如原生,成为历史**。
再次欢迎体验uni-app x的示例应用,感受它的启动速度,渲染流畅度。
@@ -296,6 +310,8 @@ uni-app x在app端,不管逻辑层、渲染层,都是kotlin,没有通信
- 一个是组件-表单组件-slider100,100个滑块跟随手指移动。
- 另一个是模版-scroll-view自定义滚动吸顶,在滚动时实时修改元素top值始终为一个固定值,一点都不抖动。
-我们不说服您使用任何开发技术,但您应该知道它们之间真实的差别。
+![](https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni-app-x/hello-uniappx-apkqrcode.png)
+
+我们不说服您使用任何开发技术,但您应该知道它们的原理和差别。
欢迎指正和讨论。
\ No newline at end of file