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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
javascript 面向对象编程基础:继承
Aug 21 Javascript
Jquery网页出现的乱码问题的三种解决方法
Jun 30 Javascript
JS刷新当前页面的几种方法总结
Dec 24 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
Bootstrap路径导航与分页学习使用
Feb 08 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
vue实现日历备忘录功能
Sep 24 Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
Feb 28 Javascript
vue+element ui实现锚点定位
Jun 29 Vue.js
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
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
javascript 类定义的4种方法
2009/09/12 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
javascript自执行函数
2017/02/10 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
django实现用户登陆功能详解
2017/12/11 Python
Python模块的加载讲解
2019/01/15 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
大学系主任推荐信范文
2013/12/24 职场文书
教师师德反思材料
2014/02/15 职场文书
质量承诺书格式
2014/05/20 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
党支部半年考察意见
2015/06/01 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
python文件与路径操作神器 pathlib
2022/04/01 Python
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers