在 Vue 3 中,路由跳转通常是通过 Vue Router 实现的。Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 深度集成,使构建单页面应用变得易如反掌。
下面是一些在 Vue 3 中使用 Vue Router 进行路由跳转的基本步骤:
- 安装 Vue Router
如果你还没有安装 Vue Router,你可以通过 npm 或 yarn 来安装它:
npm install vue-router@4  
# 或者  
yarn add vue-router@4请注意,Vue 3 需要与 Vue Router 4 版本一起使用。
- 创建路由配置
在你的项目中,你需要定义一个或多个路由配置。这通常在 router/index.js 或类似的文件中完成:
import { createRouter, createWebHistory } from 'vue-router';  
import Home from '../views/Home.vue';  
import About from '../views/About.vue';  const routes = [  {  path: '/',  name: 'Home',  component: Home,  },  {  path: '/about',  name: 'About',  component: About,  },  // ... 其他路由配置  
];  const router = createRouter({  history: createWebHistory(),  routes, // (缩写) 相当于 routes: routes  
});  export default router;- 在 Vue 应用中使用路由
在你的主 Vue 应用文件中(通常是 main.js 或 main.ts),你需要安装路由实例:
import { createApp } from 'vue';  
import App from './App.vue';  
import router from './router';  const app = createApp(App);  app.use(router);  app.mount('#app');- 进行路由跳转
在 Vue 组件中,你可以使用 router-link 组件进行声明式导航,或者使用 $router 实例进行编程式导航。
声明式导航 (router-link)
<template>  <div>  <router-link to="/">Home</router-link>  <router-link to="/about">About</router-link>  </div>  
</template>编程式导航 ($router)
在 Vue 组件的方法或生命周期钩子中,你可以使用 $router 实例进行编程式导航:
<template>  <button @click="goToAbout">Go to About</button>  
</template>  <script>  
export default {  methods: {  goToAbout() {  this.$router.push({ name: 'About' }); // 使用路由名称  // 或者  this.$router.push('/about'); // 使用路径  },  },  
};  
</script>$router.push 方法用于导航到一个新的路由,它接受一个路由位置对象或者一个字符串路径作为参数。你还可以使用 $router.replace 方法来替换当前路由,而不是添加一个新的历史记录条目。
这就是在 Vue 3 中使用 Vue Router 进行路由跳转的基本流程。你可以根据项目的具体需求进一步定制路由配置,例如添加嵌套路由、重定向、路由守卫等高级功能。
<script setup>中编程式导航
在 Vue 3 的 <script setup> 语法中,编程式导航通常通过 useRouter 钩子来实现。useRouter 钩子提供了对路由实例的访问,从而允许你在组件内部进行编程式导航。
以下是如何在 <script setup> 中使用 useRouter 进行编程式导航的示例:
首先,确保你已经安装并正确配置了 Vue Router。
然后,在你的组件中,使用 <script setup> 语法和 useRouter 钩子:
<template>  <button @click="goToAbout">Go to About</button>  
</template>  <script setup>  
import { useRouter } from 'vue-router';  const router = useRouter();  const goToAbout = () => {  router.push({ name: 'About' }); // 使用路由名称  // 或者  router.push('/about'); // 使用路径  
};  
</script>在上面的示例中,我们首先从 vue-router 导入 useRouter 钩子。然后,在 <script setup> 中,我们调用 useRouter 来获取路由实例,并将其存储在 router 常量中。接着,我们定义了一个 goToAbout 方法,当按钮被点击时,该方法会被调用,并使用 router.push 方法进行编程式导航。
router.push 方法接受一个路由位置对象或字符串路径作为参数,这取决于你想要如何指定目标路由。你可以使用路由名称(如果已定义)或直接使用路径字符串。
如果你想替换当前路由而不是添加一个新的历史记录条目,你可以使用 router.replace 方法,其用法与 router.push 类似。
请注意,<script setup> 是 Vue 3 引入的一种更简洁的组件语法,它允许你在 <script> 标签内直接声明组件的响应式状态、计算属性、方法等,而无需显式导出它们。这种语法特别适用于与 Composition API 一起使用,使得组件逻辑更加集中和清晰。