ホームページ  >  記事  >  ウェブフロントエンド  >  Vue2 と Vue3 で 404 インターフェイスを設定する方法について話しましょう

Vue2 と Vue3 で 404 インターフェイスを設定する方法について話しましょう

青灯夜游
青灯夜游転載
2023-02-17 14:25:222259ブラウズ

この記事では、Vue の学習について説明し、Vue2 および Vue3 で 404 インターフェイスを設定する方法について説明します。皆さんのお役に立てれば幸いです。

Vue2 と Vue3 で 404 インターフェイスを設定する方法について話しましょう

vue ページで、存在しないルートをジャンプするとページが真っ白な状態になってしまう問題を解決するには、自分たちで 404 インターフェイスを作成し、それを飛び越えさせます。

一.vue2

1.index.js

このファイルでは、一般的にはにはルーティング情報が保存されています。ルーティングを取得するにはパス: '*' をよく使用します。パスが存在しない場合は、カスタマイズした 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')
    }
  ]
})

注: このパスは外側に書き込む必要があります。 [関連する推奨事項: 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:'*',
      component:()=>import('../views/404.vue')
    }

はエラーを生成します。エラー メッセージ: すべてのルートをキャッチ ("*") はカスタム正規表現を持つパラメータを使用して定義する必要があります。つまり、次のことを意味します。すべてのルートはカスタム正規表現パラメータ (「*」) で定義されます。

その後、担当者はこう言いました:

// 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。