vue-router原理
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
- 路由守卫钩子函数里面的三个参数分别是什么?
to,from,next 这三个参数:
to和from是将要进入和将要离开的路由对象,路由对象指的是平时通过this.$route获取到的路由对象。
next:Function 这个参数是个函数,且必须调用,否则不能进入路由(页面空白)。
next() 进入该路由。
next(false): 取消进入路由,url地址重置为from路由地址(也就是将要离开的路由地址)。 next 跳转新路由,当前的导航被中断,重新开始一个新的导航。
vue-router原理相关推荐
- Vue Router 原理分析与实现
陈丹青:看过的东西走过的路,还有你所经历的一切,都会经历一个开眼界的过程. 但眼界开了并不是一件好事情,反而顿悟之后从此你就会知道,你在社会之中是完全没有位置可言的.我算个屁,什么事都有人做过,都有人 ...
- Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)
文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...
- 你可能不清楚的 Vue Router 深度用法(一)
Vue Router 简单易上手,能实现大部分的需求.但是,如果在项目里需要更细致的控制路由,以实现与其同步的效果,就需要挖掘其文档里没详细提及的内容.第一章为路由元信息用途挖掘. 路由元信息用途 ( ...
- vue router name命名规范_vue-router使用
vue-router基本用法 vue-router的实现原理: 路由不同的页面也就是加载不同的组件. 路由的三个基本概念: router:它是一条路由,test按钮 => test内容,这是一条 ...
- 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“
vue-router4动态加载的模式下,当我们在当前页面刷新浏览器时,会出现一个警告 [Vue Router warn]: No match found for location with path ...
- Vue学习笔记(六)--- 前端路由 Vue Router
一.路由 1.概念 路由本质上来说就是一种对应关系,比如说我们在浏览器中输入不同的 url 地址,我们就能访问不同的资源,那么这 url 地址与资源之间的对应关系,就是路由. 2.分类 ① 后端路 ...
- vue这些原理你都知道吗?(面试版)
前言 在之前面试的时候我自己也经常会遇到一些vue原理的问题, 我也总结了下自己的经常的用到的,方便自己学习,今天也给大家分享出来, 欢迎大家一起学习交流, 有更好的方法欢迎评论区指出, 后序我也将持 ...
- 面试考问Vue Router 的路由模式,这个回答令我直接出局!
HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...
- 你真的理解 Vue Router 的路由模式吗?
HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...
- 面试考问Vue Router 的路由模式,这个回答令我直接出局~
HR力荐了一个工作 4 年,目前年薪 40W+ 的候选人. 看他简历,从 HTML,CSS,JavaScript ,Vue.js ,再到React 一个都不缺,跨平台PC.移动端.小程序也都接触过,像 ...
最新文章
- 吴裕雄--天生自然 高等数学学习:无穷级数
- java oop_Java实现OOP(面向对象编程)
- lixuxmint系统定制与配置(4)-应用安装
- 使用JScript设置SVN客户端hook
- 微信机器人红包java_微信机器人_奇迹蛋_java实现
- 列表解析python_Python 列表解析
- deepin10安装docker、docker-compose
- java textfield方法,Java TextField求教育
- Hadoop集群常用命令
- ASP.NET登录状态保持 并 设置IE cookie
- python中的颜色及其编码
- 前端技术-HTML5与CSS
- LTE入门之UE-Category
- ABO血型系统遗传规律表
- Django新手十个开发指导
- php窗帘excel,各种办公室窗帘的用途及优缺点 办公窗帘安装讲
- html表白程序源码_表白程序源码html_程序员表白代码html
- (Note)HTTP常见状态码(Status Code)
- 地层破裂压力预测方法
- 大数据系统的学习路径、思维导图
热门文章
- bzoj3118 Orz the MST(单纯形)
- 应变.破局2022,合众致达逐梦.无惧
- php curl返回结果乱码,curl获取结果乱码的解决方法
- 集成灶怎么选,市面上值得推荐的高性价比且质量好的集成灶甄选
- html5模板是什么意思,HTML5中template标签有什么用
- Android 圆形头像/有外边框的圆形头像CircleImageView自定义控件使用详解
- 支付宝当面付扫码支付支付后不回调_对接支付宝当面付进行电脑网站和手机网站收款教程...
- 你不知道的五险一金秘密
- 在photoshop中如何设置一张a4纸上打印多个照片,如小二寸图片排版
- 硕士毕业论文撰写记事