到了路由功能了。路由分前端路由和后端路由,这里先来看前端。vue有个好用的插件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>
<style>
.router-link-active{
color:red;
}
</style>
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}
]
}
]
})
<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
}}
]
})
网络研习社系列文章: