本篇文章帶大家進行Vue學習,聊聊Vue2和Vue3中設定404介面的方法,希望對大家有所幫助!
vue頁面中,如果跳轉了不存在的路由那麼,那麼頁面就會出現白屏狀態,為了解決這個問題,我們可以自己寫一個404介面,讓其跳轉過去。
在此檔案中,一般存放的都是我們的路由資訊,我們經常使用path:'*'來進行捕獲我們的路由,度過不存在那麼我們就讓它進行跳轉至我們自定義的404頁面。
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')
}
]
})
登入後複製
注意:這個path一定要寫在最外面。【相關推薦:、】
這個頁面通常我們可以自定義,一般包括跳轉某個頁面的超連結或者就是定時多長時間進行跳轉。
<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>
登入後複製
那麼實現的效果就如下圖所示:
404實現效果
為什麼要分開說呢?因為在vue3中我們進行如下設定:
{
path:'*',
component:()=>import('../views/404.vue')
}
登入後複製
會產生錯誤,錯誤資訊:Catch all routes ("*") must now be defined using a param with a custom regexp.,意思就是:現在必須使用與自定義Regexp的引數定義所有路由(「*」)。
那麼官方是這麼說的:
// 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 },
登入後複製
那麼我們vue2中的index.js檔案中的程式碼就變成了如下:
...
export default new Router({
routes: [
...,
{
path:'/:pathMatch(.*)*',
component:()=>import('../views/404.vue')
}
//或者
{
path:'/:pathMatch(.*)',
component:()=>import('../views/404.vue')
}
]
})
登入後複製
(學習視訊分享:、)
以上就是聊聊Vue2和Vue3中怎麼設定404介面的詳細內容,更多請關注TW511.COM其它相關文章!