vue-router路由的参数和设计 / 网络研习社#15

lemooljiang(76)
Published in
#cn
Words
385
Reading
2 min
Listen
Play
7y

到了路由功能了。路由分前端路由和后端路由,这里先来看前端。vue有个好用的插件vue-router来解决路由的麻烦,它与组件配合就能很好地组织网页了。

vue-router基本使用:

<script src="./lib/vue-router.js"></script>  //

<div id="app">
    <router-link to="/login">login</router-link>
    <router-link to="/register">register</router-link>
    <router-view></router-view>
</div>

<script>
    var login = {
        template: '

login组件

'
} var register = { template: '

register组件

'
} var router = new VueRouter({ routes: [ {path: '/', redirect: '/login'}, {path: '/login', component: login} , //必须是模板对象,不能是组件名称 {path: '/register', component: register} ] }) var app = new Vue({ el: '#app', router }) </script>

vue-router切换时的当前路径的高亮显示:

<style>
    .router-link-active{
        color:red;
    }
</style>

vue-router路由传参:

1$route.query
<router-link to="/login?id=10">login</router-link>

var login = {
          template: '

login组件---{{ $route.query.id }}

'
, created () { console.log(this.$route.query.id) } } 2$route.params <router-link to="/login/10">login</router-link> var login = { template: '

login组件---{{ $route.params.id }}

'
, created () { console.log(this.$route.params.id) } } var routerObj = new VueRouter({ routes: [ {path: '/login/:id', component: login} , {path: '/register', component: register} ] })

子路由(路由嵌套)的设计

<div id="app">
    <router-link to="/login">login</router-link>
    <router-link to="/register">register</router-link>
    <router-view></router-view>
</div>

<template id="tmp">
    <div>
        <router-link to="/register/weibo"></router-link>
        <router-link to="/register/phone"></router-link>
        <router-view></router-view>
    </div>
</template>

var login = {
    template: '

login组件

'
} var weibo = { template: '

weibo组件

'
} var phone = { template: '

phone组件

'
} var register = { template: '#tmp' } var router = new VueRouter({ routes: [ {path: '/', redirect: '/login'}, {path: '/login', component: login} , {path: '/register', component: register, children: [ {path: 'weibo',component: weibo}, {path: 'phone',component: phone} ] } ] })

命名视图布局(name指定组件名),多个组件布置

<div id="app">
    <router-view></router-view>
    <router-view name="left"></router-view>
    <router-view name="main"></router-view>
</div>

var header= {
  template: '

header组件

'
} var left = { template: '

left组件

'
} var main = { template: '

main组件

'
} var router = new VueRouter({ routes: [ {path: '/', components: { default: header, left: left, main: main }} ] })

网络研习社系列文章:


lemooljiang@lemooljiang #network-institute

vue-router路由的参数和设计 / 网络研习社#15 | Ecency