- 品牌:微信小程序
- 基本投资额:0-0.5万
- 保证金额:1
- 加盟费:1
- 项目区域要求:全国
- 品牌发源地:1
- 预计回报率:1
- 预计回报周期:1
- 特许权使用费:1
- 合同期限:1
- 加盟商总数:1
- 特许经营时间:1
- 经营模式:经销,代理
- 发展模式:经销,区域代理
1。提高页面加载速度 在小程序环境下,如何提高页面加载速度?这是个大问题。我详细地提出了这个问题。如何缩短用户单击链接到打开新页面的时间?这里有一个要点:
从页面的用户点击行为,开始跳到新页面onload事件触发的,有一个延迟,延迟之间的可能是100-300ms(android响应速度比ios)。
这个延迟语句不是太短。我们可以利用这个时间来启动新页面需要的网络请求。这节省了100-300ms(或网络请求的时间)。
当您知道这个差距时,如何实现代码?
说白了,就是要实现一个页面上预加载b页数据的功能。但是这种跨页面调用很容易使逻辑复杂化,并集成不同的页面逻辑。因此,我们希望隐藏的预紧力的逻辑从无形,无需添加任何页面的耦合,开发复杂度。
接下来,以腾讯视频小程序为例,说明了技术的实现。
小程序主页:
当用户单击海报地图时,执行以下代码。
接下来,程序将加载回放页面:
回放页面的主要代码:
可以看出,无论是外部页面的调用,还是实际逻辑的实现,都是非常简洁的。在第二页,将页面生命周期的功能,增加onnavigate方法。此方法在页面即将创建但尚未启动时执行。
老司机可能会觉得这里有点奇怪。当您单击主页时,根本不创建回放页面。对象是不存在的,如何访问对象?
在这里,我们要说wechat的分页机制。
当一个小程序启动时,所有调用页面()方法的对象都存在于队列中。当页面被访问,微信将创造一个新的对象实例,这实际上是一个深拷贝。
那就是,当一个页面执行点击响应事件,对b页面实例尚未创建,和onnavigate方法称,事实上,是网页对象的原型(创建了一个在小程序的开始)。
要创建的下一个b页是另一个对象。因此,在onnavigate和onload事件,该指针是不一样的对象,但暂时无法存储数据的对象。因此,我们封装了一对全局缓存方法,$()和$()。
为了通用性,页面中使用的常用方法,如$、$和$,都是在页面的基类中定义的。基类也存储了所有页面的列表,同时,使特定的页面onnavigate方法可以调用根据页面名称。当然,并不是每一个页面需要实现onnavigate方法,并且没有onnavigate方法,$路由功能跳过预链接,直接跳到页。所以对于开发人员来说,它不需要关心其他页面做了什么,所以它看起来对外部世界是完全透明的。
二、用户行为预测
在上面的示例中,我们实现了用户单击页面并提前加载下一页数据的方式。在某些情况下,可以预测用户的行为。当用户没有点击时,我们可以预先加载下一页的数据。让下一页打开,进一步提高流畅性的体验。
作为腾讯视频小程序的一个例子,主界面分为3页卡片(大部分的小程序都会被设计)。通过简单的数据分析,发现50%的进入主页的用户都可以访问第二页的卡片。因此,从第二页卡片预加载数据可以大大提高用户点击页面的打开速度。
另外,先看看代码实现。预加载通道页面在首页上的位置:
在此中,p()函数是一个自定义基类。在基类中编写所有通用逻辑,包括pv统计数据、源统计数据、扩展生命周期函数和基于组件的组件,这是非常有用的。
函数的第一个参数是页面名,它是页面的键。二是网页对象,扩展了谱曲的阵列,这是所有组件的负载。
以播放组件/销售/播放器/ index.js为例:
组件的定义与普通页面对象完全相同。有数据的属性,会和展览活动。还有一个用于页面响应的回调方法。事件定义在wxml模板对应的js事件一个接一个。
基类所做的是将这些组件对象的属性和方法复制到页面对象。在此,数据属性将合并在一起。微信预定的生命周期函数,包括他们自己的扩展,封装成队列和顺序执行。例如,当系统调用onload方法
广东腾信网络科技有限公司
李经理
15015230313
东莞市长安镇乌沙居委会