小程序某些业务场景开发的需求
发布于 6 年前 作者 kxu 13263 次浏览 来自 问答

经过两个月的小程序开发,发现了些问题和小程序应对于某些业务场景的缺陷;直入主题:

应用框架背景: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。

如果上面有说的不对,或者我马虎疏漏的地方,敬请各位同学指正、添加和批评,希望小程序官方重视,祝你们越做越好。


10 回复

顶一下,滚动的问题确实一直是个坑,因为性能问题,拒绝了很多需求

兼容性问题出现在哪?楼主能不能列举一下你遇到的不兼容情况?

@CJ  还是存在兼容性的

按下面的设置android和ios中的小程序都可以实现sticky了

.sticky {

  position: -webkit-sticky; // ios上需要这样设置,和safari一致

  position: sticky;

  top: 0;

}

 position: -webkit-sticky; // ios上需要这样设置,和safari一致

 position: sticky;
兼容 哈哈

@Benes  加个微信吧 cnsd-chq

ok,setData有回调了

楼主现在是什么情况了呢?我也遇到了问题2的情况

兄弟,你这些问题,基本我们项目里面都有碰到可以加个微信聊下么  huwenzhi4224

@Benes 现在sticky 我安卓版本7.0的版本 是支持的,别的机型没有进行考证,对于问题3 官方已经给出答案,在最新库,setData 第二个参数可以接回调函数,是视图渲染的完成的回调函数

回到顶部