当前位置:首页 > 技术分析 > 正文内容

Vue Router模拟多页面效果_vue router mode history

ruisui883个月前 (02-13)技术分析12

我们都知道,在以前想要写多页面的时候,一般都会创建多个html,比如我们需要十个页面,就要创建十个html,然后通过标签来进行跳转,这样子很难达到复用,比如我们的页面头部都是同一个头部,如果运用原生JS来写,那不得每个html都写一份头部???太麻烦了, 复制粘贴都会累死人。

而Vue是一款轻量级、高性能的前端框架,专为构建单页面应用而设计。而单页面应用的核心优势在于能够提供平滑的用户体验,无需每次页面跳转都重新加载整个页面,仅需局部刷新或替换视图组件即可。然而,为了实现这种无缝的页面跳转和视图管理,我们需要一个强大的路由管理系统——Vue Router。而这个强大的路由管理系统巧妙的将我们的单页面变成了一个“多页面”,但却不是真正的多页面,根据前面的学习,我们都知道我们写的组件里的代码最终都会挂载在根节点app上,然后才回去展示,那么说白了还是单页面,只是在我们点击跳转页面的时候,将之前的那段代码剔除掉,拿出我们需要展示的代码挂载在根节点上去展示出来,而这就是我们Vue Router所需要做的。

Vue Router简介及配置

vue-router是Vue.js框架的官方路由管理器,专门设计用于构建单页面应用(Single Page Applications,SPA)。在单页面应用中,多个“页面”或视图共享同一个HTML文档,路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。当用户在应用中浏览不同页面时,URL 会随之更新,但页面不需要从服务器重新加载。简单来说,就是当我们去到不同的URL路径中时,展示不同的代码片段,或者说展示不同的vue组件。模拟当url改变时,切换显示不同的组件,实现成多页的效果,只是模拟成多页的效果。

这样我们就可以调用vue-router里面的router-link和router-view了。

简单实现一下

做个简单的框架来看看效果:

  1. 创建一个views文件夹,里存放一些组件,用来展示

  2. 然后在根组件App中写入下面这些代码看看

  3. 配置好相关的路由规则:(当你点击首页时,他的to与路由中的path命中,只要命中就会在 所在的位置(页面或者说组件里)显示出来,而此时页面上的导航栏就会在后面加上/home)
  4. js
  5. 代码解读
  6. 复制代码
  7. import { createRouter ,createWebHistory} from "vue-router"; import Home from '../views/Home.vue'; const routes =[ { path:'/home', component:Home } ] const router = createRouter({ history: createWebHistory(), // routes : routes 可以省略 routes }) export default router

4.在Home.vue文件中写入

home page

,看看能不能出来

  1. OK,再将其他的路由配置完:(这里采用另外一个组件的加载方式--组件的懒加载,效果是一模一样的,只有当你点击要去到该url中的时候才会加载出来,可以让初始页面更快地加载出来)

  2. 出来的效果肯定也是一样的。然而现在要在Home.vue 中整个按钮,要求点击这个按钮我就可以去到hot页面,那我们就要创建个点击事件咯,然后跳转到/hot这个url的页面来看看怎么实现的吧

  3. 创建一个按钮,并且绑定点击事件,调用vue-router库中的useRouter的方法,用Router对Vue Router实例的进行引用,在定义了一个箭头函数goHot,用于处理点击按钮后的逻辑。函数内部先使用console.log(router);记录router对象,可以看到里面有个push的方法可以让我们跳转到指定页面,当然你会发现还有一个方法resolve也可以,不过这俩个还是有点区别的,官方不可能创建俩个一样的功能的方法:push是用于直接跳转到一个路由,它会在浏览器的历史堆栈中添加一个新的记录,点击后退按钮会回到前一个路由。但是resolve用于获取一个路由的完整信息,包括 URL,将这个路由替换掉之前的路由,点击后退按钮不会回到前一个路由,会提留在当前路由。不过一般我们都是用push
  4. 这样子我们也可以实现跳转:

所以,我们就有两种路由跳转的方式:

  1. 使用router-link进行跳转
  2. 使用router.push() 进行跳转,这是编程式路由跳转

参数传递

在 Vue Router 中,我们可以向路由传递参数,有两种主要的方式:

  1. Query 参数:这类似于 URL 后面的查询字符串,可以通过 query 对象传递。
  2. 传递:
  3. Javascript
  4. 代码解读
  5. 复制代码
  6. router.push({path: '/hot', query: {id: '123'}});
  7. 接收:
  8. Javascript
  9. 代码解读
  10. 复制代码
  11. console.log($route.query.id);
  12. Params 参数:这是在路由路径中定义的参数,需要在定义路由时指定。
  13. 传递:
  14. Javascript
  15. 代码解读
  16. 复制代码
  17. router.push({name: 'hot', params: {id: '123'}});
  18. 这里我们需要将配置路由修改一下:
  19. Javascript
  20. 代码解读
  21. 复制代码
  22. { path: '/hot/:id', name: 'hot', component: () => import('../views/Hot.vue'), props: true }
  23. 接收:
  24. Javascript
  25. 代码解读
  26. 复制代码
  27. console.log($route.params.id);
  28. 或者通过 defineProps函数:
  29. Javascript
  30. 代码解读
  31. 复制代码
  32. const props = defineProps({ id: String, }); console.log(props.id);

通过修改我们可以得到以下结果:

写在最后

Vue Router 是 Vue.js 官方的路由管理器,用于在单页面应用中实现多页面体验。它通过局部刷新或替换视图组件,避免了每次页面跳转时重新加载整个页面,从而提升了用户体验。下一步,我将使用这些基础知识,去构建一个简单的登录系统,实操一下,在编译过程中继续学习

ps:可以去vue Router官方文档进行学习哦:Vue Router


原文链接:
https://juejin.cn/post/7389049604631330843

标签: vue路由权限
分享给朋友:

“Vue Router模拟多页面效果_vue router mode history” 的相关文章

几个linux发行版使用感受

linux发行版有哪些linux发行版有上千种,但每一种发行版并不是与其它的发行版没任何关系,有些发行版是基于其他发行版制作的。如果乐意,你自己也可以动手制作属于自己的发行版,然后分发给其他人使用,所以非常自由,可选择的非常多。常见的发行版有:RedHat、Ubuntu、OpenSUSE、Gento...

10个实例小练习,快速入门熟练 Vue3 核心新特性(一)

作者:xuying 全栈修炼转发链接:https://mp.weixin.qq.com/s/_n2seDbbiO5hXQfuUGbUCQ前言Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了。本篇文章总共分两部分,望小伙伴们认真阅读。下一篇:10...

代码分支规范

一.gitflow工作流说明:主分支:master,稳定版本代码分支,对外可以随时编译发布的分支,不允许直接Push代码,只能请求合并(pull request),且只接受hotfix、release分支的代码合并。gitlab上做限制。热修复分支:hotfix,针对现场紧急问题、bug修复的代码分...

面试被逼疯:聊聊Python Import System?

面试官一个小时逼疯面试者:聊聊Python Import System?对于每一位Python开发者来说,import这个关键字是再熟悉不过了,无论是我们引用官方库还是三方库,都可以通过import xxx的形式来导入。可能很多人认为这只是Python的一个最基础的常识之一,似乎没有可以扩展的点了,...

10款超牛Vim插件,爱不释手了

我是一个忠实的Vim编辑器用户,从事开发工作多年,我一直都非常喜欢使用Vim。轻量、便捷,而且,熟悉了Vim相关的快捷键之后,效率能够成倍的提升。除了这些之外,Vim像很多知名的IDE、编辑器一样,也支持插件配置,通过这些插件,可以实现更多高级、高效的操作。今天,就来给大家分享10个我特别喜欢的Vi...

Solid State Logic 发布低保真数字失真插件 Digicrush

Solid State Logic 宣布推出低保真数字失真插件 Digicrush ,他们最新的创意工具具有经典数字失真的粗糙、低保真特性,完美模拟早期数字音频的衰减和伪影。Digicrush 充满怀旧气息,深受经典数字采样器和效果器的影响,具有内置抖动、可调比特深度和采样率降低功能,是为音轨添加复...