效果:
路由
router-link标签 路由路径,to代表路由路径,传参方式跟a链接相同(通过{{$route.query.userName}}取值),而路由路径 对应的是组件
router-view代表路由体 若没起name 则公用一个路由体(下面路由布局有介绍name的使用)
<div id="app">
<router-link to="/login?userName=cth">登录</router-link>
<router-link to="/register">注册</router-link>
<!-- 路由体 -->
<transition mode="in-out"
enter-active-class="slideInRight"
leave-active-class="lightSpeedOut">
<router-view class="animated" name=''></router-view>
</transition>
</div>
var login = {
template :'<h2>这是登录页面---{{$route.query.userName}}<h2/>'
}
var register = {
template: '<router-link to="/register/registerse">注册子路由</router-link>',
}
var loginse = {
template : '<h4>登录页面的子路由</h4>'
}
var registerse = {
template : '<h4>注册页面的子路由</h4>'
}
var routerdemo = new VueRouter({
/* 路由规则
每个路由规则都是一个对象,有两个属性
属性1:path 路由地址
属性2:compontent 如果path匹配 则展示对应的组件
*/
routes:[
{
path : '/',
redirect : '/login'//路由为空时 重定向到loginHtml组件
},
{
path : '/login',
component : login,
},
{
path : '/register',
component : register ,
children:[
{
path:'registerse',
components:[
{
'registerse':registerse
}
]
}
]
},
],
linkActiveClass:'linkActive'
})
var Vue = new Vue({
el : '#app',
data:{
flag : true,
flag1 : true
},
components:{
login,register,loginse,registerse
},
router:routerdemo,
//监听路由的改变
watch:{
'$route.path':function(newVal,oldVal){
console.log(this.$route.path)
}
}
})
路由布局
<div id="app">
<router-view></router-view>
<div class="bottomBox">
<router-view name="left"></router-view>
<router-view name="content"></router-view>
</div>
</div>
var headerBox = {
template: '<h2 class="headerBox">headerBox</h2>'
}
var leftBox = {
template: '<h2 class="leftBox">leftBox</h2>'
}
var contentBox = {
template: '<h2 class="contentBox">contentBox</h2>'
}
//路由
var routerbox = new VueRouter({
routes: [{
path: '/',
components: {
//格式---'路由name' :组件
'default': headerBox,//路由体不写name时 默认headerBox组件
'left': leftBox,
'content': contentBox
}
}],
})
var Vue = new Vue({
el: '#app',
data: {},
//路由
router: routerbox,
//组件
components: {
headerBox,leftBox,contentBox
}
})