Vue3路由组件练习

Vue3 路由组件练习

1. 演示效果

2. 代码分析

2.1. 安装 vue-router

命令:npm i vue-router

应用插件:Vue.use(VueRouter)

2.2. 创建路由文件

在 src 文件夹下,创建router 文件夹,并在该文件夹创建index.js文件

2.3. 创建路由实例

使用 createRouter 函数创建一个路由器实例,并传入一个 history 参数,该参数是一个用于记录路由变更的 history 对象。

这里使用了环境变量 BASE_URL,从 import.meta.env.BASE_URL 中获取基础 URL。

组件的加载方式是通过闭包实现。在每个路由对象中,使用 component: () => import("../components/{componentName}.vue") 加载组件。

js 复制代码
import { createRouter, createWebHistory } from "vue-router";

const router = createRouter({
	history: createWebHistory(import.meta.env.BASE_URL),
	routes: [
		{
			path: "/useHook",
			name: "useHook",
			component: () => import("../components/UseHooks.vue"),
		},
		{
			path: "/musicList",
			name: "musicList",
			component: () => import("../components/MusicList.vue"),
		},
		{
			path: "/purchaseCar",
			name: "purchaseCar",
			component: () => import("../components/PurchaseCar.vue"),
		},
	],
});

export default router;

App.vue 文件中,我们使用 router-link 组件导航,通过传入 to 属性指定链接。<router-link> 默认会被渲染成一个 <a> 标签

<router-view> 标签中,我们使用了默认的路由组件。当你点击路由链接时,Vue Router 会根据指定的目标路由渲染相应的路由组件。

js 复制代码
<template>
  <div class="wrapper">
    <router-link to="/" style="margin-right: 10px;">Go to Home</router-link><br>
    <router-link to="/musicList">Go to MusicList</router-link><br>
    <router-link to="/purchaseCar">Go to PurchaseCar</router-link><br>
    <router-link to="/useHook">Go to UseHook</router-link><br>

  </div>
  <br /><br />
  <router-view>
  </router-view>
</template>

<script setup>

</script>


<style scoped>
#wrapper {
  width: 100vw;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
}
</style>

3. 代码实现

3.1. index.js 文件

js 复制代码
import { createRouter, createWebHistory } from "vue-router";

const router = createRouter({
	history: createWebHistory(import.meta.env.BASE_URL),
	routes: [
		{
			path: "/useHook",
			name: "useHook",
			component: () => import("../components/UseHooks.vue"),
		},
		{
			path: "/musicList",
			name: "musicList",
			component: () => import("../components/MusicList.vue"),
		},
		{
			path: "/purchaseCar",
			name: "purchaseCar",
			component: () => import("../components/PurchaseCar.vue"),
		},
	],
});

export default router;

3.2. App 文件

js 复制代码
<template>
  <div class="wrapper">
    <router-link to="/" style="margin-right: 10px;">Go to Home</router-link><br>
    <router-link to="/musicList">Go to MusicList</router-link><br>
    <router-link to="/purchaseCar">Go to PurchaseCar</router-link><br>
    <router-link to="/useHook">Go to UseHook</router-link><br>

  </div>
  <br /><br />
  <router-view>
  </router-view>
</template>

<script setup>

</script>


<style scoped>
#wrapper {
  width: 100vw;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
}
</style>
相关推荐
爱学习的小仙女!1 分钟前
面试题 前端(一)DOCTYPE作用 标准模式与混杂模式区分
前端·前端面试题
小小小小宇1 小时前
前端转后端基础- 变量和类型
前端
Cobyte1 小时前
1.基于依赖追踪和触发的响应式系统的本质
前端·javascript·vue.js
主宰者2 小时前
C# CommunityToolkit.Mvvm全局事件
java·前端·c#
老神在在0012 小时前
【Selenium 自动化精讲】浏览器弹窗与登录界面的本质区别 & 实操指南
javascript·学习·selenium·测试工具·自动化
计算机学姐2 小时前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
前端小咸鱼一条2 小时前
16.迭代器 和 生成器
开发语言·前端·javascript
小江的记录本3 小时前
【注解】常见 Java 注解系统性知识体系总结(附《全方位对比表》+ 思维导图)
java·前端·spring boot·后端·spring·mybatis·web
web守墓人3 小时前
【前端】记一次将ruoyi vue3 element-plus迁移到arco design vue的经历
前端·vue.js·arco design
伊步沁心3 小时前
Webpack & Vite 深度解析
前端