Vue3:网页项目中路由的设计和配置

为了避免我每次建项目配路由的时候都回去翻网课,打算整一博客

路由设计

不同网页的路由设计思路基本相同,分为一级路由和二级路由,基本设计思路如下图

以我之前做过的招新系统管理端为例,可设计出如下路由

路由配置

还是以招新系统管理端为例

index.js/index.ts

在src文件夹的router文件夹中找到index.ts文件夹

将index.ts中的默认代码删除,添加如下代码

其中path是页面的地址栏路径,import则是path对应的vue文件路径

其他重要的部分代码注释都写得很详细,相信聪明的你们一下就能看懂

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL), //设置路由模式为历史模式
  routes: [
    {
      path:'/', //当路径匹配到'/'时,自动重定向到/login页面 -> 也就是用户一进网页,默认显示登录页
      redirect:'/login'
    },
    { path: '/login', component: () => import('@/views/loginPage.vue') }, // 一级路由:登录页
    { //一级路由:固定顶部及左侧导航栏
      path: '/layout', //当路径匹配到'/layout'时,自动重定向到'/layout/users' -> 也就是用户登录后,默认显示用户列表
      component: () => import('@/views/layoutContainer.vue'),
      redirect: '/layout/users',
      children: [
        { //二级路由:用户列表
          path: '/layout/users',
          component: () => import('@/views/usersPage.vue')
        },
        { //二级路由:消息推送
          path: '/layout/message',
          component: () => import('@/views/messagePage.vue')
        },
        { //二级路由:用户端配置
          path: '/layout/config',
          component: () => import('@/views/configPage.vue')
        }
      ]
    }
  ]
})

export default router //导出

App.vue

在App.vue中写如下代码,显示一级路由的页面

javascript 复制代码
<script setup>
import { RouterView } from 'vue-router'
</script>

<template>
      <router-view></router-view>
</template>

<style scoped>

</style>

layoutContainer.vue

在一级路由的layoutContainer.vue文件中,我们可以先写一个简易的导航栏切换逻辑,之后再添加样式

代码中的<RouterView></RouterView>是二级路由出口,用于显示二级路由的页面

router-view和RouterView是一样的

javascript 复制代码
<script setup>
import { RouterView, RouterLink } from 'vue-router'
</script>

<template>
  导航栏
  <RouterLink to="/layout/users">用户列表</RouterLink>
  <RouterLink to="/layout/message">消息推送</RouterLink>
  <RouterLink to="/layout/config">用户端配置</RouterLink>
  <RouterView></RouterView>
</template>

<style scoped></style>

打开页面,已经可以通过简单的点击操作来切换二级路由页面了(注意观察地址栏路径的变化)

RouterLink拓展知识

在浏览器中打开开发者面板,我们发现RouterLink的本质其实是a标签

而且当前被选中的导航栏有两个默认标签router-link-active router-link-exact-active

所以我们可以通过给标签设置CSS样式来改变导航栏被点击时的显示模式

示例代码如下

javascript 复制代码
a {
  flex: 1;
  text-decoration: none;
  padding: 20px 0;
  line-height: 20px;
  color: #fff;
}

a:hover {
  background-color: #3678d5;
  color: rgb(252, 204, 128);
}

a.router-link-active {
  background-color: #3678d5;
  color: rgb(252, 204, 128);
}
相关推荐
Elastic 中国社区官方博客11 小时前
用于 JavaScript 和 TypeScript 的 ES|QL 查询构建器:流式、类型安全的查询构建
大数据·javascript·数据库·elasticsearch·搜索引擎·typescript·全文检索
zubylon11 小时前
Ollama 本地起一个开发助手
前端·人工智能
(Charon)11 小时前
【C++/Qt】Qt 实现 MQTT 测试工具:连接 Broker、订阅主题与发布消息
开发语言·c++·qt
Ulyanov11 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:动态数据仪表盘与 NumPy 可视化 —— 从标量到向量的数据驱动进化
开发语言·python·qt·架构·numpy
遇见~未来11 小时前
第五篇_构建真实页面_组件_响应式_维护性
前端·css3
魔士于安11 小时前
Unity完整小球迷宫项目
前端·unity·游戏引擎·贴图·模型
小短腿的代码世界11 小时前
Qt序列化与持久化深度解析:从QDataStream到自定义二进制协议
开发语言·数据库·qt
irpywp12 小时前
苦于AI生成的网页千篇一律且粗糙?design-md-chrome :一款网页样式提取插件 ,将任意网站的视觉规范转化为大模型可读的代码指令!
前端·人工智能·chrome·开源·github
周末也要写八哥12 小时前
Golang语言与Rust语言的对比
开发语言·后端·golang
楼田莉子12 小时前
Linux网络:数据链路层
linux·服务器·开发语言·网络·c++·后端