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>
相关推荐
2401_8791036834 分钟前
24.11.10 css
前端·css
ComPDFKit2 小时前
使用 PDF API 合并 PDF 文件
前端·javascript·macos
yqcoder2 小时前
react 中 memo 模块作用
前端·javascript·react.js
谈谈叭2 小时前
Javascript中的深浅拷贝以及实现方法
开发语言·javascript·ecmascript
优雅永不过时·3 小时前
Three.js 原生 实现 react-three-fiber drei 的 磨砂反射的效果
前端·javascript·react.js·webgl·threejs·three
爱编程的鱼3 小时前
javascript用来干嘛的?赋予网站灵魂的语言
开发语言·javascript·ecmascript
神夜大侠5 小时前
VUE 实现公告无缝循环滚动
前端·javascript·vue.js
明辉光焱5 小时前
【Electron】Electron Forge如何支持Element plus?
前端·javascript·vue.js·electron·node.js
柯南二号5 小时前
HarmonyOS ArkTS 下拉列表组件
前端·javascript·数据库·harmonyos·arkts
wyy72936 小时前
v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条
前端·ui·html