三种:全局守卫,路由独享守卫,路由组件内的守卫
1、全局守卫:
分为三种,1、进入路由之前的--router.beforeEach全局前置守卫。2、在beforeRouterEach调用之后调用--router.beforeResolve全局解析守卫。3、进入路由之后--router.afterEach 全局后置钩子。
方法:
2、路由独享守卫
在路由的配置上直接进行配置beforeEnter 守卫
方法:
3.路由组件内的守卫
1、beforeRouteEnter 进入路由前,在路由独享守卫后调用,不能获得组件,实例this,组件实例还没被创建。
2、beforeRouteUpdate(2.2)路由复用同一个组件时,在当前路由改变,但是该组件被复用时调用,可以访问组件实例this
3、beforeRouteLeave 离开当前路由时,导航离开该组件的对应路由时调用,可以访问组价实例this
vue路由的实现由两种模式:hash模式跟history模式
hash模式
浏览器地址栏中url后的"#"符号。如:https://www.jianshu.com/writer#/notebooks/41210787/notes/57369801 hash的值就是#/notebooks/41210787/notes/57369801(也就是#符号后的所有)。特点:hash虽然在url中但是不被包括在HTTP请求中,所以没有做到对路由的全部覆盖所以不会出现404错误。对服务器安全无用,并且不会重新加载页面。
history模式:
是h5的新特性,并且提供了两种方法;pushState(),replaceState()在浏览器的历史记录中使用,可以进行修改历史记录,当修改时虽然改变了当前的url但是并不会向后端发起请求,在history模式下,前端的url必须跟实际向后端发起的url全完相同,如果不同的话就会返回一个404错误。
Vuex是什么?
Vuex是一个仓库,仓库里边存放着对象,其中state就是数据源存放的地方,类似于Vue对象里边的data,state是存放的是响应式的数据,vue组件从state里边读取数据,如果state里边的数据发生了改变,那么,依赖于相对应的数据的组件也会进行更新。
vuex一般用于中大型的项目中,对应用的状态进行管理
一共有五种属性。
1、state 是一个单一的状态树,定义变量的储存
2、mutations:定义的是一个库,所定义的方法可以动态的修改state里边的状态或者数据。使用方法为$store.commit('库名',传的数据)
3、getters:是一种过滤属性,主要用来过滤一些数据。
4、action:将mutations里边处理数据的方法变成可异步的处理数据的方法。也就是异步操作数据。
5、module:store的子模块,为了开发大型项目,方便状态管理而使用的。