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

【译】Vue 的小奇技(第十三篇):在 Nuxt.js 中重定向 404 页面

  • 原文地址:Redirect 404 Not Found in Nuxt.js

  • 原文作者:Alex Jover

  • 译者:程序猿何大叔

特别声明:本文是作者 Alex Jover 发布在 VueDose 上的一个系列。

版权归作者所有。

译者在翻译前已经和作者沟通得到了翻译整个系列的授权。

为了不影响大家阅读,获得授权的记录会放在本文的最后。

说明

由于译者最近跳槽到了新公司,上手新业务,有两周没有及时更新译文了,时效性实在是差,还请各位读者见谅。

前言

这周我要特别宣布两件事情!

第一,这周三 10 号,中欧夏令时的正午 12 点,我们将会开售 VueDay 的门票,届时会在阳光明媚的西班牙亚里坎提举行。这是一个由社区驱动的 Vue.js 技术研讨会,会上邀请了很多大牛过来演讲,其中包括了核心成员想 Chopin 兄弟、Eduardo San Martin、我自己还有其他很多很厉害的人。

希望在会上能够遇到你们啦!在 twitter 可以关注 @VueDose 以获取最新的大会消息哦。

第二,我正在准备 Vue Tips Overload!下周开始,每天将会由不同的作者发布他们的 Vue 小奇技文章到这里。你们有没有和我一样兴奋期待呀?

接下来,我们开始这节小奇技的讲解吧。

正文

对我来说,Nuxt 是我所用过最好用的软件代码之一。它可以让我高效率地打造网站应用,无论这些应用是 SPA,还是 SSR,又或者是静态站点,这同时也是 JAM Stack 上面所提到的趋势。

顺便提一点,我们这个网站 Vuedose 也是使用 Nuxt 所建立静态站点。

但是,绝大多数自己领悟的很有意思的使用技巧并没有被记载沉淀下来,这不行,现在我们就来分享第一个 Nuxt 的技巧。

如果你熟悉 Nuxt.js,那么你就应该知道 pages 的概念是什么。同样地,你也应该知道这个特殊的 Error Page,虽然它是被放在 Layouts 文件夹中的,但它是被作为一个 page。

你可以去重写这个默认的错误页,并且根据你的需求去定制它,但是如果我们想要一个不同的表现形式呢?

在一些情况下,比如当用户访问一个并不存在的页面时,我们想要将其重定向到网站主页。

这里有个方法:你可以通过简单地创建 pages/*.vue 组件来完成这个需求:

<!-- pages/*.vue -->
<script>
export default {
  asyncData ({ redirect }) {
    return redirect('/')
  }
}
</script>
复制代码

在 Nuxt 中,路由是通过文件命名来定义的。所以当我们创建了一个 *.vue 文件是,我们实际上是在 Vue Router 上使用通配符的路由。

然后,我们使用 Nuxt 上下文中的 rediect 方法来实现重定向,无论它是在客户端还是在服务器端。

我们在 asyncData 方法中去做这个重定向,是因为我们在那里有上下文。但是,我们也可以在 fetch 方法中达到同样的效果:

<!-- pages/*.vue -->
<script>
export default {
  fetch ({ redirect }) {
    return redirect('/')
  }
}
</script>
复制代码

快去使用一下吧,尝试访问任何一个不存在 url,你应该能看到它是如何被重定向的。

这就是本周的内容啦!你可以在线阅读这篇 原文,里面有可供复制粘贴的源代码。如果你喜欢这个系列的话,请分享给你的同事们!

结语

此系列的其他文章,会同步系列官网的发布情况,及时地翻译发布到掘金。请持续关注「程序猿何大叔」,相信我会给大家带来更多优质的内容,不要忘了点赞~

如果想要了解译者的更多,请查阅如下:

  • 个人博客:blog.hadesz.com
  • 个人 github 仓库:github.com/hadeshe93
  • 个人微信公众号:搜索「程序猿何大叔」

请求翻译授权记录



觉得本文不错的话,分享一下给小伙伴吧~

相关文章:

  • Java 生成 PDF 文档
  • 市场分析——行业背景分析
  • 程序人生 | 35岁以上的 iOS 程序员都到哪里去了?
  • charls 抓包
  • [树状数组]JZOJ 4658 小Z调顺序
  • 1.1(设计模式)工厂模式
  • Redis 桌面管理工具 RedisDesktopManager 2019.0 发布
  • nginx统计日志中客户端ip访问次数
  • MGR实现分析 - 成员管理与故障恢复实现
  • Android性能优化之内存优化
  • Vmware10中Centos7挂载Windows主机的共享文件夹,提示:Error: cannot mount filesystem: No such device...
  • 如何优化代码中大量的if/else,switch/case?
  • 浏览器的渲染原理简介
  • webpack(2)
  • [ZJOI2019]语言
  • python3.6+scrapy+mysql 爬虫实战
  • android图片蒙层
  • JavaScript中的对象个人分享
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • text-decoration与color属性
  • vue的全局变量和全局拦截请求器
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 前端知识点整理(待续)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 学习HTTP相关知识笔记
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • No resource identifier found for attribute,RxJava之zip操作符
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (LeetCode) T14. Longest Common Prefix
  • (rabbitmq的高级特性)消息可靠性
  • (笔试题)合法字符串
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)PySpark3:SparkSQL编程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ******之网络***——物理***
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .a文件和.so文件
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net IE10 _doPostBack 未定义
  • .Net6使用WebSocket与前端进行通信
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @开发者,一文搞懂什么是 C# 计时器!
  • [145] 二叉树的后序遍历 js
  • [20190416]完善shared latch测试脚本2.txt
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Asp.net mvc]国际化
  • [BUUCTF 2018]Online Tool(特详解)
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [IE编程] IE8的SDK 下载
  • [LeetCode] Wildcard Matching
  • [NOIP2011DAY1P1]铺地毯
  • [office] 图文演示excel怎样给单元格添加下拉列表 #知识分享#经验分享