Vue3实战学习配置使用vue router路由步骤示例

 更新时间:2022年06月30日 10:52:45   作者:天問  
这篇文章主要为大家介绍了Vue3实战学习配置使用vue router路由步骤示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

随着Vue版本的升级,Vue 2.x项目和Vue 3.x项目在使用vue-router上有些区别,本文就简单介绍下vue-router在Vue3中的配置和使用。

一、目录结构

demo/
    package.json
    vite.config.js
    index.html
    public/
    src/
        api/
        assets/
        common/
        components/
        store/
        views/
            home.vue
            list.vue
        router/
            index.js
        App.vue
        main.js            

二、版本依赖

vite: ^2.0.0
vue: ^3.2.8
vue-router: ^4.0.1

三、配置路由

  • 3-1.配置src/router/index.js路由文件
// src/router/index.js
import {createRouter, createWebHistory, createWebHashHistory} from 'vue-router'
import { defineAsyncComponent } from 'vue'
const router = createRouter({ 
  // history: createWebHashHistory(),  // hash 模式
  history: createWebHistory(),  // history 模式
  routes: [
    {
      path: '/',
      name: 'home',
      component: defineAsyncComponent(() => import(`../views/home.vue`)),
      meta: {
        title: '首页',
      },
    },
    {
      path: '/list',
      name: 'list',
      component: defineAsyncComponent(() => import(`../views/list.vue`)),
      meta: {
        title: '列表页',
      },
    },
    {
      path: '/*',
      redirect: '/',
    },
  ]
})
// 全局路由守卫
router.beforeEach((to, from, next)=>{
  // console.log(to, from)
  if (to.meta.title) {
    document.title = `${to.meta.title}`;
  }
  next()
})
router.afterEach((to, from)=>{
  // console.log(to, from)
  console.log('afterEach')
})
export default router

说明:

  • 路由模式:
  • history模式对应createWebHistory()方法
  • hash模式对应createWebHashHistory()方法
  • 路由懒加载:在vite+Vue3项目中使用import()会有报错,所以使用vue提供的一个方法defineAsyncComponent,详见另一篇:vue3 + vite实现异步组件和路由懒加载
  • 3-2.在src/main.js入口文件中注册使用路由
// src/main.js
import { createApp } from 'vue'
import router from './router'
import store from './store'
import App from './App.vue'
// ...
const app = createApp(App)
app.use(router).use(store);
app.mount('#app')
  • 3-3.在src/App.vue文件中使用<router-view/>
// src/App.vue
<template>
  <router-view/>
</template>

四、使用路由

  • 4-1.在Option API中使用和Vue 2.x中使用没有差别。如下:
<template>
  <div></div>
</template>
<script>
  export default {
    data() {
      return {}
    },
    mounted() {
      // 路由跳转 && 设置参数
      this.$router.push({
        path: '/list',
        query: {
          id: 123,
        },
      })
      // 获取参数
      let { id } = this.$route.query
    },
  }
</script>
  • 4-2.在Composition API中不能再直接访问 this.$router 或 this.$route,所以要使用 useRouter 和 useRoute 函数。
<template>
  <div></div>
</template>
<script>
  import { ref } from 'vue'
  import { useRouter, useRoute, onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router'
  import ajax from "./ajax";
  export default {
    setup () {
      const router = useRouter()
      const route = useRoute()
      // 路由跳转 && 设置参数
      router.push({
        path: '/list',
        query: {
          id: 123,
        },
      })
      // 获取参数
      let { id } = route.query
      // 局部路由守卫
      onBeforeRouteLeave((to, from) => {
        const answer = window.confirm(
          '是否要离开本页面?'
        )
        // 取消导航并停留在同一页面上
        if (!answer) return false
      })
      const userData = ref()
      onBeforeRouteUpdate(async (to, from) => {
        //仅当 id 更改时才获取用户,例如仅 query 或 hash 值已更改
        if (to.params.id !== from.params.id) {
          userData.value = await ajax(to.params.id)
        }
      })
    },
  }
</script>

以上就是Vue3实战学习配置使用vue router路由步骤示例的详细内容,更多关于Vue3配置vue router路由的资料请关注脚本之家其它相关文章!

相关文章

  • vue多环境配置之 .env配置文件详解

    vue多环境配置之 .env配置文件详解

    .env文件是vue运行项目时的环境配置文件,这篇文章主要介绍了vue多环境配置之 .env配置文件,需要的朋友可以参考下
    2023-03-03
  • vue修改打包配置如何实现代码打包后的自定义命名

    vue修改打包配置如何实现代码打包后的自定义命名

    这篇文章主要介绍了vue修改打包配置如何实现代码打包后的自定义命名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Axios学习笔记之使用方法教程

    Axios学习笔记之使用方法教程

    axios是用来做数据交互的插件,最近正在学习axios,所以想着整理成笔记方便大家和自己参考学习,下面这篇文章主要跟大家介绍了关于Axios使用方法的相关资料,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Vue 路由 过渡动效 数据获取方法

    Vue 路由 过渡动效 数据获取方法

    这篇文章主要介绍了Vue 路由 过渡动效 数据获取方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • vue中的加密方式总结

    vue中的加密方式总结

    这篇文章主要为大家详细介绍了vue中常见的加密方式实现,例如js-base64、crypto-js、jsencrypt、bcryptjs,文中的示例代码讲解详细,需要的小伙伴可以参考一下
    2023-11-11
  • vue中watch和computed的区别详解

    vue中watch和computed的区别详解

    这篇文章主要给大家介绍了关于vue中watch和computed区别的相关资料,computed和watch都是vue框架中的用于监听数据变化的属性,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

    element UI 中的 el-tree 实现 checkbox&n

    在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree,对element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数的方法感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • Vue 级联下拉框的设计与实现

    Vue 级联下拉框的设计与实现

    在前端开发中,级联选择框是经常用到的,这样不仅可以增加用户输入的友好性,还能减少前后端交互的数据量。本文就介绍一下使用Vue实现级联下拉框,感兴趣的可以了解一下
    2021-07-07
  • vue-cli2.x项目优化之引入本地静态库文件的方法

    vue-cli2.x项目优化之引入本地静态库文件的方法

    这篇文章主要介绍了vue-cli2.x项目优化之引入本地静态库文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • vue项目部署到nginx/tomcat服务器的实现

    vue项目部署到nginx/tomcat服务器的实现

    这篇文章主要介绍了vue项目部署到nginx/tomcat服务器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08

最新评论