Web前端最全虚拟任务栈技术 - 让你的网页具备原生APP的页面切换体验,2024年最新阿里前端hr面

最后

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

1、首先我们得需要一个栈

2、其次我们把页面保存到栈中

那么怎么构建一个栈呢?

栈的特性是什么?

关于栈的特性,我们可以从 操作规则 两个方面来看:

1、操作上:

在操作上,栈主要有两个操作:一个是进栈(PUSH),另一个是出栈(POP)

2、规则上:

在规则上,栈遵循 <先进后出> 的原则

基于以上的特性,我们可以通过一个 数组 来表述一个栈,因为数组同样具备 pushpop 的操作,同样数据中元素的进出在pushpop时,也遵循了 <先进后出> 的原则

把页面保存到栈中

有了栈,下面我们需要做的就是把页面保存到栈中,把页面保存到栈中,我们就必须要借助 Vue 中提供的 KeepAlive 组件。

先明确一下,KeepAlive 的作用:

包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们

并且我们必须要知道,对于 KeepAlive 来说,它提供了一个关键的 Props:

include - 字符串或正则表达式。只有名称匹配的组件会被缓存。

以上功能点,就是我们 把页面保存到栈中 的关键。

我们只需要把需要缓存的页面名称(其实就是 组件名称),通过 include 放入到 keep-alive 组件中,那么我们就可以完成页面的缓存了。

虚拟任务栈在实际应用中的实现


明确了思路之后,我们来看实现。对于实际的实现,我们需要借助 Vue 的实际操作来去做。

我们知道当我们需要在 Vue 中跳转页面时,我们实际上是在进行路由的跳转,而路由的跳转对应的是组件的切换。

所以要实现“虚拟任务栈”,我们需要从以下两个地方着手:

1、在根组件(APP.vue) 中监听路由的跳转,实现动画(进入、退出)以及完成页面的进栈和出栈。

2、在页面跳转的编程式导航中,我们需要告诉根组件,当前的跳转是在进入还是在退出。

达到以上两步,我们就可以实现 “虚拟任务栈” 的功能。

那么我们下面来看,我们应该怎么做(代码直接截取《混合开发 仿京东项目App》 中的代码实现):

首先:在根组件(APP.vue) 中监听路由的跳转

监听路由跳转,我们需要处理三种情况:

1、页面的进入

2、页面的退出

3、页面跳转到 tabBar 的页面中(清空虚拟任务栈)

以下是具体代码实现:

// App.vue

其次:在页面跳转时

在页面跳转时,同样对应三种情况:

1、进入新的页面,通知虚拟任务栈,当前页面需要被保存到栈中

2、退出页面,通知虚拟任务栈,当前的页面需要从栈中弹出

3、进入 tabbar 中的页面,通知虚拟任务栈,执行清空操作

以下是第一种情况:进入新的页面,通知虚拟任务栈,当前页面需要被保存到栈中

// 1、进入新的页面,当前页面需要被保存到栈中

onGoodsItemClick: function(item) {

// 编程式导航实现页面的跳转,

this.$router.push({

// 进入页面的路由名称

name: ‘goodsDetails’,

params: {

// 进入页面的标记

routerType: ‘push’

},

// 把传递的数据附加到我们的 URL 上

query: {

}

});

},

然后是第二种情况:退出页面,通知虚拟任务栈,当前的页面需要从栈中弹出

2、退出页面,通知虚拟任务栈,当前的页面需要从栈中弹出

/**

  • 后退按钮点击事件

*/

onBackClick: function() {

// 正常的后退操作

this.$router.go(-1);

},

最后是第三种情况:

3、进入 tabbar 中的页面,通知虚拟任务栈,执行清空操作

// 编程式导航实现页面的跳转,

分享

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

最后是第三种情况:

3、进入 tabbar 中的页面,通知虚拟任务栈,执行清空操作

// 编程式导航实现页面的跳转,

分享

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值