vue-router

原理

当前Vue项目一般都是单页面应用,也就是说vue-router是应用在单页面中的。

单页面应用:第一次进入页时候会请求一个html文件,当切换到其他组件的时候,路径也发生了相应的变化,但是并没有新的html文件请求额,页面内容却也发生了变化。

原理:JS可以感知到URL的变化,通过这一点可以用js动态的将当前页面的内容清除掉,然后将下一个页面的内容挂载在当前页面上。这个时候的路由不是由后端来做的,而是前端来做的,判断页面到底要显示哪个组件,然后清除掉不需要的,显示需要的组件,这个过程就是单页面应用,每次跳转的时候不再需要请求html文件了。

多页面应用:每一次页面跳转的时候,后台服务器都会返回一个新的html文档,这种类型的网站就是多页网站,也就是多页应用。

原理:传统的页面应用,使用一些超链接来实现页面切换和跳转的。

vue-router实现原理:更新视图但是不重新请求页面

vue-router常用的由有两种方式,hash模式和history模式

hash模式:使用url hash值来做路由,是默认模式

history模式:依赖html5 的historyAPI

hash模式:hash即浏览器URL中#后面的内容,相当于锚点,代表的是网页中的一个位置,单单改变#后面的部分,浏览器就会加载相应位置的内容,不会重新加载页面。hash模式通过锚点值的改变,根据不同的值来渲染指定DOM位置的不同数据。

history模式:利用history.pushStatehistory.replace API来完成url跳转而无需重新加载页面。

路由守卫

这些导航守卫其实都是一个个的钩子函数,每一个钩子函数除了afterEach之外,都有三个参数,分别是to,from,next。其中to和from是两个对象,中间包含了路由跳转前后的路径,next是一个函数,可以写一个路径,用来进行跳转

全局导航守卫

beforeEach

beforeResolve

afterEach

路由独享守卫

beforeEnter

组件私有守卫

beforeRouterEnter

beforeRouterLeave

路由传参

使用查询字符串

如果在路由中使用查询字符串给路由传递参数时,不需要修改路由规则的path属性。使用查询字符串传参的形式是:<router-link to='/path?id=10'></router-link>通过这种方式传递参数的时候,在相对于的组件中调用$route.query使用键就可以得到相应的参数

使用$route.params来传递参数

<router-link to='/login/12/ls'></router-link>

注意:使用这种方式,需要修改路由规则中的path属性,在此例中就要修改为{path:"/login/:id/:name",component:login}这种规则是严格匹配的。如果to后面的属性不能完全匹配规则,就不会执行相应的规则进行路由跳转。


  转载请注明: TomoFur vue-router

 上一篇
git学习笔记 git学习笔记
初始化一个git仓库:git init 添加文件到代码仓库,分两步: 使用命令git add 文件名 —–>把文件修改添加到暂存区 使用命令git commit -m 提示消息 —->把暂存区所有内容提交到当前分支 要随
下一篇 
可以继承的css属性 可以继承的css属性
字体系列属性 font, font-style, font-weight, font-size , font-family, line-hegiht 文本系列属性: color letter-sapcing lext-align t
2019-08-30
  目录