vue-router

  • 一、vue-router路由原理?
  • 二、两种路由模式
    • 1.hash模式:
    • 2.history模式
      • 路由跳转方式

一、vue-router路由原理?

1.路由就是用来解析URL实现不同页面之间的跳转

vue-router通过hash与History interface两种方式实现前端路由,更新视图但不重新请求页面”是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有两种方式

const routes = [{path: '/',redirect: '/recommend'},{path: '/recommend',component: () => import('../components/recommend/view.vue')},{path: '/singer',component: () => import('../components/singer/view.vue')},{path: '/rank',component: () => import('../components/rank/view.vue')},{path: '/search',component: () => import('../components/search/view.vue')}
]
export default routes

安装:

1 .安装npm install vue-router --save
2 .main.js中
//Vue路由:引入
import VueRouter from 'vue-router'
Vue.use(VueRouter)

二、两种路由模式

1.hash模式:

在浏览器中符号的“#”,以及#后面的字符称之为hash,用window.location.hash读取;
特点:
hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,
hash不会重加载页面。
hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。

import Vue from 'vue'
import Router from 'vue-router'
import routes from './routes'Vue.use(Router)export default new Router({// mode: 'history',routes
})

2.history模式

history采用HTML5的新特性;且提供了两个新方法:pushState(),
replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。
特点:
history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,如 地址后加上/items/id。后端如果缺少对 /items/id 的路由处理,将返回 404 错误。

这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

const router = new VueRouter({mode: 'history',routes: [...]
})

路由跳转方式

第一种跳转方式:编程式导航

{path: '/news', component: BYNews},
this.$router.push({path:'news'});
带参:
{path: '/newDetail/:aid', component: BYNewDetail},
this.$router.push({path:'/newDetail/495'});

第二种跳转方式:命名路由

{path: '/news', component: BYNews,name:'news'},this.$router.push({name:'news'});带参:this.$router.push({name:'news',params:{userId:123}});

如何传参:
分别是query,params,动态路由传参
接收:
通过query方式传递过来的参数一般是通过

this.$route.query

接收
通过params方式传递过来的参数一般是通过this.$route.params接收
通过动态路由传参方式传递过来的参数一般是通过this.$route.params接收

query使用path和name传参跳转都可以,而params只能使用name传参跳转。

传参跳转页面时,query不需要再路由上配参数就能在新的页面获取到参数,params也可以不用配,但是params不在路由配参数的话,当用户刷新当前页面的时候,参数就会消失。
也就是说使用params不在路由配参数跳转,只有第一次进入页面参数有效,刷新页面参数就会消失。

路由守卫:
2.路由守卫使用的方式有几种? 全局的 单个路由独享的 组件级的
3.vue-router全局有三个守卫:

router.beforeEach 全局前置守卫 进入路由之前
router.beforeResolve 全局解析守卫(2.5.0+) 在beforeRouteEnter调用之后调用 router.afterEach 全局后置钩子 进入路由之后 ,
组件内的守卫:
beforeRouteEnter
beforeRouteUpdata(2.2新增)
beforeRouteLeave

  1. 路由守卫钩子函数里面的三个参数分别是什么?
    to,from,next 这三个参数:
    to和from是将要进入和将要离开的路由对象,路由对象指的是平时通过this.$route获取到的路由对象。
    next:Function 这个参数是个函数,且必须调用,否则不能进入路由(页面空白)。
    next() 进入该路由。
    next(false): 取消进入路由,url地址重置为from路由地址(也就是将要离开的路由地址)。 next 跳转新路由,当前的导航被中断,重新开始一个新的导航。

vue-router原理相关推荐

  1. Vue Router 原理分析与实现

    陈丹青:看过的东西走过的路,还有你所经历的一切,都会经历一个开眼界的过程. 但眼界开了并不是一件好事情,反而顿悟之后从此你就会知道,你在社会之中是完全没有位置可言的.我算个屁,什么事都有人做过,都有人 ...

  2. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  3. 你可能不清楚的 Vue Router 深度用法(一)

    Vue Router 简单易上手,能实现大部分的需求.但是,如果在项目里需要更细致的控制路由,以实现与其同步的效果,就需要挖掘其文档里没详细提及的内容.第一章为路由元信息用途挖掘. 路由元信息用途 ( ...

  4. vue router name命名规范_vue-router使用

    vue-router基本用法 vue-router的实现原理: 路由不同的页面也就是加载不同的组件. 路由的三个基本概念: router:它是一条路由,test按钮 => test内容,这是一条 ...

  5. 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“

    vue-router4动态加载的模式下,当我们在当前页面刷新浏览器时,会出现一个警告 [Vue Router warn]: No match found for location with path ...

  6. Vue学习笔记(六)--- 前端路由 Vue Router

    一.路由 1.概念 ​ 路由本质上来说就是一种对应关系,比如说我们在浏览器中输入不同的 url 地址,我们就能访问不同的资源,那么这 url 地址与资源之间的对应关系,就是路由. 2.分类 ① 后端路 ...

  7. vue这些原理你都知道吗?(面试版)

    前言 在之前面试的时候我自己也经常会遇到一些vue原理的问题, 我也总结了下自己的经常的用到的,方便自己学习,今天也给大家分享出来, 欢迎大家一起学习交流, 有更好的方法欢迎评论区指出, 后序我也将持 ...

  8. 面试考问Vue Router 的路由模式,这个回答令我直接出局!

    HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...

  9. 你真的理解 Vue Router 的路由模式吗?

    HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...

  10. 面试考问Vue Router 的路由模式,这个回答令我直接出局~

    HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...

最新文章

  1. 吴裕雄--天生自然 高等数学学习:无穷级数
  2. java oop_Java实现OOP(面向对象编程)
  3. lixuxmint系统定制与配置(4)-应用安装
  4. 使用JScript设置SVN客户端hook
  5. 微信机器人红包java_微信机器人_奇迹蛋_java实现
  6. 列表解析python_Python 列表解析
  7. deepin10安装docker、docker-compose
  8. java textfield方法,Java TextField求教育
  9. Hadoop集群常用命令
  10. ASP.NET登录状态保持 并 设置IE cookie
  11. python中的颜色及其编码
  12. 前端技术-HTML5与CSS
  13. LTE入门之UE-Category
  14. ABO血型系统遗传规律表
  15. Django新手十个开发指导
  16. php窗帘excel,各种办公室窗帘的用途及优缺点 办公窗帘安装讲
  17. html表白程序源码_表白程序源码html_程序员表白代码html
  18. (Note)HTTP常见状态码(Status Code)
  19. 地层破裂压力预测方法
  20. 大数据系统的学习路径、思维导图

热门文章

  1. bzoj3118 Orz the MST(单纯形)
  2. 应变.破局2022,合众致达逐梦.无惧
  3. php curl返回结果乱码,curl获取结果乱码的解决方法
  4. 集成灶怎么选,市面上值得推荐的高性价比且质量好的集成灶甄选
  5. html5模板是什么意思,HTML5中template标签有什么用
  6. Android 圆形头像/有外边框的圆形头像CircleImageView自定义控件使用详解
  7. 支付宝当面付扫码支付支付后不回调_对接支付宝当面付进行电脑网站和手机网站收款教程...
  8. 你不知道的五险一金秘密
  9. 在photoshop中如何设置一张a4纸上打印多个照片,如小二寸图片排版
  10. 硕士毕业论文撰写记事