当前位置: 首页 > article >正文

Vue 3 中实现自定义 404 页面的三种方法

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

Alt

Vue 3 中实现自定义 404 页面的三种方法

  • Vue 3 中实现自定义 404 页面的三种方法
    • 方法 1:使用 `catch-all` 路由
    • 方法 2:使用导航守卫
    • 方法 3:使用 `onBeforeResolve` 导航守卫
    • 注意事项

Vue 3 中实现自定义 404 页面的三种方法

在开发 Vue 3 应用时,我们经常会遇到需要处理不存在的路由或页面的情况。这时,一个自定义的 404 页面就显得尤为重要。以下是在 Vue 3 和 Vue Router 4 中实现 404 页面的三种方法。

方法 1:使用 catch-all 路由

在路由配置中添加一个捕获所有路径的路由是一个简单有效的方法。这个路由通常放在路由列表的最后,以确保它能够捕获所有未被前面的路由匹配到的路径。

import { createRouter, createWebHistory } from 'vue-router';
import YourNotFoundComponent from './components/YourNotFoundComponent.vue';

const routes = [
  // ...其他路由配置
  {
    path: '/:catchAll(.*)', // 捕获所有路径
    name: 'NotFound',
    component: YourNotFoundComponent
  }
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;

在这里,:catchAll(.*) 是一个动态路径,它会匹配任何路径,并将其作为参数传递给 YourNotFoundComponent 组件。

方法 2:使用导航守卫

Vue Router 的导航守卫提供了一个强大的机制来检测和处理路由变化。你可以使用 beforeEach 守卫来检查即将进入的路由是否有效,如果无效,则重定向到 404 页面。

import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import NotFound from './views/NotFound.vue';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  // ...其他路由配置
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

router.beforeEach((to, from, next) => {
  if (!router.getRoutes().some(route => route.name === to.name)) {
    next({ name: 'NotFound' });
  } else {
    next();
  }
});

export default router;

方法 3:使用 onBeforeResolve 导航守卫

如果你希望在路由解析之前就拦截请求,可以在路由配置中使用 onBeforeResolve 守卫。这允许你在路由被实际解析前就进行一些操作,如重定向到 404 页面。

import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import NotFound from './views/NotFound.vue';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    onBeforeResolve: (to, from, next) => {
      if (to.name === 'NonExistentRoute') {
        next({ name: 'NotFound' });
      } else {
        next();
      }
    }
  },
  {
    path: '/404',
    name: 'NotFound',
    component: NotFound
  }
  // ...其他路由配置
];

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;

注意事项

  • 确保你的 404 页面组件(如 YourNotFoundComponentNotFound)已经正确导入。
  • 根据你的应用需求,选择合适的方法来实现 404 页面的匹配。
  • 如果你的应用使用了路由懒加载,确保在导航守卫中正确处理了这些路由。

通过这些方法,你可以灵活地在你的 Vue 3 应用中实现自定义的 404 页面,提升用户体验并处理不存在的路由请求。

如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀


http://www.kler.cn/news/362693.html

相关文章:

  • 机器学习与神经网络:科技的星辰大海
  • Android打开Activity时不自动弹出键盘
  • Java生死簿管理小系统(简单实现)
  • 微信小程序文本收起展开
  • 【三】企业级JavaScript开发之手册与规范
  • 【JavaEE初阶】网络编程TCP协议实现回显服务器以及如何处理多个客户端的响应
  • Tips--解决更新resource.qrc之后新的资源无法加载的问题
  • C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
  • HTML、CSS 和 JavaScript 的介绍
  • 无人机封闭空间建图检测系统技术详解
  • Ubuntu 安装Mysql+Redis+Nginx
  • 基于PaddleSpeech实现语音识别
  • 【贪心算法】刷刷刷刷刷刷题(下)
  • APP UI自动化测试的思路总结!
  • 一站式协作平台Jira新功能解读:AI驱动、个性化设置、灵活自定义等,助力项目管理更高效
  • 小鹏汽车股价分析:看涨信号已出现,技术指标显示还有40%的上涨空间
  • 【Python爬虫实战】多进程结合 BeautifulSoup 与 Scrapy 构建爬虫项目
  • duilib的应用 在双屏异分辨率的显示器上 运行显示不出来
  • 【C++刷题】力扣-#157-用Read4读取N个字符
  • 如何解决JMeter跨线程组之间传递数据?
  • React04 - react ajax、axios、路由和antd UI
  • ES6 中函数参数的默认值
  • python 爬虫抓取百度热搜
  • 什么是机器人流量?如何识别和预防有害机器人流量?
  • 企业数字化转型的战略指南:物联网与微服务架构的深度融合及应用解析
  • 单片机运行死机快速排查方式记录