提交 acf80f1e 编写于 作者: W wanganxp

x

上级 403dbd9c
......@@ -37,7 +37,7 @@ App端如需要更丰富的相机拍照API(如直接调用前置摄像头)
- 选择照片大多为了上传,uni ui封装了更完善的[uni-file-picker组件](https://ext.dcloud.net.cn/plugin?id=4079),文件选择、上传到uniCloud的免费存储和cdn中,一站式集成。强烈推荐使用。
- App上有时会遇到图片旋转90度问题,插件市场有解决方案:[图片旋转](https://ext.dcloud.net.cn/search?q=%E5%9B%BE%E7%89%87%E6%97%8B%E8%BD%AC)
- 微信小程序在2023年10月17日之后,使用API需要配置[隐私协议](https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html)
- 在部分低端机如红米上拍照闪退,拍照调用的是系统相机,当系统内存不足,rom为了给相机activity分配内存而把app的主activity回收了。遇到此问题建议使用nvue页面并内嵌的[自定义相机](https://ext.dcloud.net.cn/search?q=%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9B%B8%E6%9C%BA&orderBy=Relevance)的原生或uts插件。相关分析报告[详见](https://ask.dcloud.net.cn/article/40877)
**注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 [uni.saveFile](api/file/file?id=savefile),在应用下次启动时才能访问得到。**
......
......@@ -63,7 +63,9 @@ list-view组件有默认的下拉刷新样式,如果想自定义,则需使
+ type属性定义list-item组件类型。不赋值type属性默认值为0,每一个type类型都会有对应的list-item组件缓存池。
+ list-view组件加载list-item组件时,会优先查询对应type缓存池是否存在可复用的list-item组件。有则复用没有则创建新的list-item组件。
+ list-item组件被滑动出屏幕则会优先添加到对应类型的list-item缓存池,每个类型缓存最大5个(不同平台缓存最大值不固定),如果缓存池已满则进行组件销毁!
+ 部分list-item组件存在子元素个数差异或排版差异时。请尽可能的配置不同的type,这样可以规避获取相同type类型的list-item组件后。由于子元素差异导致list-item无法正常复用问题。具体可参考示例:
+ 部分list-item组件存在子元素个数差异或排版差异时。请尽可能的配置不同的type,这样可以规避获取相同type类型的list-item组件后。
* 很常见的一个错误是在长列表上方的list-item里放置banner图,却没有为这个不可复用的list-item设置单独的type,这会导致图片在复用失败后无法渲染。
* 由于子元素差异导致list-item无法正常复用问题。具体可参考示例:
```html
<template>
......
......@@ -50,7 +50,7 @@ uni-app x 中,没有通信阻塞,可以直接监听touch和滚动事件。
在touch和滚动事件中,移动dom元素时,有2个注意:
1. 请使用transform方式,而不是给dom的left/top/width/height等position参数重新赋值。这个在web开发也一样,直接改position参数不如使用transform。因为每次修改position参数都要过排版,而transform不用。
2. 请拿到dom的ref,调用js api操作,而不是通过模板style绑定data操作。因为操作data需要vue框架做diff对比,直接API操作则可以跳过vue框架。在touch和滚动中,16毫秒一帧才能达到最平滑的效果,多了几毫秒就可能掉帧。
2. 请拿到dom的id/ref,调用js api操作,而不是通过模板style绑定data操作。因为操作data需要vue框架做diff对比,直接API操作则可以跳过vue框架。在touch和滚动中,16毫秒一帧才能达到最平滑的效果,多了几毫秒就可能掉帧。
在大多数开发框架中,因为通信性能问题,吸顶这个行为需要底层特殊封装。而 uni-app x 无需特别封装,直接监听滚动事件,通过dom的api以transform方式修改top值,就能自己编写逻辑控制在指定条件下实现固顶。
......@@ -93,6 +93,8 @@ HBuilderX真机运行到Android时,每个页面进入时会都打印页面初
![](./static/hxconsolepageperformance.png)
但这个数值是调试模式的数值,发布打包后比这个数字更快。所以这个数字是用于开发期间的参考,而不能用于release包的性能评估。
dom数量优化前文已经讲了,那么如何优化排版效率?
1. 首先还是dom元素数量和层级,直接影响排版
......@@ -102,6 +104,14 @@ dom数量优化前文已经讲了,那么如何优化排版效率?
5. 指定图片的尺寸信息可以减少排版次数
6. css单位尺寸中,百分比的性能不如固定的px,使用百分比时父节点有明确宽高或者不依赖子节点确定宽高可以提升排版效率
## 控制vue的更新范围
vue的data更新时,会自动触发页面渲染更新。
更新是差量的,但计算差量也是耗费时间的。所以应减少对大data的修改。如果大data里有可能动态更新的小data,不如单独再存放一个小data数据。
另外更新ui时,如果vue框架能找到最小化组件,则会只更新该组件的渲染。所以尽量避免更新data引发大量ui重绘。\
比如长列表里有可点击的收藏按钮,点击后会动态更新收藏状态的数据,此时建议把收藏做一个单独的组件,这样某个item的收藏状态的更新,就不会触发整个列表的重绘。
## 引擎体积
uni-app x的Android引擎体积为7.51M。
......@@ -212,7 +212,8 @@ uvue组件、uts sdk、uni-app x前端页面/项目模板。这些前端代码
**如果你一定要使用某个js库,还有一个办法是在uni-app x里的web-view组件,让其运行js并返回值给uts代码。**
目前插件市场适配uni-app x的插件已有数百款,包括ui组件库:
- [t-uvue-ui](https://ext.dcloud.net.cn/plugin?id=15571) :丰富的组件库
- [t-uvue-ui](https://ext.dcloud.net.cn/plugin?id=15571):丰富的组件库
- [uxui](https://ext.dcloud.net.cn/plugin?id=15726):graceui作者的免费开源组件库
- [easyX电商组件库](https://ext.dcloud.net.cn/plugin?id=15602):电商业务常见的各种组件库
## 一期范围及路线图
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册