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 相关文章推荐
this和执行上下文实现代码
Jul 01 Javascript
优化javascript的执行效率一些方法总结
Dec 25 Javascript
js中for in的用法示例解析
Dec 25 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
JavaScript登录记住密码操作(超简单代码)
Mar 22 Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 Javascript
图文讲解vue的v-if使用方法
Feb 11 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
Mar 12 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
vue的路由映射问题及解决方案
Oct 14 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 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
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
浅析PHP开发规范
2018/02/05 PHP
JQuery 常用操作代码
2010/03/14 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python操作xml文件示例
2014/04/07 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
医学类导师推荐信范文
2013/11/19 职场文书
高中自我鉴定
2013/12/20 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
2014年后勤工作总结
2014/11/18 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸