Vue路由-基本使用
- 1.引入vue-router
<script src="./lib/vue-router.js"></script>
- 2.定义路由组件
const Login = {
template: '<div>Login组件</div>'
}
const Register = {
template: '<div>Register组件</div>'
}
- 3.实例化路由对象 new VueRouter
const routerobj = new VueRouter({
routes: [
{
path: '/login',
component: Login
},
{
path: '/register',
component: Register
}
]
})
- 4.配置路由的规则(如上)
- 5.挂载路由
new Vue({
el: "#app",
router:routerobj
})
<div id="app">
<a href="#/login">登录</a>
<a href="#/register">注册</a>
<!-- 6. 渲染路由 -->
<router-view></router-view>
</div>
Vue路由-路由高亮
- 1.引入vue-router (必须先引入vue.js,在引入vue-router.js,因为先有vue再有vue-router)
<script src="./lib/vue.js"></script>
<script src="./lib/vue-router.js"></script>
<script>
const Login = {
template: '<div>Login组件</div>'
}
const Register = {
template: '<div>Register组件</div>'
}
const router = new VueRouter({
routes: [
{
path: '/login',
component: Login
},
{
path: '/register',
component: Register
}
],
linkActiveClass: 'active'
})
new Vue({
el: "#app",
router
})
</script>
<div id="app">
<!-- tag="div" 设置为指定的标签 默认为 a标签 -->
<router-link to="/login" tag="div">登录</router-link>
<router-link to="/register">注册</router-link>
<!-- 6. 渲染路由 -->
<router-view></router-view>
</div>
<style>
.router-link-active {
font-size: 50px;
color: pink;
}
.active {
font-size: 50px;
color: yellow;
}
</style>
vue路由-路由传参
<body>
<div id="app">
<router-link to="/login?name=fly&age=18">登录</router-link>
<router-link to="/register/zs/18">注册</router-link>
<router-view></router-view>
</div>
<script>
const Login = {
template: '<div>Login组件---{{name}}----{{age}}</div>',
data: () => ({
name: '',
age: ''
}),
created() {
this.name = this.$route.query.name
this.age = this.$route.query.age
}
}
const Register = {
props: ['name', 'age'],
template: '<div>Register组件</div>',
created() {
console.log(this.name, this.age)
console.log(this.$route.params.name)
console.log(this.$route.params.age)
}
}
const router = new VueRouter({
routes: [
{
path: '/login',
component: Login
},
{
path: '/register/:name/:age',
component: Register,
props: true
}
],
linkActiveClass: 'active'
})
new Vue({
el: "#app",
router
})
</script>
</body>
编程式导航路由
<body>
<div id="app">
<button @click="goDetail">goDetail</button>
<router-view></router-view>
</div>
<script>
const Login = {
template: '<div>Login组件</div>',
created() {
console.log(this.$route.query.name)
console.log(this.$route.query.age)
}
}
const router = new VueRouter({
routes: [
{
path: '/login',
component: Login
},
{
name: 'login',
path: '/login/:name/:age',
component: Login
}
],
linkActiveClass: 'active'
})
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}
new Vue({
el: "#app",
router,
methods: {
goDetail() {
this.$router.push({ name: 'login', params: { name: 'fly', age: 18 } })
}
}
})
</script>
嵌套路由
<body>
<div id="app">
<router-link to="/account">Account</router-link>
<router-view></router-view>
</div>
<script>
const Account = {
template: `
<div>
<div>Account组件</div>
<router-link to="/account/login">login</router-link>
<router-link to="/account/register">register</router-link>
<router-view></router-view>
</div>
`
}
const Login = {
template: '<div>Login组件</div>'
}
const Register = {
template: '<div>Register组件</div>'
}
const router = new VueRouter({
routes: [
{
path: '/',
redirect: '/account/register'
},
{
path: '/account',
component: Account,
children: [
{
path: '/account/login',
component: Login
},
{
path: '/account/register',
component: Register
}
]
}
]
})
new Vue({
el: "#app",
router
})
</script>
</body>