vue-Router笔记

前端路由 (vue.router)

首先要了解一下

HTML5中想要不刷新网页,更换页面内容有两种模式

hash模式 和 history模式

hash模式时,url跳转时后面会有一个#号,然后不太美观,所以我们通常选择history

location.hash = url (压入栈堆----->后进先出)

history.pushState(data,title,url) (压入栈堆----->后进先出)

history.replaceState(data,title,url) 不压入栈堆,替换url

history.back() ==history.go(-1) 后退一下网页

history.forward() ==history.go(1) 前进一个网页

history.go(2) 前进两个网页

history.go(-2) 后退两个网页

 

Vue.use(VueRouter)   使用VueRouter插件,在这之前要导入这个插件

new VueRouter({})        创建一个VueRouter对象实例

里面有一些常用属性:

mode:绑定是hash或者history两种模式

routes:映射列表(值为一个对象数组)

routes映射列表

{

    path:'/user/:userId',   //添加事需要在user后加 /:userId

    name:"User",            //名字

    component: User        //挂载的组件

}

如果想要配置一个显示的默认路径.我们可以在routes中添加一个映射

{

    path: '/',    

    redirect: '/home'  

}

当url中的hash为空的时候,就是刚进来这个网址,为空,就把url定义为redirect所指定的路径. (redirect重定向)

 

配置好组件,我们就该学习如何去使用组件:

组件<router-link>

<router-link to='/home' tag=' 标签名' replace active-class='类名'>

to:用于指定跳转的路径

tag:用于指定之后渲染成什么组件,默认是一个a标签

replace:不会留下history的记录,指定了replace,后退键则不能返回上一个页面

active-class: 对应的路由匹配成功是,会自动给当前元素设置一个router-link-active的class,通过active-class可以修改默认的名称,这个也可以在router文件下的index.js中router对象实例中通过linkActiveClass:类名 进行设置

tip:1.在进行亮度显示的导航菜单或者底部的tabbar时,会使用到该类

2.但是通常不会修改类的属性,会直接使用默认的router-link-active

组件<router-view>

占位 渲染某一个组件时,在这个位置进行展示

 

路由由代码跳转,我们则需要在Vue.app中添加单击事件,绑定事件进行跳转

关键代码,router每一个组件中都会有

this.$router.push('/home')

this,$router.push('/about')

 

当我们想要点击用户的时候,url想要成为一下的形式

localhost:8080/user/zhangsan

 

添加组件router-link to属性输入路径,默认是一个a标签

<router-link :to="'/user/'+userId">用户</router-link>

 date数据:  userId:"zhangsan",用户需要的动态绑定属性

想要动态,我们需要对to使用v-bind:属性名或者简写’:属性名’

routes列表中

{

    path:'/user/:userId',   //添加时需要在user后加 /:userId

    name:"User",            //名字

    component: User        //挂载的组件

}

$router:是创建出来的router的实例(可以改变名字) 不过是创建实例的时候改

$route: 当前谁活跃处于活动状态则拿到的就是谁

两者不一样,要进行区分

 

在User组件中,设置一个data属性,userId:this.$route.params.userId

通过$route.params去拿userId的值,然后渲染到页面(parameters)

userId是通过routes中映射的,所以取的时候名字要一致

 

路由的懒加载

大概意思就是需要你的时候,你再加载,可以减少用户的白屏时间懒加载写法

()=>import('../views/Home.vue') 箭头函数返回加载的内容

举个例子:建议写法

const Home = ()=>import('../views/Home.vue')

const About = ()=>import('../views/About.vue')

const User = ()=>import('../views/User.vue')

变量都在一个地方,便于集中管理,然后分别添加到需要绑定组件的地方

 

组件套用

当我们想在父组件下面套用组件的话我们需要有子组件,然后再父组件使用.方法如下

在routes映射表中,找到需要套用子组件的父组件,在其内部添加一个children属性,属性的值为一个对象,里面依然有path,name,compont属性,依次类推

在父组件中定义绑定routes映射表 在父组件中定义不用加/直接加要展示的路径

 

在父组件中使用子组件,主义router-link to="url" url需要加上父组件的/about

 

运行结果如下:

 

原文地址:https://www.cnblogs.com/junlebao/p/vue-Router.html