vue 和路由有关的所有问题
本博客会总结所有vue中和路由有关的问题,路由监控,权限,历史等
首先是路由最基础的问题:路由跳转
1、router-link
在vue2.0中
使用
<router-link>组件支持用户在具有路由功能的应用中点击导航。通过to属性指定目标地址,默认渲染为带有正确连接的<a>标签,可以通过配置tag属性生成别的标签。另外,当目标路由成功激活时,链接元素自动设置一个表示激活的css类名
以上这一句话个人目前还不是很懂,对于router-link的理解就是页面的跳转
<router-link>组件的属性有:
to 、replace、 append、 tag、 active-class、 exact 、 event、 exact-active-class
1.to
to(必选参数)::类型string/location
表示目标路由的链接,该值可以是一个字符串,也可以是动态绑定的描述目标位置的对象
<router-link :to="{ path: '/home' }">Home</router-link>
    <router-link to='/goods/title'>显示商品标题</router-link>
/*
这个路径就是路由中配置的路径
*/
<router-link :to="{ name: 'User'}">User</router-link>
/*
  在路由的配置的时候,添加一个name属性,例如:
 routes: [
    {
      path:'/home',
      name:'User',
      component:home
    }
]
2.tag
类型: string 默认值: "a"
如果想要 
  <router-link :to="'index'"
               tag="li"
               event="mouseover">Home
  </router-link>
如果此时我们想要在这个li标签中添加a标签,如下所示,可以不为a标签添加href属性即可哦
    <router-link :to="{name:'Home'}" tag="li">
    <a>Home</a>
    </router-link>
目前对于激活时的css类名不是非常理解
3.active-class
类型: string 默认值: "router-link-active"
设置 链接激活时使用的 CSS 类名。默认值可以通过路由的构造选项 linkActiveClass 来全局配置。
这个目前没有使用过,不清楚其在实际编码过程中的使用方法,下面也介绍一些,比较实用的属性
4、event
类型: string | Array
声明可以用来触发导航的事件。可以是一个字符串。事件可以非常多样,鼠标移入,双击等
<router-link to="/document" event="mouseover">document</router-link>
如果我们不加event,那么默认情况下是当我们点击document的时候,跳转到相应的页面,但当我们加上event的时候,就可以改变触发导航的事件,比如鼠标移入事件
5、replace
类型: boolean 默认值: false
设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。
$router.push({path:'home'});本质是向history栈中添加一个路由,在我们看来是切换路由,但本质是在添加一个history记录
$router.replace({path:'home'});替换路由,没有历史记录,点击返回,会跳转到上上一个页面
导航的hisrory相当于一个队列,this.$router.go(-2)   //后退两步,  @click="$router.back(-1)"等
6、append
类型: boolean 默认值: false
设置 append 属性后,则在当前 (相对) 路径前添加基路径
- 例如,我们从 /a导航到一个相对路径b,如果没有配置append,则路径为/b,如果配了,则为/a/b
<router-link :to="{ path: 'relative/path'}" append></router-link>
a、商品列表页面如下(点击'跳转到购物车页面'就会跳到一个新的页面,而不是在同一个页面加载一个组件)
    jump(){
    //this.$router.push("/cart")
    //传递的参数用{{ $route.query.goodsId }}获取
    this.$router.push({path: '/cart?goodsId=12'})
    //this.$router.go(-2)
    //后退两步
    //this.$router.go(0) 刷新页面
    }
b、通过
import Vue from 'vue'
import Router from 'vue-router'
import GoodsList from '@/views/GoodsList'
import Title from '@/views/Title'
import Image from '@/views/Image'
// 2、导入Cart组件
import Cart from '@/views/Cart'
Vue.use(Router)
export default new Router({
  mode: 'history',
  routes: [
    {
      	path: '/goods',
      	name: 'GoodsList',
      	component: GoodsList,
      	children: [
      		{
      	  		path: 'title',
          		name: 'title',
          		component:Title	
      		},
      		{
      	  		path: 'image',
          		name: 'image',
          		component:Image	
      		}
      	]
    },
    // 1、写入购物车组件
    {
    	path: '/cart',
      	component: Cart,
    }
  ]
}) ````
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号