路由

一、路由模式

1. Hash 模式

2. History 模式

3. abstract 模式

二、路由守卫

1. 全局守卫

​ 路由的改变会触发导航守卫,所有路由都生效,可以进行路由权限处理。

1. 全局前置守卫
	const router = new VueRouter({ ... })
	router.beforeEach((to, from, next) => {
	    // 设置动态title         
	    // 根据我们在每一个路由映射对象中设置的meta元数据 来进行一个动态title的显示
	       document.title = to.matched[0].meta.title
	    // 如果我们对beforeEach进行自定义设置 必须要调用next() 
		    next()
		})
2. 全局后置守卫
	const router = new VueRouter({ ... }) 
	router.afterEach((to, from) => { // ... })

2. 路由独享守卫

​ 可以在路由配置上直接定义 beforeEnter 守卫。单独控制某一条路由

const router = new VueRouter({ 
		routes: [ 
		  { 
		    path: '/foo', 
		    component: Foo, 
		    beforeEnter: (to, from, next) => {} 
		  } 
		] 
	}) 

3. 组件内守卫

三、路由方法

  1. resolve

    router.resolve 和 $router.push 都可以进行页面的跳转

router.resolve 可以在传递参数的时候打开新的窗口,它会返回一个跳转路由对象,里面报错一些参数:

window.open(urlHref, '_blank'); // urlHref 为返回的 href 字符串