Vue.js中安装一个路由器demo
作者:Jovie 发布时间:2024-05-09 14:51:04
单页应用程序是或多或少复杂的应用程序,它加载一个单一的HTML页面。每当用户与它们互动时,它们就会使用JavaScript动态地更新其内容。
JavaScript框架,如React和Vue,使我们能够非常容易地创建SPA。然而,为了使用Vue.js创建多页面的SPA,我们将需要使用一个路由器。vue-router库是Vue.js的官方路由器,也是我们在本文中要使用的。
在这篇文章中,我们将讨论如何在Vue.js中安装一个路由器,以及如何创建我们的路由和管理应用程序中不同视图之间的导航的一些基本知识。让我们开始吧!
什么是vue-router,它是如何工作的?
Vue Router是一个JavaScript库,你可以用来在你的Vue.js应用程序中设置路由。通过vue-router,你可以定义路由并将其映射到组件。你还可以使用路由器来管理你的应用程序中不同视图之间的导航。
vue-router的功能与React Router DOM等其他解决方案非常相似,它为我们提供了许多功能:
支持HTML5历史API,实现干净的URL。
路由的懒散加载。
路线参数、查询、通配符。
由Vue.js的过渡系统提供的视图过渡效果。
如何安装vue-router库
要安装vue-router,你需要使用你喜欢的Node.js包管理器,无论是npm还是yarn。在你的终端,和你的项目文件夹内,你可以运行以下命令:
npm install vue-router
或
yarn add vue-router
vue-router安装后,你将需要在你的Vue.js应用程序入口处导入它。例如,如果你使用Vue 3来创建你的项目,你可以在src/main.js中导入vue-router,如下。
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router/index";
createApp(App).use(router).mount("#app");
自动安装Vue Router
如果你使用Vue CLI来创建你的新项目,你会得到一个选项,即从一开始就添加一个路由器。这种选择也会给你所有的模板和结构,你需要立即开始使用所有的路由功能。
然而,这可能并不总是一种选择。例如,如果你正在使用Vite来设置你的项目(一个越来越流行的替代方案),或者如果你有一个以前的项目现在需要扩展,你就必须手动安装Vue Router库,如上一节所示。
创建一个基本的vue-router例子
为了使用Vue Router库附带的功能,你需要创建一个实例,在你的main.js文件中导入它,并告诉Vue把它作为一个路由器使用。
为此,你需要创建一个新的JavaScript文件,在那里你将添加路由器正常工作所需的所有基本代码。为了简单起见,我们将创建一个名为router 的文件夹,里面只有一个index.js文件,我们将在这里写下我们的路由器的所有代码。
import { createRouter, createWebHistory } from "vue-router";
const routes = [];
const router = createRouter({
history: createWebHistory(import.meta.env.VITE_APP_ENV),
routes,
});
export default router;
在vue-router中创建路由
在你的项目中安装和设置了vue-router后,你可以开始创建路由。路由是由HTTP方法和路径的地图定义的,并与一个组件相关联。
在vue-router中,创建路由的方法是使用VueRouter构造函数。这个函数接收一个路由对象作为参数,我们可以在这里定义我们的路由。路由需要以数组格式来定义。
const routes = [
{
path: "/",
component: HomeComponent
},
{
path: "/about",
component: AboutComponent
},
]
对于我们想要创建的每个路由,我们需要在路由数组中添加一个对象。这个对象至少要有两个属性:路径和组件。path属性对应的是我们想要映射到一个组件的URL路径。component属性是访问路由时将被渲染的Vue组件。
在上面的例子中,我们定义了两条路由:一条是主页(/),另一条是关于页面(/about)。当用户导航到主页时,HomePage 组件将被呈现。同样地,当用户导航到"/about "时,显示的将是AboutPage 组件。
当然,你必须在Router文件中导入这两个组件,才能使这个例子发挥作用。
你也可以使用动态导入来异步加载组件。如果你想懒散地加载组件,这特别有用,这可以提高大型应用程序的性能。
在组件中渲染你的视图
一旦你定义了你的路由,你将需要告诉vue-router在哪里渲染视图。为此,vue-router为我们提供了**组件。这是一个占位符,将被替换为与当前活动路由相关的组件。
为了使用这个组件,你需要在你的应用程序的某个地方添加它,一般是在你的App.vue文件的模板中。
<template>
<section>
<router-view />
</section>
</template>
有了这段代码,当用户导航到/about时,他们将看到AboutPage组件在*中被渲染。*同样地,当他们导航回/(主页)时,他们会看到HomePage组件。
用vue-router管理视图之间的导航
一旦你定义了路由,并插入了*组件,你就可以开始使用vue-router在应用程序的不同视图之间进行导航。vue-router库为我们提供了两种执行导航的方式:router-link和vue-router实例方法push*。
Router-link是一个Vue组件,让我们在应用程序中定义内部链接。它默认渲染一个*标签,但如果我们向它传递一个标签属性,它也可以渲染其他类型的元素。例如,我们可以使用来渲染一个*元素。
<a href="https://link.juejin.cn?target=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" target="_blank" ><router-link to="/about" tag="button">Go to About</router-link>
</a>
这个按钮在被点击时将把我们带到"/about "页面,而不需要重新加载我们的应用程序。
另一方面,vue-router实例方法push可以被用来以编程方式导航到一个给定的路由。为了使用这个方法,我们需要有一个对vue-router实例的引用。最简单的方法是使用所有Vue组件上的"$router "属性,如果我们使用选项API的话。
<a href="https://link.juejin.cn?target=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" target="_blank" >this.$router.push({ path: '/about' })
</a>
或者通过在我们的组件中创建一个本地路由器实例,如果我们使用Composition API的话。
<a href="https://link.juejin.cn?target=" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" target="_blank" >import { useRouter } from 'vue-router';
const router = useRouter();
function redirect() {
router.push({ path: '/about' });
}
</a>
有了这些代码,当按钮被点击时,用户将被重定向到"/about"。
最后的思考
在这篇文章中,我们回顾了如何在Vue.js应用程序中安装和设置vue-router。我们还研究了如何在我们的应用程序中创建路由并管理不同视图之间的导航。
来源:https://juejin.cn/post/7176279729341726781


猜你喜欢
- 在我的博客上,以前我经常谈到SQL Serverl里的书签查找,还有它们带来的很多问题。在今天的文章里,我想从性能角度进一步谈下书签查找,还
- Django View官方文档一个视图函数(类),简称视图,是一个简单的 Python 函数(类),它接受Web请求并且返回Web响应。响应
- 前言最近公司项目中在使用 Echarts 绘制图表时,由于默认的 label 标签不能满足设计稿需求,所以研究了对 label标签进行格式化
- php开启openssl的方法,大多数情况下openssl是没有开启的,要想启用需要进行下简单的设置windows下开启方法:1: 首先检查
- 关于文件下载官网都有提供最新版本的推荐自行下载,如果不介意旧版本的,可以留言我可以分享我是用的版本~Anaconda安装打开下载的.exe文
- PyMongo是什么PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.安装环境
- 一、 简介TensorFlow是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(ma
- 最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。遂查找了相关资料,发现了PyQ
- 本文实例讲述了Python基于Tkinter模块实现的弹球小游戏。分享给大家供大家参考,具体如下:#!usr/bin/python#-*-
- 本文实例讲述了python集合的创建、添加及删除操作。分享给大家供大家参考,具体如下:集合时无序可变的序列,集合中的元素放在{}内,集合中的
- 一组有序项目的集合可变的数据类型【可进行增删改查】列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】列表是以方括号“[]”包围
- 本文实例讲述了Python多线程编程之多线程加锁操作。分享给大家供大家参考,具体如下:Python语言本身是支持多线程的,不像PHP语言。下
- 本篇介绍Python字典的常见操作。修改字典元素,如图。添加字典元素,如图。删除字典元素del方法,如图。删除字典元素clear方法,如图。
- 本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:由于目前工作
- 本文实例讲述了Thinkphp5.0 框架的请求方式与响应方式。分享给大家供大家参考,具体如下:Thinkphp5.0 的请求方式方法一(使
- 在SQL Server中可以使用系统内部存储过程xp_fileexist判断文件是否存在,如果存在再使用xp_cmdshell删除文件。xp
- 页面域关系:主页面a.html所属域A:www.aspxhome.com被iframe的页面b.html所属域B:www.cidianwan
- 前言在很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制
- 异步 innerHTMLinnerHTML 插入节点的性能的问题,通常是我们最关注的。在回答这问题时,James Padolsey 给出了他
- 概述一个状态管理工具Store:保存数据的地方,你可以把它看成一个容器,整个应用只能有一个 Store。State:包含所有数据,如果想得到