Heim >Web-Frontend >View.js >Lassen Sie uns darüber sprechen, wie Sie die 404-Schnittstelle in Vue2 und Vue3 einrichten
Dieser Artikel führt Sie durch das Vue-Lernen und erläutert, wie Sie die 404-Schnittstelle in Vue2 und Vue3 einrichten. Ich hoffe, dass er Ihnen hilfreich sein wird!
Wenn auf der Vue-Seite eine nicht vorhandene Route übersprungen wird, wird die Seite in einem weißen Bildschirmzustand angezeigt. Um dieses Problem zu lösen, können wir selbst eine 404-Schnittstelle schreiben und sie springen lassen Es.
In dieser Datei werden im Allgemeinen unsere Routing-Informationen gespeichert:‘*‘, um unser Routing zu erfassen. Wenn es nicht existiert, Dann lassen wir es zu unserer benutzerdefinierten 404-Seite springen.
import Vue from 'vue' import Router from 'vue-router' import Homepage from '@/components/Homepage' Vue.use(Router) export default new Router({ routes: [ { path: '/', component: Homepage, }, { path:'*', component:()=>import('../views/404.vue') } ] })
Hinweis: Dieser Weg muss außen angegeben werden. [Verwandte Empfehlungen: vuejs-Video-Tutorial, Web-Front-End-Entwicklung]
Normalerweise können wir diese Seite anpassen, die im Allgemeinen einen Hyperlink enthält, um zu einer bestimmten Seite zu springen oder ein Timing Wie lange es dauert, bis man springt.
<template> <div> <p> 页面将在<span>{{ time }}</span>秒后自动跳转首页,<br> 您也可以点击这里跳转<a href="/">首页</a> </p> </div> </template> <script> // 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等) export default { name: '', components: { }, // 定义属性 data() { return { time: '10', time_end: null } }, // 计算属性,会监听依赖属性值随之变化 computed: {}, // 监控data中的数据变化 watch: {}, // 方法集合 methods: { GoIndex() { let _t = 9 this.time_end = setInterval(() => { if (_t !== 0) { this.time = _t--; } else { this.$router.replace('/') clearTimeout(this.time_end) this.time_end = null } }, 1000) } }, // 生命周期 - 创建完成(可以访问当前this实例) created() { this.GoIndex() }, // 生命周期 - 挂载完成(可以访问DOM元素) mounted() { }, beforeCreate() { }, // 生命周期 - 创建之前 beforeMount() { }, // 生命周期 - 挂载之前 beforeUpdate() { }, // 生命周期 - 更新之前 updated() { }, // 生命周期 - 更新之后 beforeDestroy() { }, // 生命周期 - 销毁之前 destroyed() { clearTimeout(this.time_end) this.time_end = null }, // 生命周期 - 销毁完成 activated() { }, // 如果页面有keep-alive缓存功能,这个函数会触发 } </script> <style scoped> .not_found { width: 100%; height: 100%; background: url('../../static/img/404.gif') no-repeat; background-position: center; background-size: cover; p { position: absolute; top: 50%; left: 20%; transform: translate(-50%, 0); color: #fff; span{ color: orange; font-family: '仿宋'; font-size: 25px; } a { font-size: 30px; color: aqua; text-decoration: underline; } } } </style>
Dann ist der erzielte Effekt wie in der folgenden Abbildung dargestellt:
404-Implementierungseffekt
Warum sollten wir separat darüber sprechen? Denn in vue3 nehmen wir folgende Einstellungen vor:
{ path:'*', component:()=>import('../views/404.vue') }
wird einen Fehler erzeugen, die Fehlermeldung: Catch allroutes ("*") muss jetzt mit einem Parameter mit einem benutzerdefinierten regulären Ausdruck definiert werden, was bedeutet: Jetzt muss ein benutzerdefinierter verwendet werden Regexp Die Parameter definieren alle Routen („*“).
Dann sagte der Beamte Folgendes:
// plan on directly navigating to the not-found route using its name { path: '/:pathMatch(.*)*', name: 'not-found', component: NotFound }, // if you omit the last `*`, the `/` character in params will be encoded when resolving or pushing { path: '/:pathMatch(.*)', name: 'bad-not-found', component: NotFound },
Dann sieht der Code in der index.js-Datei in unserem vue2 wie folgt aus:
... export default new Router({ routes: [ ..., { path:'/:pathMatch(.*)*', component:()=>import('../views/404.vue') } //或者 { path:'/:pathMatch(.*)', component:()=>import('../views/404.vue') } ] })
(Teilen von Lernvideos: vuejs-Einführungs-Tutorial, Grundlegendes Programmiervideo)
Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie die 404-Schnittstelle in Vue2 und Vue3 einrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!