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代码
Sep 17 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
express的中间件bodyParser详解
Dec 04 Javascript
jQuery圆形统计图开发实例
Jan 04 Javascript
Sea.JS知识总结
May 05 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
Angular父组件调用子组件的方法
Apr 02 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
Nov 27 Javascript
js实现移动端轮播图
Dec 21 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 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
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
实例讲解jquery与json的结合
2016/01/07 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
浅谈Python中的继承
2020/06/19 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
python音频处理的示例详解
2020/12/23 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
商务会议邀请函
2014/01/09 职场文书
简历自我评价模版
2014/01/31 职场文书
家长对学生的评语
2014/04/18 职场文书
应聘教师求职信范文
2015/03/20 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS