vue路由

110 阅读2分钟

前言

我们知道vue框架构造的是一个单页面,它不同于传统方法有很多html文件,只有一个html文件,vue文件被挂载到唯一的html中,其中通过路由实现页面的切换和导航的功能。

路由 Router

官方对路由的定义是这样的:(入门 | Vue Router (vuejs.org))

Vue Router 是 Vue 官方的客户端路由解决方案。

客户端路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时,URL 会随之更新,但页面不需要从服务器重新加载。

Vue Router 基于 Vue 的组件系统构建,你可以通过配置路由来告诉 Vue Router 为每个 URL 路径显示哪些组件。

像掘金网站页面切换就用到了路由

image.png

image.png

接下来我们完成一个类似的功能:

首先要在安装依赖并配置(具体过程可以去官网仔细查看(安装 | Vue Router (vuejs.org))

根据自己的包管理工具选择(npm,yarn,pnpm),

npm install vue-router@4

如果你打算启动一个新项目,你可能会发现使用 create-vue 这个脚手架工具更容易,它能创建一个基于 Vite 的项目,并包含加入 Vue Router 的选项

npm create vue@latest

在终端中可以选择安装路由

image.png

安装完成后引入到main.js中

import App from './App.vue'
import router from './router/index.js'

App use(router)
App.mount('#app')

如果你用npm create vue@latest创造了一个项目并选择引入了vue router你会发现在项目中有一个router文件夹,里面有一个index.js文件,然后进行路由配置

import {createRouter,createWebHistory} from 'vue-router'
import Home from '../pages/Home.vue'
import Bot from '../pages/Bot.vue'
import Hot from '../pages/Hot.vue'

const routes=[
    {
        path:'/home',
        component:Home,
     },
          
    {
        path:'/bot',
        component:Bot,
    },
    {
        path:'/hot',
        component:Hot
        // component:()=>import('../pages/Hot.vue')//这样写引入就不用写了
    }


const router=createRouter({
    history:createWebHistory(),
    routes:routes
})

export default router

我们再创建一个导航栏,并在src下创建pages文件夹创建三个我们要跳转的页面

<template>
  <div>
   <nav>
    <router-link to="/home">首页</router-link>|
    <router-link to="/bot">BOT</router-link>|
    <router-link to="/hot">沸点</router-link>
   </nav>

<!--页面-->
  <router-view></router-view>

  </div>
</template>

<script setup>

</script>

<style lang="css" scoped>

</style>

image.png

image.png

以上就是一级路由接下来看看二级路由

1.首先我们想要的效果是在首页出现“最新”和“推荐”,先创建两个组件

image.png

2.home页代码如下

<template>
    <div>
      <h2>home page</h2>
      <div class="nav">
        <router-link to="/home/newest">最新</router-link>
        <router-link to="/home/suggest">推荐</router-link>
      </div>


      <router-view></router-view><!--路由入口-->
    </div>
</template>

<script setup>

</script>

<style lang="css" scoped>

</style>

3.配置路由 因为“最新”和“推荐”是“首页”的子页面,所以:

import {createRouter,createWebHistory} from 'vue-router'
import Home from '../pages/Home.vue'
import Bot from '../pages/Bot.vue'
import Hot from '../pages/Hot.vue'

const routes=[
    {
        path:'/',
        redirect: '/home'
    },
    {
        path:'/home',
        component:Home,
        children:[
            {
                path:'/home',
                redirect: '/home/suggest'
            },
            {
                path:'/home/newest',
                component:()=>import('../pages/home/Newest.vue')
            },
            {
                path:'/home/suggest',
                component:()=>import('../pages/home/Suggest.vue')
            }
        ]
    },
    {
        path:'/bot',
        component:Bot,
    },
    {
        path:'/hot',
        component:Hot
    }
]

const router=createRouter({
    history:createWebHistory(),
    routes:routes
})

export default router

有用重定向,页面默认在/home/suggest下,即使地址将/home/suggest删除也会跳到该页面

image.png

总结

vue-router的作用就是将不同的代码组件切换的方法,使开发更加简单快捷。