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返回上一页并刷新代码整理
Dec 21 Javascript
javascript常用的正则表达式实例
May 15 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
jQuery实现购物车数字加减效果
Mar 14 Javascript
AngularJS动态生成div的ID源码解析
Aug 29 Javascript
HTML的select控件美化
Mar 27 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
Vue框架中正确引入JS库的方法介绍
Jul 30 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
浅析JavaScript中的变量提升
Jun 01 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 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
推荐11个实用Python库
2015/01/23 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
高中自我鉴定
2013/12/20 职场文书
颐和园英文导游词
2015/01/30 职场文书
公司借条范本
2015/05/25 职场文书
士兵突击观后感
2015/06/16 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏