首頁 > web前端 > Vue.js > 聊聊Vue2和Vue3中怎麼設定404介面

聊聊Vue2和Vue3中怎麼設定404介面

青灯夜游
發布: 2023-02-17 18:18:58
轉載
2376 人瀏覽過

這篇文章帶大家進行Vue學習,聊聊Vue2和Vue3中設定404介面的方法,希望對大家有幫助!

聊聊Vue2和Vue3中怎麼設定404介面

vue頁面中,如果跳轉了不存在的路由那麼,那麼頁面就會出現白屏狀態,為了解決這個問題,我們可以自己寫一個404介面,讓其跳轉過去。

一.vue2

#1.index.js

在此檔案中,一般存放的都是我們的路由訊息,我們經常使用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一定要寫在最外面。 【相關推薦:vuejs影片教學web前端開發

2.404.vue頁面

#這個頁面通常我們可以自定義,一般包括跳轉某個頁面的超連結或是定時多久進行跳轉。

<template>
    <div>
        <p>
            页面将在<span>{{ time }}</span>秒后自动跳转首页,<br>
            您也可以点击这里跳转<a href="/">首页</a>
        </p>
    </div>
</template>

<script>
// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)

export default {
    name: &#39;&#39;,
    components: {

    },
    // 定义属性
    data() {
        return {
            time: &#39;10&#39;,
            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(&#39;/&#39;)
                    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(&#39;../../static/img/404.gif&#39;) 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: &#39;仿宋&#39;;
            font-size: 25px;
        }
        a {
            font-size: 30px;
            color: aqua;
            text-decoration: underline;
        }
    }
}
</style>
登入後複製

那麼實現的效果就如下圖所示:

聊聊Vue2和Vue3中怎麼設定404介面

#404實作效果

二.vue3

為什麼要分開說呢?因為在vue3中我們進行如下設定:

 {
      path:&#39;*&#39;,
      component:()=>import(&#39;../views/404.vue&#39;)
    }
登入後複製

會產生錯誤,錯誤訊息: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: &#39;/:pathMatch(.*)*&#39;, name: &#39;not-found&#39;, component: NotFound },
// if you omit the last `*`, the `/` character in params will be encoded when resolving or pushing
{ path: &#39;/:pathMatch(.*)&#39;, name: &#39;bad-not-found&#39;, component: NotFound },
登入後複製

那麼我們vue2中的index.js檔案中的程式碼就變成瞭如下:

...

export default new Router({
  routes: [
    ...,
    {
      path:&#39;/:pathMatch(.*)*&#39;,
      component:()=>import(&#39;../views/404.vue&#39;)
    }
    //或者
     {
      path:&#39;/:pathMatch(.*)&#39;,
      component:()=>import(&#39;../views/404.vue&#39;)
    }
  ]
})
登入後複製

(學習影片分享: vuejs入門教學程式設計基礎影片

以上是聊聊Vue2和Vue3中怎麼設定404介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板