Vue之路由(Vue Router)

文章目录

    • 🥑什么是Vue Router
    • 🥑安装和配置Vue Router
    • 🥑基本的路由配置
      • 🍄路由规则
      • 🍄路由链接
    • 🥑路由参数
    • 🥑嵌套路由
    • 🥑导航守卫
    • 🥑基本用法
      • 🍄创建路由实例
      • 🍄在主应用中使用路由
      • 🍄创建视图组件
      • 🍄在模板中使用路由链接
    • 🥑路由传参
    • 🥑总结

🥑什么是Vue Router

Vue Router是Vue.js官方的路由管理库,它与Vue.js核心深度集成,提供了构建SPA所需的一切。通过使用Vue Router,我们可以实现页面的无刷新切换、嵌套视图、路由参数、导航守卫等功能,使得我们的应用更具交互性和用户友好性。

🥑安装和配置Vue Router

首先,我们需要确保已经安装了Vue.js。如果没有安装,可以通过以下命令安装:

npm install vue

接下来,我们需要安装Vue Router:

npm install vue-router

安装完成后,我们可以在项目的入口文件(通常是main.js)中配置Vue Router:

// main.jsimport Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'Vue.use(VueRouter)const router = new VueRouter({// 配置路由规则routes: [{ path: '/', component: Home },{ path: '/about', component: About },// 更多路由规则...]
})new Vue({render: h => h(App),router  // 将router实例注入Vue实例
}).$mount('#app')

在上面的代码中,我们首先引入Vue和VueRouter,然后使用Vue.use()安装VueRouter。接着,我们创建了一个router实例,配置了一些基本的路由规则,并将这个实例注入到Vue实例中。

🥑基本的路由配置

🍄路由规则

在上面的例子中,我们定义了两个基本的路由规则,一个是根路径(/)对应的组件是Home,另一个是路径/about对应的组件是About。这些规则告诉Vue Router在不同的路径下应该渲染哪个组件。

🍄路由链接

要在应用中实现路由导航,我们可以使用<router-link>组件。例如,在一个导航栏中,我们可以这样使用:

<!-- App.vue --><template><div id="app"><router-link to="/">Home</router-link><router-link to="/about">About</router-link><router-view></router-view></div>
</template>

上面的代码中,<router-link>被用于创建路由链接,to属性指定了链接的目标路径。<router-view>则是用于显示当前路径对应的组件。

🥑路由参数

有时,我们需要在路由中传递参数。Vue Router允许我们通过在路由规则中使用冒号标记来实现这一点。

// main.jsconst router = new VueRouter({routes: [{ path: '/user/:id', component: User }]
})

在上述例子中,:id是一个动态的路由参数,它可以匹配任何非空字符串。我们可以在组件中通过$route.params.id来访问这个参数。

🥑嵌套路由

Vue Router还支持嵌套路由,这使得我们可以在应用中创建更为复杂的页面结构。

// main.jsconst router = new VueRouter({routes: [{path: '/user/:id',component: User,children: [{ path: 'profile', component: UserProfile },{ path: 'posts', component: UserPosts }]}]
})

上述例子中,UserProfileUserPostsUser组件的子组件,它们分别对应于路径/user/:id/profile/user/:id/posts

🥑导航守卫

导航守卫允许我们在导航发生时执行一些逻辑。Vue Router提供了多个导航守卫,例如beforeEachbeforeResolveafterEach等。我们可以使用这些导航守卫来进行权限验证、数据加载等操作。

// main.jsconst router = new VueRouter({routes: [// 路由规则...]
})router.beforeEach((to, from, next) => {// 在导航发生前执行逻辑// 比如权限验证if (to.meta.requiresAuth) {// 需要验证权限if (checkAuth()) {next() // 允许导航} else {next('/login') // 重定向到登录页}} else {next() // 不需要验证权限,直接导航}
})

在上述例子中,beforeEach导航守卫用于进行权限验证。如果路由规则中包含meta.requiresAuth属性,并且用户未通过验证,我们将重定向到登录页。

🥑基本用法

🍄创建路由实例

在Vue项目中,首先需要创建一个路由实例。通常,我们会在src目录下创建一个router文件夹,并在其中创建一个index.js文件:

// router/index.js
import Vue from 'vue'
import Router from 'vue-router'Vue.use(Router)const router = new Router({routes: [{path: '/',component: () => import('@/views/Home.vue')},{path: '/about',component: () => import('@/views/About.vue')}]
})export default router

🍄在主应用中使用路由

要在主应用中使用路由,需要在main.js中引入并使用路由实例:

// main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'Vue.config.productionTip = falsenew Vue({render: h => h(App),router
}).$mount('#app')

🍄创建视图组件

src/views目录下创建Home.vueAbout.vue作为两个示例视图组件。

<!-- Home.vue -->
<template><div><h2>Home Page</h2><p>Welcome to the home page!</p></div>
</template><script>
export default {name: 'Home'
}
</script>
<!-- About.vue -->
<template><div><h2>About Page</h2><p>Learn more about us!</p></div>
</template><script>
export default {name: 'About'
}
</script>

🍄在模板中使用路由链接

在需要使用路由链接的地方,可以使用<router-link>标签:

<!-- App.vue -->
<template><div id="app"><router-link to="/">Home</router-link><router-link to="/about">About</router-link><router-view></router-view></div>
</template><script>
export default {name: 'App'
}
</script>

🥑路由传参

有时,我们需要在路由间传递参数。Vue路由提供了多种方式来实现这一点,包括动态路由、查询参数等。以下是一个简单的动态路由示例:

// router/index.js
// 在路由配置中定义动态参数
{path: '/user/:id',component: () => import('@/views/User.vue')
}
<!-- User.vue -->
<template><div><h2>User Page</h2><p>User ID: {{ $route.params.id }}</p></div>
</template><script>
export default {name: 'User'
}
</script>

在这个示例中,通过在路由配置中定义:id作为动态参数,我们可以在User.vue组件中通过$route.params.id来获取传递的参数。

🥑总结

Vue路由是构建现代单页面应用的重要工具之一。通过使用Vue路由,我们可以轻松地管理页面导航、传递参数,并创建更加灵活和交互性的用户界面。以上只是Vue路由的入门介绍,还有许多高级特性和用法等待你去探索和使用。希望这个简单的示例能够帮助你更好地理解和使用Vue路由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx与keepalived高可用节点搭建实验

本文主要介绍了nginxkeepalived的部署实验&#xff0c;并简单说明了nginx的集中负载分担模式 简介&#xff1a; nginx可以通过反向代理功能对后端服务器实现负载均衡功能 keepalived 是一种高可用集群选举软件 keepalived架构 分为三个模块&#xff1a; 1、keepalived core …

OSS上传pdf无法解析的问题

之前遇到了oss上传pdf之后无法解析的问题&#xff0c;后来发现是在传入size的时候&#xff0c;取得是inputStream.available()这个方法&#xff0c;根据方法描述&#xff0c;它获取的是一个大概的值&#xff0c;并不准确&#xff0c;因此不能用这个方法&#xff0c;因为我是用的…

消息队列(MQ)

对于 MQ 来说&#xff0c;不管是 RocketMQ、Kafka 还是其他消息队列&#xff0c;它们的本质都是&#xff1a;一发一存一消费。下面我们以这个本质作为根&#xff0c;一起由浅入深地聊聊 MQ。 01 从 MQ 的本质说起 将 MQ 掰开了揉碎了来看&#xff0c;都是「一发一存一消费」&…

arthas一次操作实现递归分析下游方法的耗时

背景 使用arthas的trace分析方法的耗时时&#xff0c;我们一般只能分析下一层的方法的耗时&#xff0c;然后一层一层的递归进去找到耗时最长的那个方法&#xff0c;有没有一种方式可以一次trace分析就可以把所有要关注的下层所有的耗时都打印出来&#xff1f; 解决方式 使用…

vue的slot插槽详解

目录 一、基本用法 在上面的例子中&#xff0c;我们在子组件中定义了一个插槽&#xff0c;然后在父组件中使用标签&#xff0c;并在标签内部放置了一个 标签作为插槽的内容。当父组件被渲染时&#xff0c;插槽的内容将被替换为实际传入的内容。 二、具名插槽 在上面的例子…

CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

CleanMyMac X您的 Mac。极速如新。点按一下&#xff0c;即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下&#xff0c;即可运行所有任务&#xff0c;让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…

qml入门教程(25):qml Window最大化最小化全屏状态

作者:令狐掌门 技术交流QQ群:675120140 博客地址:https://mingshiqiang.blog.csdn.net/ QtQuick qml入门系列教程专栏地址:https://mingshiqiang.blog.csdn.net/category_9951228.html QtQuick qml入门系列教程专栏地址:https://mingshiqiang.blog.csdn.net/category_995…

一篇文章了解Flutter Json系列化和反序列化

目录 一. 使用dart:convert实现JSON格式编解码1. 生成数据模型类2. 将JSON数据转化成数据模型类3. 数据模型类转化成JSON字符串 二、借助json_serializable实现Json编解码1.添加json_annotation、build_runner、json_serializable依赖2. 创建一个数据模型类3. 使用命令行生成JS…

【科研论文】检索证明、科技查新、查收查引(附教育部、科技部查新工作站名单)

文章目录 1、什么是科技查新 & 查收查引2、科技查新 & 查收查引有什么用3、如何办理科技查新 & 查收查引4、教育部科技查新工作站5、科技部认定的查新机构名单 1、什么是科技查新 & 查收查引 科技查新是国家科技部为避免科研课题重复立项和客观正确地判别科研…

STM32 寄存器配置笔记——USART DMA接收

一、简介 本文主要介绍STM32如何配合USART的IDLE中断实现USART DMA接收不定长的数据。其中使用的接收缓存还是延用前面博客写的乒乓缓存。使用DMA USART接收来替代中断方式或轮询方式的接收主要是为了提高代码的运行效率&#xff0c;中断方式的接收&#xff0c;每接收一个字节便…

第一次使用ThreadPoolExecutor处理业务

通过对业务逻辑的分析&#xff0c;进行编码&#xff0c;先把第一条sql查出来的数据进行分组&#xff0c;然后分别使用不同的线程去查询数据返回&#xff0c;并添加到原来的数据中。 总感觉哪里写的不对&#xff0c;但是同事们都没用过这个&#xff0c;请大家指教一下&#xff…

5G边缘网关如何助力打造隧道巡检机器人

我国已建成全世界里程最长的公路网、铁路网&#xff0c;是国民经济发展与国家现代化的重要支撑。我国幅员辽阔&#xff0c;地理环境复杂&#xff0c;公路/铁路的延伸也伴随着许多隧道的建设&#xff0c;由于隧道所穿越山体的地质条件复杂&#xff0c;对于隧道的监测、管理与养护…

芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集训练出来的模型

💡该教程为改进RT-DETR指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可💡更方便的统计更多实验数据,方便写作 芒果RT-DETR改进实验:深度集成版目标检测 RT-DETR 热力图来了!支持自定义数据集…

STM32在CTF中的应用和快速解题

题目给的是bin文件&#xff0c;基本上就是需要我们手动修复的固件逆向。 如果给的是hex文件&#xff0c;我们可能需要使用MKD进行动态调试 主要还是以做题为目的 详细的可以去看文档&#xff1a;https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/STMICROELECTRONIC…

Crow:基于req.rul查找路由Rule对象及匹配参数

Crow::run()会调用Crow::validate(),而后者会调用router_.validate(); void validate() {//Take all the routes from the registered blueprints and add them to `all_rules_` to be processed.detail::middleware_indices blueprint_mw;validate_bp(blueprints_, blueprin…

五、Java核心数组篇

1.数组 概念&#xff1a; ​ 指的是一种容器&#xff0c;可以同来存储同种数据类型的多个值。 ​ 但是数组容器在存储数据的时候&#xff0c;需要结合隐式转换考虑。 比如&#xff1a; ​ 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的&…

23.Java程序设计--基于SSM框架的移动端家庭客栈管理系统的设计与实现

第一章&#xff1a;引言 1.1 背景 客栈业务背景移动端应用需求增长趋势 1.2 研究动机 移动端管理系统的需求SSM框架的选择和优势 1.3 研究目的与意义 提高家庭客栈管理效率移动端解决方案的创新 第二章&#xff1a;相关技术和理论综述 2.1 SSM框架简介 Spring框架Spri…

如何在Go中使用Flag包

引言 命令行实用工具很少能在没有额外配置的情况下开箱即用。好的默认值很重要,但有用的工具需要接受用户的配置。在大多数平台上,命令行实用程序接受标志来定制命令的执行。标志是添加在命令名称之后的键值分隔的字符串。Go允许你使用标准库中的flag包来构建接受标志的命令…

swagger的ApiModelProperty设置字段的顺序

需求 让前端可以直接通过swagger就能知道各个字段是什么意思 如何配置 比如&#xff0c;我们设置了ApiModelProperty ApiModelProperty("用户主键")private Long userId;在swagger页面能直接看到注释 但是这个顺序是按照字母排序的&#xff0c;明显不符合我们的要…

在IDEA中使用Git 、远程仓库克隆工程到本地

4.1 在IDEA中配置Git 安装好IntelliJ IDEA后&#xff0c;如果Git安装在默认路径下&#xff0c;那么idea会自动找到git的位置&#xff0c;如果更改了Git的安装位置则需要手动配置下Git的路径。 选择File→Settings打开设置窗口&#xff0c;找到Version Control下的git选项&…