vue3+router4的基本使用

news2024/10/7 18:29:52

一、安装router

npm i vue-router

二、路由跳转

2.1 创建路由实例

src目录下创建router文件夹,在其中创建一个index.js文件,创建路由实例。
通过vue-routercreateRouter方法创建一个router对象。其中有historyroutes

1.history:

  • history是前端路由库提供的一个对象,负责管理浏览器历史记录的状态和导航。
  • 它可以通过push、replace、go等方法来控制浏览器的历史记录。并相应地更新当前页面的显示内容。
  • history对象根据所使用的路由类型不同,可以是浏览器原生的window.history,也可以是createBrowserHistory、createHashHistory等函数创建的自定义对象。

2.routes:

  • routes表示路由配置,指定了不同URL对应的组件及其其他属性。
  • 路由配置一般以树状结构的方式组织,每个路由都包含一个路径(path),和对应的路由组件(component)。
  • 在路由系统中,可以根据匹配到的URL路径来渲染相应的组件,从而实现页面的切换和导航。
  • 通过配置不同的路由规则,可以构建出应用程序的不同页面和导航逻辑。

src/router/index.js

/**
 *  路由文件
 */
 //引入router
import { createRouter, createWebHistory } from 'vue-router'

// 定义路由组件路径
/*
	这里的path和name都是自定义命名
*/
const routes = [
          {
              name: 'login',  
              path: '/login',
              component: () => import('../components/login.vue')
           }, {
              name: 'registry',
              path: '/registry', 
              component: () => import('../components/registry.vue')
           }
];

// 创建Router对象
const router = createRouter({
    history: createWebHistory(),
    routes
})

// 导出对象

export default router;

2.2 挂载路由实例

main.js

import { createApp } from 'vue'
import App from './App.vue'
// 引入全局路由
import router from './router'

const app = createApp(App)

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

2.3 创建页面组件

login.vue

<template>
    <div class="login">
       <h1>我是login页面</h1>
    </div>
</template>
export default {
    name: 'login',
    setup() {
        return {
        }
    }
}

registry.vue

<template>
  <div>
    <h1>我是registry页面</h1>
  </div>
</template>
export default {
    name: 'registry',
    setup() {
        return {
        }
    }
}

2.4 通过router-link跳转

在Vue Router中,<router-view>是用作路由占位符的组件。它是被放置在Vue应用模板中的一个特殊标记,用于渲染当前活跃的路由组件。当使用Vue Router进行路由管理时,你可以在路由配置中定义不同的路径与对应的组件。当用户访问不同的路径时,<router-view>会自动根据当前路径匹配到的组件来展示内容。
<router-view>可以将路由地址和组件映射起来,可以使用<router-link>来进行页面跳转。它的to属性,能够跳转到对应的path,从而展示path下的component组件。

App.vue

<template>
  <h1>路由跳转</h1>
  <div>
    <!-- 通过路由name、path完成跳转 -->
    <router-link :to="{name:'login'}">login</router-link>
    <span>------------</span>
    <router-link to="/registry">registry</router-link>
    <router-view ></router-view>
  </div>
</template>

在这里插入图片描述
在这里插入图片描述

2.5 通过js方法跳转

<script setup>
import { useRouter} from 'vue-router'

  const router = useRouter(); 
  
  // 通过路由path跳转
  const toLink = (path) => {
      router.push(path)
  }
  // 通过路由name跳转
  const toLink1 = (name) => {
  router.push({name:name})
  }  
  </script>
<template>
  <div class="btn">
    <!-- 通过js方法完成路由跳转 -->
    <button @click="toLink('/login')">按钮1--->login</button>
    <button @click="toLink1('registry')">按钮2--->registry</button>
 </div>
</template>

三、路由传参

3.1 query

<script setup>
import { useRouter,useRoute } from 'vue-router'
  
  const router = useRouter();
  const route = useRoute();
  // 通过路由传参
  const toLink2 = (path) => {
    router.push({
      name: path,
      query:{name:'zhangsan',pwd:'123456'}
    })
      // 截取路由参数
  		console.log(rouet.query);
}
  </script>

<template>
  <h1>路由传参</h1>
  <div class="btn">
    <!-- 通过路由传参 -->
    <button @click="toLink2('registry')">to registry</button>
  </div>
</template>

在这里插入图片描述
在这里插入图片描述

3.2 params

先修改path的值,再用params传参
router/index.js

 {
      name: 'login',
      path: '/login',
      component: () => import('../components/login.vue')
 }, {
      name: 'registry',
      path: '/registry/:name', // 使用param需要修改path的形式
      component: () => import('../components/registry.vue')
 }

App.vue

<script setup>
import { useRouter,useRoute } from 'vue-router'
  
  const router = useRouter();
  const route = useRoute();

  // 通过路由传参
   const toLink3 = (path) => {
     router.push({
       name: path,
       params:{name:'lisi'}
     })
     console.log(route.params);
  } 
  </script>

<template>
  <h1>路由传参</h1>
  <div class="btn">
    <!-- param -->
    <button @click="toLink3('registry')">param</button>
  </div>
</template>

在这里插入图片描述
在这里插入图片描述

四、路由嵌套

Vue的路由嵌套指的是在一个路由配置中,将多个子路由组织成一个层级结构。这样可以更好地管理和组织复杂的应用程序页面。要创建嵌套路由,需要再父路由中定义子路由,并在组件内部使用<router-view>标签来显示子路由的内容。

/**
 *  路由文件
 */
 //引入router
import { createRouter, createWebHistory } from 'vue-router'

// 定义路由组件路径
const routes = [
    {
        path: '/',
        redirect: { path: '/home' }, // 重定向到path为 home 的路由
    },
    {
        name: 'home',
        path: '/home',
        component: () => import('../components/home.vue'),
        children: [
            {
                name: 'login',
                path: '/home/login',
                component: () => import('../components/login.vue')
            }, {
                name: 'registry',

                path: '/home/registry', 
                component: () => import('../components/registry.vue')
            }
        ]
    },
   
];

home.vue

<template>
   <div>
    <div>导航栏组件</div>
      <hr>
      <router-link to="/home/login">去login页</router-link>
      <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
      <router-link to="/home/registry">去registry页</router-link>
      <hr>
      <router-view /> 
    </div>
</template>

App.vue

<script setup>
 </script>

<template>
  <h1>嵌套路由</h1>
  <router-view ></router-view>
</template>

在这里插入图片描述

在这里插入图片描述

五、路由重定向

在Vue Router中,路由重定向是指当用户访问某个路径时,将其重定向到另一个路径。这可以通过路由配置中的redirect属性来实现。

const routes = [
  {
    path: '/',
    redirect: '/home' // 当用户访问根路径'/'时,重定向到'/home'
  },
  {
    path: '/home',
    component: Home
  }
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微机保护的数据采集系统(2)

&#xff08;二&#xff09;采样保持电路&#xff08;S&#xff0f;H&#xff09;和模拟低通滤波器&#xff08;ALF&#xff09; 1&#xff0e;采样保持电路&#xff08;S&#xff0f;H&#xff09; &#xff08;1&#xff09;采样保持原理。 S&#xff0f;H电路的作用是在一个…

Linux进程间通信 - 共享内存

之前的文章中我们讲述了匿名管道与命名管道相关的知识点&#xff0c;在本文中我们将继续讲述一种进程间通信的方式&#xff1a;共享内存。 systemV共享内存 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到…

Downie 4 4.6.18 MAC上最新最好用的一款视频下载工具

Downie for Mac 简介 Downie是Mac下一个简单的下载管理器&#xff0c;可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 下载 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的…

间接采购管理中常见的五大挑战

间接采购&#xff0c;有时也被称为间接费用或尾部支出&#xff0c;这些商品或服务不是制造产品直接必需的&#xff0c;而是日常运营所需的。 ● 办公室和行政用品 ● 商店地点的消耗品&#xff08;例如&#xff0c;清洁用品&#xff09; ● 设施管理费用 ● 专业服务 ● 旅行…

Linux 服务器重启之后执行指定脚本文件

有些时候&#xff0c;我们部署服务、中间件、数据库等应用的机器可能会因为机房停电、断电而宕机&#xff0c;这样大部分服务就随之关闭了&#xff0c;可能会需要手动去进行重启&#xff0c;我们可以通过 Linux 的开机启动来实现服务自动重启。 一、配置 /etc/rc.d/rc.local 文…

VOSviewer软件的基础与应用

VOSviewer是一款免费且专业的文献计量分析软件&#xff0c;也是一个知识图谱可视化工具&#xff0c;由荷兰莱顿大学开发&#xff0c;主要用于构建和查看文献计量知识图谱&#xff0c;基于文献的共引和共被引原理&#xff0c;具有可视化能力强、适合于大规模样本数据的特点&…

抖音矩阵系统源代码开发部署--源码搭建

抖音矩阵系统是一个具有强大功能的开放性平台&#xff0c;通过数据挖掘技术能够实现精准的用户画像和个性化推荐&#xff0c;这也是抖音成为国内最受欢迎的短视频平台之一的原因之一。矩阵系统的开发需要大量的技术支持和数据分析&#xff0c;同时也需要综合运用大数据、机器学…

Mysql主从复制及读写分离

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

华为OD机试 JavaScript 实现【密码验证合格程序】【牛客练习题 HJ20】,附详细解题思路

一、题目描述 密码要求: 长度超过8位包括大小写字母.数字.其它符号,以上四种至少三种不能有长度大于2的包含公共元素的子串重复 &#xff08;注&#xff1a;其他符号不含空格或换行&#xff09; 二、输入描述 一组字符串。 三、输出描述 如果符合要求输出&#xff1a;OK&…

A stochastic parrot in every pot 每口锅里都会有一只随机鹦鹉? | 经济学人社论双语精翻

本期双语文章来自《经济学人》2023年5月13日周报社论&#xff1a;《人工智能经济学》&#xff08;The economics of AI&#xff09; A stochastic parrot in every pot? 每口锅里都会有一只随机鹦鹉&#xff1f; What does a leaked Google memo reveal about the future of A…

软文营销,如何写出优质的新闻稿

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 一&#xff0c;什么是软文营销&#xff1f; 软文营销是一种通过撰写和发布具有信息性、有趣性和可读性的文章&#xff0c;来推广产品、服务或品牌的营销策略。软文是指以一种较为隐晦、…

【默认端口】市面上各种中间件、软件、服务的默认端口汇总

常用软件&#xff0c;中间件&#xff0c;服务的默认端口汇总 常用软件默认端口汇总 市面上各种中间件、软件和服务的默认端口众多&#xff0c;下面列举一些常见的默认端口&#xff1a; SSH&#xff08;Secure Shell&#xff09;&#xff1a;22 Telnet&#xff1a;23 FTP…

AI在零售行业的应用

原创 | 文 BFT机器人 如今&#xff0c;零售商已经体验到使用人工智能 (AI) 的诸多好处&#xff0c;随着行业不断创新&#xff0c;人工智能的重要性只会越来越大。随着人工智能越来越被广泛接受&#xff0c;它的实施也越来越广泛。 查看这些用例&#xff0c;了解零售业中的 AI如…

一文掌握linux基本操作命令

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Selenium元素定位的八种方法(建议收藏)

自动化一般需要四步操作&#xff1a;获取元素&#xff0c;操作元素&#xff0c;获取返回结果&#xff0c;断言&#xff08;返回结果与期望结果是否一致&#xff09;&#xff0c;最后自动出测试报告。Selenium提供8种元素定位的方法&#xff1a;id,name,class name,link text,xp…

三维点云机器学习检测定位圆心,三维圆检测,拟合轴线(基于open3d和python)

0.任务描述 背景&#xff1a;从端面拍摄大型圆筒工件&#xff0c;该工件周向尺寸大于相机视野&#xff0c;只能拍摄到1/3左右的圆周&#xff0c;且无法保证相机与端面垂直拍摄 任务&#xff1a;需要拟合圆周与轴线位置 难点&#xff1a;三维圆拟合与检测都很复杂&#xff0c…

fscan安装配置(windows、linux系统)

fscan安装配置(windows、linux系统) 1、简介 fscan一款内网综合扫描工具&#xff0c;方便一键自动化、全方位漏扫扫描。 它支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探…

程序员面试必备的 Java 八股文,适合所有的 Java 求职者

说明 本文分享 Java 后端真实高频面试题&#xff0c;有详细答案&#xff0c;保你稳过面试。题目包括&#xff1a;Java 基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。 包含从简单到困难、从高频到低频的题目&…

EF Core中Partition by实现

一、SQL语句实现 Partition by是SQL Server数据库中提供的分区函数,跟Group by不同的是,Partition by能够按照分区返回所有记录,而Group by只能返回一条记录。 举个例子,有如下的数据库,需要找出每个唯一编号最新状态的数据。 显然,CW048201和CW048202它们的最新状态都…

靠着这套Github标星55K的Java面试笔记,成功拿到了2个大厂offer

作为一名优秀的程序员&#xff0c;技术面试是不可避免的一个环节&#xff0c;一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试&#xff0c;肯定会遇到一些这样的问题&#xff1a; 1、看你项目都用的框架&#xff0c;熟悉S…