Vue3 中路由Vue Router 的使用实例详解

Vue3 中路由Vue Router 的使用实例详解

介绍

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,可以很方便的用于构建单页应用程序。Vue Router 2.x 版本为 Vue 2.x 版本提供路由功能,而 Vue Router 3.x 版本为 Vue 3.x 版本提供路由功能,并在性能和体积方面得到了大幅度提升。

安装

在使用 Vue Router 之前,我们需要先安装 Vue.js。Vue Router 3.x 版本支持 Vue 3.x 版本,因此需要使用 Vue 3.x 所需的版本的 npm 库。可以通过以下命令来安装 Vue Router:

npm install vue-router@next

在安装完成后,在 Vue 3 中导入 Vue Router:

import { createRouter, createWebHashHistory } from 'vue-router'

这里通过 createRouter 和 createWebHashHistory 函数分别创建一个 vue-router 实例和 Hash 模式的路由模式。

添加路由

在创建 vue-router 实例时,我们需要定义路由列表。路由列表分为两部分,一部分是路由描述符,另一部分是页面组件。

在 Vue Router 3.x 中,添加路由的方式比 Vue Router 2.x 有所不同。我们需要先通过 createRouter 函数来创建 router 实例,再通过该实例的 routes 属性来定义路由列表。

import { createRouter, createWebHashHistory } 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: createWebHashHistory(),
  routes, // 等同于routes: routes
});

在这个例子中,我们定义了两个路由描述,分别是 Home 和 About。对应着上面的定义,我们还需要新建两个组件文件:Home.vue 和 About.vue,并在这两个文件中编写对应的页面代码。

页面跳转

Vue Router 提供了两种方式来进行页面跳转,分别是声明式导航和编程式导航。

声明式导航

声明式导航建立在 HTML 模板和 Vue.js 组件的基础之上。可以直接使用标签来实现导航的效果。以下是一个例子:

<!-- Home 页面 -->
<template>
  <div>
    <h1>Home</h1>
    <router-link to="/about">About</router-link>
  </div>
</template>

<!-- About 页面 -->
<template>
  <div>
    <h1>About</h1>
    <router-link to="/">Home</router-link>
  </div>
</template>

在上面的例子中,我们使用了 router-link 组件来代替 a 标签,并将该组件的 to 属性设置为目标页面的路由路径。

编程式导航

如果需要在 JavaScript 代码中跳转页面,则需要使用编程式导航。Vue Router 提供了两个 API,分别是 $router.push 和 $router.replace。

push

push 用于向历史记录添加一个新的记录,并且跳转到该记录的路径。

// 通过 name 属性跳转
this.$router.push({ name: "Home" });

// 通过 path 属性跳转
this.$router.push({ path: "/" });

// 通过带参的 path 跳转
this.$router.push({ path: "/about", query: { user: "jack" } });

replace

replace 和 push 一样,用于跳转页面,区别在于 replace 不会在浏览器历史记录中添加新的记录。

// 通过 name 属性跳转
this.$router.replace({ name: "Home" });

// 通过 path 属性跳转
this.$router.replace({ path: "/" });

// 通过带参的 path 跳转
this.$router.replace({ path: "/about", query: { user: "jack" } });

示例

下面提供一个完整的示例。该示例包含两个页面,分别是 Home 页面和 About 页面,以及页面之间的路由跳转。

安装依赖

首先需要安装 Vue.js、Vue Router 以及样式框架 Bootstrap:

npm install vue@next vue-router@next bootstrap

目录结构

- src
  - views
    - Home.vue
    - About.vue
  - main.js
  - router.js
  - App.vue

Home.vue

<template>
  <div class="container mt-5">
    <h1>Home</h1>
    <p>欢迎来到我的首页</p>
    <router-link class="btn btn-primary" to="/about">查看关于我 →</router-link>
  </div>
</template>

<script>
export default {
  name: "Home",
};
</script>

About.vue

<template>
  <div class="container mt-5">
    <h1>About</h1>
    <p>我是一名前端开发工程师</p>
    <router-link class="btn btn-primary" to="/">返回首页 →</router-link>
  </div>
</template>

<script>
export default {
  name: "About",
};
</script>

main.js

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";

createApp(App).use(router).mount("#app");

router.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,
});

export default router;

App.vue

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

<script>
export default {
  name: "App",
};
</script>

index.html 文件中,添加一个 idapp 的空的 div 节点。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Vue Router Example</title>
  </head>
  <body>
    <div id="app"></div>
    <script src="./dist/app.js"></script>
  </body>
</html>

最后,在 package.json 文件中,添加以下 script:

{
  "scripts": {
    "build": "vue-cli-service build"
  }
}

在命令行运行以下命令,即可将代码打包成 app.js 文件。

npm run build

总结

Vue Router 是 Vue.js 官方的路由管理器,提供了丰富的路由功能。在 Vue 3 中使用 Vue Router,需要先通过 createRouter 函数创建 router 实例,再在该实例中定义路由列表。在 HTML 中,我们可以使用 router-link 组件来达到页面跳转的效果。在 JavaScript 中,可以使用 $router.push 和 $router.replace 来实现页面跳转的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3 中路由Vue Router 的使用实例详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue-cli脚手架初始化项目各个文件夹用途

    当使用Vue.js来开发项目时,可以使用Vue CLI脚手架工具来初始化项目。通过Vue CLI初始化的项目,会自动创建多个文件夹和文件,它们的用途如下: /public 文件夹:该文件夹下存放的是一些静态文件,如图标和页面。其中,/public/index.html 文件是整个应用的入口文件,是应用的模板。 /src 文件夹:该文件夹是主要的开发目录,包含…

    Vue 2023年5月27日
    00
  • vue3中的reactive函数声明数组方式

    在Vue3中,我们可以使用reactive函数来创建响应式的数据对象和数组。其中,声明数组可以有两种方式,分别是通过Array构造函数和直接使用数组字面量。 下面,将给出完整的攻略,包含以下步骤: 导入Vue3的相关模块 创建一个普通的JavaScript数组 使用Array构造函数声明一个响应式的数组 使用数组字面量声明一个响应式的数组 实现两条示例说明 …

    Vue 2023年5月27日
    00
  • VUE.CLI4.0配置多页面入口的实现

    是的,下面我将详细讲解如何使用Vue CLI 4.0配置多页面入口。 1. 安装Vue CLI 4.0 Vue CLI 4.0是Vue官方提供的脚手架工具,可以快速创建Vue项目,并提供了很多有用的功能。首先,我们需要全局安装Vue CLI 4.0: npm install -g @vue/cli 安装完成后,可以使用下面的命令来检查是否安装成功: vue …

    Vue 2023年5月28日
    00
  • Vue修饰符的使用详解

    Vue修饰符的使用详解 修饰符是什么? 在 Vue.js 中,修饰符指的是在指令(Directive)后面以半角句号 . 指明的特殊后缀,用于改变指令的行为。Vue 提供多个指令修饰符,比如 .stop、.prevent、.capture、.self、.once 等。 常用的修饰符 以下是 Vue 中比较常用的指令修饰符: .stop: 阻止事件冒泡 .pr…

    Vue 2023年5月27日
    00
  • Vite使用Esbuild提升性能详解

    Vite使用Esbuild提升性能详解 背景 Vite是一个轻量级的前端工具,它的设计初衷是为了让开发者更快地启动和构建项目,提供了一些开箱即用的特性和优化,例如快速启动、模块热更新等。其中,Vite的关键特性之一就是使用了类似于Snowpack的“零配置”的模式进行快速的开发体验。 然而,在一些情况下,Vite的构建速度还是无法满足一些开发者的需求。因此,…

    Vue 2023年5月28日
    00
  • vuex存取值和映射函数使用说明

    下面就为大家介绍一下Vuex存取值和映射函数的使用说明: Vuex存取值和映射函数使用说明 Vuex存取值 Vuex是Vue.js的状态管理库,它允许我们以集中式的方式存储、管理和使用应用中的所有组件之间共享的状态。在Vuex中,所有状态都被存储在一个单一的状态树中,这个状态树是响应式的,它可以在状态改变时自动更新视图。 在Vuex中,我们可以通过gette…

    Vue 2023年5月28日
    00
  • vue2.0中组件传值的几种方式总结

    下面来详细讲解“vue2.0中组件传值的几种方式总结”的攻略,主要包括以下几种方式: 1. 父子组件之间传值 父组件向子组件传值:使用props方式,父组件通过属性传递数据给子组件。在子组件中可以使用props定义来接收数据。 示例: 父组件中定义一个属性data,值为字符串类型,在子组件中用props属性来接收定义的属性data。子组件中通过{{}}绑定,…

    Vue 2023年5月27日
    00
  • vue中为何方法要写在methods的里面

    在Vue中,我们使用methods对象来存储Vue实例中的方法。之所以要将方法写在methods中,是因为Vue框架在初始化Vue实例时,需要遍历所有的data、computed、watch和methods,以及vue定义的生命周期钩子函数,以便进行响应式的绑定与更新。 在methods中定义的方法可以在Vue模板绑定中通过v-on指令进行调用,也可以通过V…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部