Vue-router

Vue-router入门

技术胖原文链接

vue-router是一个插件包,所以我们还是需要用npm来进行安装的。打开命令行工具,进入你的项目目录,输入下面命令。

npm install vue-router --save-dev

importVuefrom'vue'//引入Vue

importRouterfrom'vue-router'//引入vue-router

importHellofrom'@/components/Hello'//引入根目录下的Hello.vue组件

Vue.use(Router)//Vue全局使用Router

exportdefaultnewRouter({

    routes: [//配置路由,这里是个数组

        {

            //每一个链接都是一个对象path:'/',

            //链接路径name:'Hello',

            //路由名称,component: Hello//对应的组件模板

        

     ]

})


**常用语法**


<router-link to="/">[显示字段]</router-link>

<p>{{ $route.name}}</p>

<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>

{{$route.params.username}}

<router-view ></router-view>

<router-view name="left"></router-view>

{ path: '/', components: { default:Hello, left:Hi1, right:Hi2 } }

{ path:'/params/:newsId/:newsTitle', component:Params }

path:'/params/:newsId(\\d+)/:newsTitle',

{ path: '/hi1',component: Hi1,alias:'/jspang' } 别名

**切换效果 **

想让路由有过渡动画,需要在<router-view>标签的外部添加<transition>标签,标签还需要一个name属性。

<transition name="fade"> <router-view ></router-view> </transition>


** css过渡类名 ** 

组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition的name属性有关,比如name=”fade”,会有如下四个CSS类名:

fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。

fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。

fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。

fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。

从上面四个类名可以看出,fade-enter-active和fade-leave-active在整个进入或离开过程中都有效,所以CSS的transition属性在这两个类下进行设置。

**过渡模式mode**

in-out:新元素先进入过渡,完成之后当前元素过渡离开。

out-in:当前元素先进行过渡离开,离开完成后新元素过渡进入。

**mode的两个值**

histroy:当你使用 history 模式时,URL 就像正常的 url,例如 http://jsapng.com/lms/,也好看!

hash:默认’hash’值,但是hash看起来就像无意义的字符排列,不太好看也不符合我们一般的网址浏览习惯。

**404页面**

{ path:'*', component:Error }

** 路由配置文件中的钩子函数 **

我们可以直接在路由配置文件(/src/router/index.js)中写钩子函数。但是在路由文件中我们只能写一个beforeEnter,就是在进入此路由配置时。先来看一段具体的代码:

{  //进入路由

        path:'/params/:newsId(\\d+)/:newsTitle',

        component:Params,

        beforeEnter:(to,from,next)=>{

                console.log('我进入了params模板');

                console.log(to);

                console.log(from);

                next();   执行跳转

                next(false);  不跳转   

                next({path:‘/’}); 跳转到首页

        }

},

        三个参数:

                to:路由将要跳转的路径信息,信息是包含在对像里边的。

                from:路径跳转前的路径信息,也是一个对象的形式。

                next:路由的控制参数,常用的有next(true)和next(false)。

**模板路由狗子函数**

export default {

  name: 'params',

  data () {

    return {

      msg: 'params page'    }

  },

  beforeRouteEnter:(to,from,next)=>{

    console.log("准备进入路由模板");

    next();

  },

  beforeRouteLeave: (to,from,next)=> {

    console.log("准备离开路由模板");

    next();

  }

}

**编程式导航**

 this.$router.go(-1) 和 this.$router.go(1) 

这两个编程式导航的意思是后退和前进,功能跟我们浏览器上的后退和前进按钮一样,这在业务逻辑中经常用到。比如条件不满足时,我们需要后退。

router.go(-1)代表着后退,我们可以让我们的导航进行后退,并且我们的地址栏也是有所变化的。

router.go(1):代表着前进,用法和后退一样,我在这里就不重复码字了(码字辛苦希望大家理解)。

this.$router.push(‘/xxx ‘)

这个编程式导航都作用就是跳转,比如我们判断用户名和密码正确时,需要跳转到用户中心页面或者首页,都用到这个编程的方法来操作路由。


this.$router.push传递参数有2种方式:

传递参数 – this.$router.push({path: ’ 路由 ', query: {key: value}})

参数取值 – this.$route.query.key

使用这种方式,传递参数会拼接在路由后面,出现在地址栏.

传递参数 – this.$router.push({name: ’ 路由的name ', params: {key: value}})

参数取值 – this.$route.params.key

使用这种方式,参数不会拼接在路由后面,地址栏上看不到参数…

动态路由也是传递params的,所以在 this.$router.push() 方法中 path不能和params一起使用,否则params将无效。需要用name来指定页面。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容