经过两个月的小程序开发,发现了些问题和小程序应对于某些业务场景的缺陷;直入主题:
应用框架背景:wepy。
1、滑动吸顶的场景:
需求:在一些电商网站上存在很多滑动吸顶这样的效果;
问题:如果使用dom,我们都会在滚动回调里面判断像素差来进行相关吸顶元素的 position:fixed;在小程序里面如果在滚动回调里面如此处理,频繁调用setData,造成服务线程通知阻塞和视图渲染延迟。(ios还好,安卓特别不平滑);添加降频处理,页面效果又不太理想。
目前解决思路:使用sticky 来解决这个问题,ios上可以基本支持,但是在安卓上只有部分支持,但是sticky没有样式toggle来的灵活,比如我滑动时的渐变。
期望:可否添加一个官方标准处理这种场景,或者最低处理成全面支持sticky。
2、setTimeout或者间隔定时器的场景。
需求:定时器主要应用在秒杀倒计时这种应用场景。
问题:在安卓机型上,存在滚动page,定时器展现上停止跳动,touchend动作之后,定时器无规则进行跳动。
目前解决思路:没有解决这个问题。而且还要注意在页面周期里面处理定时器的销毁。
期望:提供一个wx.xxxx接口上一个稳定的定时器
3、createSelectorQuery查询时机和效率问题。
需求:点击相关元素,页面进行滚动到相关元素位置,类似于hash锚点的场景。
问题:有时候需要动态的计算相关元素的top值,但是这个计算的机制不太好把握,一般异步request接口在onload里面开始触发,当服务层数据change后,去通知 view层变化,在服务层我们并不知道view层是否已经渲染结束,不知道什么时候执行createSelectorQuery操作。如果在点击某个元素时触发这个计算,createSelectorQuery在一些安卓机上的运行效率并不是特别高。
目前解决思路:有部分同学使用定时器(不严谨);或者第一次查询保存这个值,后面使用这个值。
期望:提供一个解决标准。
4、富文本的纠错能力。
需求:富文本已经开放化了,但是小程序的富文本就错能力有些差。
问题:由于业务层数据的问题,可能存在一些不标准化的html string(虽然官方也声明过nodes最佳)。wxparse会输出解析不了的字符为文本内容,小程序直接报错。
期望:可否提供一套纠错能力强的词法解析功能,ps:腾讯有x5内核浏览器,可否提供一套server端的html词法解析器的算法,小司真的没有这么多人力物力搞这个东西。
5、html代码的默认样式问题。
需求:很多时候,小程序后起之秀,是从别的地方把主站的代码迁移过来,标签默认的样式问题。
问题:<del>标签 并没有默认的line-througth,<p>也没有默认的block。
期望:可否和标准统一化。
6、多个视频页面的视频播放问题
需求:很多时候,我们更期望我们可以自己去自定义我们页面播放按钮的样式。比如:
问题:多个视频在一个页面播放时,播放一个,另外一个播放视频并不停止,尝试去使用wx的视频接口去处理,发现需要构建多个video上下文对象十分的繁琐和复杂(视频是循环出来的)。
目前解决思路:需求方妥协,跳单页面播放。
7、是否可以增加filter过滤函数
需求:wx:for情境下,item数据需要对时间、性别的格式化。
问题:对于server返回的数据不标准,fe需要对数据进行格式化,现在在fe循环一边数据格式化,显然不是一个好的解决方案。
期望:提供数据fliter过滤函数,可以格式化数据类似于vue。
如果上面有说的不对,或者我马虎疏漏的地方,敬请各位同学指正、添加和批评,希望小程序官方重视,祝你们越做越好。
楼主现在是什么情况了呢?我也遇到了问题2的情况
position: -webkit-sticky; // ios上需要这样设置,和safari一致
position: sticky;
兼容 哈哈
兼容性问题出现在哪?楼主能不能列举一下你遇到的不兼容情况?
目前只在锤子手机上发现sticky无效
@CJ 还是存在兼容性的
按下面的设置android和ios中的小程序都可以实现sticky了
.sticky {
position: -webkit-sticky; // ios上需要这样设置,和safari一致
position: sticky;
top: 0;
}
顶一下,滚动的问题确实一直是个坑,因为性能问题,拒绝了很多需求
兄弟,你这些问题,基本我们项目里面都有碰到 可以加个微信聊下么 huwenzhi4224
@Benes 加个微信吧 cnsd-chq
ok,setData有回调了
@Benes 现在sticky 我安卓版本7.0的版本 是支持的,别的机型没有进行考证,对于问题3 官方已经给出答案,在最新库,setData 第二个参数可以接回调函数,是视图渲染的完成的回调函数