所有分类
  • 所有分类
  • 后端开发
如何利用 Vue Router 实现页面跳转前的数据预处理

如何利用 Vue Router 实现页面跳转前的数据预处理

下面是一个例子,假设我们在跳转到某个页面之前需要从服务器获取数据:Router实现页面跳转前的数据预处理非常简单。通过这样的方式,我们可以更加灵活地控制页面的跳转,并进行必要的数据预处理操作。Router实现页面跳转前的数据预处理的方法和示

换个页面,VueRouter就派上大用场了。可是在换页前,我们得先看看服务器是不是正常运行着,还有就是检查一下用户是否有权限访问。所以,今天就来聊聊如何利用VueRouter搞定这些事情!

一、安装和配置Vue Router

首先得装个VueRouter!敲下下面这个命令就能搞定:

bash
npm install vue-router

先搞定VueRouter的主要Javascript文件安装,接下来就能搞定路由设定

javascript
import Vue from 'vue';
直接用VueRouter,它就是我们的Vue导航器。
import App from './App.vue';
直接把'./routes'的文件夹拿来用就好。
Vue.use(VueRouter);
就这么简单,我们用VueRouter搭建了个路由框架。
  routes
});
new Vue({
  router,
  render: h => h(App)
}).$mount('#app');
哈喽,我们快来学学怎么用VueRouter装路由!以后处理数据就轻松多了哦~
npm install vue-router --save

二、使用Vue Router的beforeEach钩子
说到VueRouter,真是厉害!不管换哪个页面,它都会跑个代码先,这"beforeEach"就是干这个事的。比如你想提前下载点啥到手机里,这里就能搞定。其实,这就是个小事儿,超容易理解的:
记住,每次换线之前别忘了先瞅两眼!我们就管这个叫做“(to, from, next)”或者是“前后跳转”,简单易懂的。
if (to.meta.requiresAuth) {
从服务器上给我拿点数据来,然后告诉我。
// 将数据保存到Vue实例或者Vuex中

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
  // 定义路由
]
const router = new VueRouter({
  routes
})
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

给store提交数据更新,'setData': data。
next();
}).catch(error => {
唉,看看,我又掉链子了,抓取的数据获取失败,挨!
next(false);
});
} else {
next();
}
这儿有段代码,咱们就用fetchDataFromServer这个小程序搞定了从服务器拉数据的活儿。这玩意儿给你送来个Promise对象,你就可以和服务器愉快滴聊天,轻轻松松抓到想要的东西!搞定以后,当然得记得把数据存储起来,这样以后才能随便用。那要是没能取到数据咋办?别急,用next(false)就让路由老老实实等着呗。
三、注销钩子函数
搞定数据预处理后,别忘了把讨厌的钩子函数给去掉。可别让它跑去捣乱别的页面呀~关了Vue实例之前,别忘了从Vue Router里面踢出来
每次翻页前记得调好这个功能,不然你的路径可能就没用!其实,它就是防那些干扰路径的钩子函数的。
// 钩子函数的逻辑
export default {

router.beforeEach((to, from, next) => {
  // 在这里进行数据预处理的操作
  fetchDataFromServer(to.path)
    .then(data => {
      // 将数据保存到Vue实例或者Vuex中
      store.commit('setData', data)
      next()
    })
    .catch(error => {
      console.error('数据获取失败', error)
      next(false) // 停止路由跳转
    })
})

beforeDestroy() {
unregisterHook();
};
这个remove hook就像个关机快捷键,只要你悄悄地把它放进你的Vue实例里,等Vue跑完之后,它会直接帮你把挂载的钩子函数干掉!
四、处理用户权限验证
咱们不仅要把服务器数据拉过来,还要在每回检测前加个“每次开始”,保证用户有这权限!比如说你要看只有登录了才有的页面,首先看看这个用户是不是已经登陆。
想要成功打卡得先登录网页才行(上面有提示"to.meta.requiresAuth")。这时候别犹豫,赶紧检查看看自己是不是已经登录了呢("!store.getters.isLoggedIn")!
next('/login');
咱们去店里看下,有没有IsLoggedIn这个标识,如果有就能知道用户是否已经登陆?不过我这儿显示还是空的。那就只好让他们先回到登陆页面
五、处理页面加载状态
记得在整理资料时说说你在干嘛,像是每次开始前加个小广告加载下,搞定后马上弄掉!
把'加载中'那个设定改成假了。
服务器发来了数据,然后咱来处理一下。

就这么简单!把'text'扔进'store'里,然后来个store.commit('setData', text)搞定。
把加载状态设为关闭。
}).catch(error => {
“数据好像出了点问题!没事,我帮你看看咋回事。” console.error(error);
next(false);
});
这个神奇功能可以看到咱们处理数据的情况!是不是还在慢慢加载?
六、处理页面缓存

const unregisterHook = router.beforeEach((to, from, next) => {
  // 钩子函数的具体操作
})
new Vue({
  router,
  beforeDestroy() {
    unregisterHook() // 注销钩子函数
  },
  render: h => h(App)
}).$mount('#app')

只要在VueRouter里面加个keep-alive,页面填好的信息就不会丢失了!
html

给`$route.meta.keepAlive`设置个值,这样就能保存下你想要保留的页面!

七、处理页面过渡效果

为了提升用户体验,我们还可以在页面跳转时添加过渡效果:

在进入和离开时,动画效果会让你感觉到变化。

transition: opacity .5s;

}

.fade-enter, .fade-leave-to {

opacity: 0;

Transition这玩意儿真的酷爆了,能让你的网页切换炫到飞起!

八、处理动态路由

对,有时要看看人家为啥点了啥键才行,这样才能搞清楚咋弄路由器。比如,有人点了个钮,那咱们就再加点儿路由!

router.addRoute({

path: ‘/dynamic’,

component: DynamicComponent

只需要加入Route,走新的路就变得超简单~ 换页?那不是秒按秒进吗!

九、处理路由导航守卫

我们之前聊过的那个beforeEach,其实Vue Router里头还有别的好用的导航钩子!像 beforeResolve和afterEach这两个就安静的躺在那儿等着你去发现。

路由处理就是先搜集点资料,搞清楚你要啥,从哪儿来。干嘛用?充当下保险,先把有用的信息全收好再发送出去呗。

// 在所有组件内守卫和异步路由组件被解析之后调用

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const fetchDataFromServer = async (path) => {
  // 向服务器发送请求并获取数据的逻辑
}
const routes = [
  // 定义路由
]
const router = new VueRouter({
  routes
})
const unregisterHook = router.beforeEach((to, from, next) => {
  fetchDataFromServer(to.path)
    .then(data => {
      // 将数据保存到Vue实例或者Vuex中
      store.commit('setData', data)
      next()
    })
    .catch(error => {
      console.error('数据获取失败', error)
      next(false) // 停止路由跳转
    })
})
new Vue({
  router,
  beforeDestroy() {
    unregisterHook() // 注销钩子函数
  },
  render: h => h(App)
}).$mount('#app')

next();

快看别错过这个好机会无论你从哪儿来,想去哪里,都要这样做。

// 在路由跳转完成后调用

用了这个导航守卫,就可以在不同阶段搞定数据和翻页!

十、处理路由参数和查询参数

你知道吗?我们可以用代码让网页在跳转时带入路由参数和查询参数!每次点之前都能通过代码获取并改变这些参数,超好玩的!

const { params, query } = to;

// 处理参数

咱都知道,想去其他网站,首先要搞定to对象里面的params和query

看完这段话,还有那几个代码,你有没有觉得用VueRouter处理网页上的数据简直小菜一碟?前后两个页面之间,就在beforeEach钩子里搞定数据采集和处理,然后扔给Vue实例或者Vuex。不过千万记得,如果Vue实例没了,要注销这个钩子,否则可能会影响其他页面的跳转。这样一来,我们就可以随心所欲地控制页面跳转,还能做好数据预处理。

看原文!希望能帮到你用 VueRouter 做单页应用。有没有遇到需要先处理数据加载的困扰?来说说怎么解决,一起在评论区分享小技巧哟~

原文链接:https://www.icz.com/technicalinformation/web/2024/07/18979.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?