1.vue-router的基本使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user">User</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
2.路由重定向
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/">重定向</router-link>
<router-link to="/user">User</router-link>
<router-link to="/Register">Register</router-link>
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: '<h1>User</h1>'
}
const Register = {
template: '<h1>Register</h1>'
}
const router = new VueRouter({
routes: [{
path: '/user',
// redirect: '/Register'
component: User
}, {
path: '/',
redirect: '/Register'
// component: User
}, {
path: '/Register',
component: Register
}]
})
const vm = new Vue({
el: '#app',
data: {},
router,
})
</script>
</body>
</html>
3.路由嵌套
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to='/User'>user组件</router-link>
<router-link to='/Register'>Register组件</router-link>
<div>
<router-view></router-view>
</div>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: '<h1>User</h1>'
}
const Register = {
template: `<div>
<h1>Register组件</h1>
<hr/>
<!-- 子路由链接 -->
<router-link to="/register/tab1">tab1</router-link>
<router-link to="/register/tab2">tab2</router-link>
<router-view></router-view>
<div>`
}
const Tab1 = {
template: "<h3>tab1 子组件</h3>"
}
const Tab2 = {
template: "<h3>tab2 子组件</h3>"
}
const router = new VueRouter({
routes: [{
path: '/User',
component: User
}, {
path: '/Register',
component: Register,
children: [{
path: '/register/tab1',
component: Tab1
}, {
path: '/register/tab2',
component: Tab2
}]
}]
})
const vm = new Vue({
el: '#app',
data: {},
router
})
</script>
</body>
</html>
4.动态路由匹配1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link to="/user/3">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
const UserNum = {
template: "<h1>User {{$route.params.id}}</h1>"
}
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
path: '/user/:id',
component: UserNum,
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
5.动态路由匹配2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link to="/user/3">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
const UserNum = {
props: ['id'],
template: "<h1>User {{id}}</h1>"
}
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
path: '/user/:id',
component: UserNum,
props: true
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
6.动态匹配路由3
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link to="/user/3">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
const UserNum = {
props: ['id', 'username', 'age'],
template: "<h1>User 姓名为:{{username}} 年龄为:{{age}}</h1>"
};
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
path: '/user/:id',
component: UserNum,
props: {
username: 'lisi',
age: 20
}
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
7.动态路由匹配
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link to="/user/3">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
const UserNum = {
props: ['id', 'username', 'age'],
template: "<h1>User 用户id为{{id}} 姓名为:{{username}} 年龄为:{{age}}</h1>"
}
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
path: '/user/:id',
component: UserNum,
props: route => ({
username: 'zx',
age: 20,
id: route.params.id
})
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
8.命名路由
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link :to="{name:'user',params:{id:123}}">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: "<h1>Register组件</h1>"
};
const UserNum = {
props: ['id', 'username', 'age'],
template: "<h1>User 用户id为{{id}} 姓名为:{{username}} 年龄为:{{age}}</h1>"
}
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
name: 'user',
path: '/user/:id',
component: UserNum,
props: route => ({
username: 'zx',
age: 20,
id: route.params.id
})
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
9.编程式导航
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<router-link to="/user/1">User1</router-link>
<router-link to="/user/2">User2</router-link>
<router-link :to="{name:'user',params:{id:123}}">User3</router-link>
<router-link to="/register">Register</router-link>
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script src="../vue.js"></script>
<script src="../vue-router_3.0.2.js"></script>
<script>
const User = {
template: "<h1>User组件</h1>"
}
const Register = {
template: `<div>
<h1>Register组件</h1>
<button @click="goback">后退</button>
</div>`,
methods: {
goback() {
this.$router.go(-1)
}
},
};
const UserNum = {
props: ['id', 'username', 'age'],
template: `<div>
<h1>User 用户id为{{id}} 姓名为:{{username}} 年龄为:{{age}}</h1>
<button @click="goRegister">跳转到注册页面</button>
</div>`,
methods: {
goRegister() {
this.$router.push('/register')
}
},
}
//创建路由实例对象
const router = new VueRouter({
//所有的路由规则
routes: [{
name: 'user',
path: '/user/:id',
component: UserNum,
props: route => ({
username: 'zx',
age: 20,
id: route.params.id
})
}, {
path: '/user',
component: User
}, {
path: '/register',
component: Register
}]
});
//创建vm实例对象
const vm = new Vue({
//指定控制区域
el: '#app',
//挂载路由实例对象
data: {
},
router,
});
</script>
</body>
</html>
10.开启history模式
11.修改active路由的样式