mpvue 页面预加载新增preLoad生命周期的两种方式


Posted in Javascript onOctober 17, 2019

存在的必要性:mpvue开发微信小程序,在页面跳转到新页面的过程中会有200ms左右的延迟,这个200ms如果用来请求新页面的接口,那么跳转到新页面或许已经渲染好了页面。

就是两种方式:

1.新页面跳转之前,就请求新页面数据。

2.跳转到新页面后,再请求数据,可能还会有一个loading的状态。

mpvue 页面预加载新增preLoad生命周期的两种方式

第二种方式是正常的的页面跳转,不say了。

这里讲解的都是第一种方式:

从上面结构图可以看出系统跳转的延时时间可以用来请求新数据,大大提高了用户体验性。

方案是有了,该怎么实现呢。

我们知道mpvue的生命周期有onLoad mounted onShow 等。

我们自建一个preLoad生命周期进行页面预加载逻辑处理。

是不是有个疑问,怎么让程序执行我们的这个preLoad生命周期呢?

 讲解一下vue的执行机制:

 mpvue 页面预加载新增preLoad生命周期的两种方式

mpvue创建每个页面都会有个main.js文件,执行了app = new Vue(app);在项目初始化时,都会先被执行,push到一个数组里,这就是小程序页面堆栈的原理了。

 原先的页面跳转,会执行这个App中的生命周期函数。找到一点灵感有没有,我们可以在初始化时,对这个 App from './index' 的App对象进行全局储存。在跳转时同时对执行App中preLoad函数进行调用,而小程序正常执行App生命周期,

 当preLoad执行完后把数据传给App return 中的这个对象,就实现了渲染更新。

export default{
 data(){
 return {} //把数据传到这个对象上
 }  
}

  上代码:

mpvue 页面预加载新增preLoad生命周期的两种方式

两个页面,展示从joy-material 跳转到home的过程

global.js  

let $navs = { //作用收集每个页面的实例App;
};

let $router =(path,className)=>{ //每个页面实例都会有个name字段,进行$navs匹配

setTimeout(()=>{
 wx.navigateTo({
  url:path
 });
 },150);

$navs[className].preLoad(); //匹配到新页面的实例,调用preLoad函数,不影响正常跳转。
 
};
export default {
 $navs:$navs,
 $router:$router
};

joy-material index.vue

<template>
 <div class="joy-content">
 <h4 class="normal-style" hover-stay-time="100" @tap="to">{{name}}</h4>
 </div>
</template>
<script>
 import pre from "@/utils/global"
 let m = {
 name:"material",
 data(){
  return {
  name:"大苹果"
  }
 },
 mounted(){
 },
 methods :{
  to(){
  pre.$router("/pages/home/main","home"); //第二个参数是这个新页面name字段值,用来从$navs从匹配此实例。
  }
 }
 };
 pre.$navs[m.name] = m; //把实例存储到全局$navs中;
 export default m;
</script>
<style scoped lang="scss">
</style>

home index.vue

<template>
 <div>{{info}}</div>
</template>
<script>
 import pre from "@/utils/global"
 let data = {
 info:"1111"
 }
 let h = {
 name:"home",
 data(){
  return data;
 },
 mounted(){
 },
 preLoad(){
  data.info = "pppppp";
 }
 };
 pre.$navs[h.name] = h;
 export default h;
</script>
<style scoped>
</style>

总结

以上所述是小编给大家介绍的mpvue 页面预加载新增preLoad生命周期的两种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript Keycode对照表
Oct 24 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 Javascript
JavaScript实现短信倒计时60s
Oct 09 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
js闭包学习心得总结
Apr 17 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
Aug 28 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
Sep 21 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
JS工厂模式开发实践案例分析
Oct 17 #Javascript
小程序input数据双向绑定实现方法
Oct 17 #Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 #Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 #Javascript
JavaScript 实现同时选取多个时间段的方法
Oct 17 #Javascript
Layui事件监听的实现(表单和数据表格)
Oct 17 #Javascript
浅谈Vue.set实际上是什么
Oct 17 #Javascript
You might like
mysql中存储过程、函数的一些问题
2007/02/14 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
PHP关联链接常用代码
2012/11/05 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
php 类自动载入的方法
2015/06/03 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
python登录QQ邮箱发信的实现代码
2013/02/10 Python
python中MySQLdb模块用法实例
2014/11/10 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
小组名称和口号
2014/06/09 职场文书
教师节倡议书2015
2015/04/27 职场文书