Vue Router 入门指南:从零开始构建单页应用的路由系统

今天我们来聊聊vue-router,在此之前我们首先要有vue 单页应用这个概念,在vue的整个项目中其实只有一个html文件,在vue中我们写的每个页面其实只是html文件中的一个代码片段,我们通过一些特殊的手段来实现每次只让一个代码片段生效,这样就实现了多个html文件一样的效果。

vue-router

接下来,我们来介绍一下这些特殊手段之一的vue-router

创建路由

  • 我们要使用vue-router,就需要下载其依赖,把你的项目在终端打开,输入命令:npm install vue-router@4(在vue router官方文档可以找到),
  • 在scr文件夹下新建一个文件夹,在该文件夹下创建一个js文件来创建并配置路由
  • 在js文件中进行配置:
js 复制代码
import { createRouter, createWebHashHistory } from 'vue-router' // 导入我们要用到的函数


// 路由配置数组
const routers = [

]
// 创建路由实例
const router = createRouter({
  history: createWebHashHistory(), // 使用哈希模式的路由历史记录
  routes: routers // 路由配置数组
})


export default router // 导出路由实例
  • 在main.js中引入
js 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入创建的路由实例

createApp(App)
.use(router) // 使用路由实例
.mount('#app')
  • 这样我们就基本完成了路由的创建,接下来就是配置和使用。

配置路由

假设我们有一个首页(Home.vue),有一个分类页面(Sort.vue),其中首页下面又有两个子页面最新(New.vue)和推荐(Recommend.vue),那么我们可以这样来配置路由:

  • 我们先配置首页和分类页面的路由,在上面创建好的路由配置数组当中进行如下操作
js 复制代码
const routers = [
    {
        path: '/home', // 配置路由路径
        name: 'home', // 配置路由名,用于在代码中引用
        component: () => import ('../views/Home.vue'), // 该路由对应的组件 '../views/Home.vue' 表示组件的路径
    },
    {
        path: '/sort',
        name: 'sort',
        component: () => import ('../views/Sort.vue'),
    },
]
  • 接下来我们配置二级路由,也就是最新和推荐两个页面的路由,因为最新和推荐两个页面是首页的子页面,所以我们在首页的路由配置中通过使用children选项来实现二级路由的创建
js 复制代码
 {
        path: '/home', // 配置路由路径
        name: 'home', // 配置路由名,用于在代码中引用
        component: () => import ('../views/Home.vue'), // 该路由对应的组件 '../views/Home.vue' 表示组件的路径
        children: [
            {
                path: '/home/new',
                name: 'new',
                component: () => import ('../views/New.vue'),
            },
            {
                path: '/home/recomment',
                name: 'recomment',
                component: () => import ('../views/Recomment.vue'),
            },
        ]
    },

使用路由

  • 当用户访问不同的路由路径时,Vue Router 会根据路由配置找到对应的组件,并将其渲染到 <router-view></router-view> 标签所在的位置
  • 可以使用<router-link></router-link>标签进行跳转,例:
vue 复制代码
<template>
  <div>
    <router-link to="/home">首页</router-link> // /home 为所在页面的路径
    <router-link to="/sort">分类</router-link>
  </div>
  <router-view></router-view>
</template>
  • 二级路由的使用也是同理,我们在首页使用<router-view></router-view>,然后使用<router-link></router-link>标签进行跳转
vue 复制代码
<template>
    <div>
        <router-link to="/home/new">最新</router-link>
        <router-link to="/home/recomment">推进</router-link>
    </div>
    <router-view></router-view>
</template>
  • 除了使用<router-link></router-link>外,我们还可以通过编程式(绑定事件)导航来跳转页面

    this.$router.push('/home')

    this.$router.push({ path: '/home', query: { id: 123 } }) 可以传参数过去

    this.$router.push({ name: 'home' , params: { id: 123 } }) 需要在路径后面加上/:id

今天的分享就到这里。

相关推荐
hzxOnlineOk20 分钟前
【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决
前端·safari
dzweather24 分钟前
Html_Css问答集(8)
前端·css·html
没耳朵的Rabbit35 分钟前
Web前端-Web开发CSS基础3-盒模型
前端·css
无名之逆44 分钟前
Rust 生命周期与引用有效性
开发语言·前端·后端·算法·程序员·rust·编程
ScriptEcho1 小时前
WebCola.js: 基于约束的力导向图布局
前端
学不完了是吧1 小时前
前端开发常用命令行工具及操作命令(Node.js 和 npm、Yarn、vue、React、Git、Webpack)
前端
Virtual091 小时前
浅谈CSS浮动及其清除方法
前端·html
煸橙干儿~~1 小时前
el-table template slot-scope=“scope“ 不显示内容
javascript·vue.js·elementui
小王码农记1 小时前
vue3表格使用拖拽排序
前端·javascript·vue.js