>  기사  >  웹 프론트엔드  >  Vue2 및 Vue3에서 404 인터페이스를 설정하는 방법에 대해 이야기해 보겠습니다.

Vue2 및 Vue3에서 404 인터페이스를 설정하는 방법에 대해 이야기해 보겠습니다.

青灯夜游
青灯夜游앞으로
2023-02-17 14:25:222338검색

이 기사에서는 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')
    }
  ]
})

참고: 이 경로는 외부에 작성해야 합니다. [관련 권장 사항: vuejs 비디오 튜토리얼, web front-end development]

2.404.vue page

보통 우리는 이 페이지를 사용자 정의할 수 있는데, 일반적으로 특정 페이지로 이동하는 하이퍼링크를 포함하거나 타이밍 점프하는데 걸리는 시간.

<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 구현 효과

II.vue3

왜 따로 이야기해야 할까요? vue3에서 다음과 같이 설정했기 때문에:

 {
      path:'*',
      component:()=>import('../views/404.vue')
    }

는 오류를 생성합니다. 다음 오류 메시지: 이제 모든 경로 포착("*")은 사용자 정의 정규식과 함께 매개변수를 사용하여 정의되어야 합니다. 즉, 이제 사용자 정의를 사용해야 합니다. 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으로 문의하시기 바랍니다. 삭제