前端路由使用hash值来切换,适用于单页面应用
vue中router的简单使用
1.下载vue-router.js 并安装
yard add vue-router
2.注册一个路由实例
const router = new VueRouter({
routes:[ 匹配路由规则 ]
})
let vm = new Vue({
el:"#app",
data:{},
router 此处用的是es6语法
})
4.通过router-view引用到页面上
router-link默认是a标签,页面上实际展示的是a标签 实现路由跳转功能
登录
可以用tag更改默认标签
登录
根标签,重定向,默认显示某个组件
{ path: ‘/’, redirect: ‘/login’ }
router-link-active 设置当前元素的css样式
也可自定义类名
在注册路由中设置:linkActiveClass:“myclass”
路由切换动画,用transtion包裹,用法同前面的transition动画一致
1.问号传参
<router-link to='/login?id=20'>登录router-link>
获取时用 this.$route.query.id 获取参数
2.变量名传参
// 参数名与参数一一对应
<router-link to='/register/80/wang'>注册</router-link>
// 匹配路由
{ path: '/register/:id/:name', component: register }
获取时用 this.$route.params 获取参数
// 高亮显示当前元素
/* .router-link-active{
background: orange;
color: #fff;
font-size:26px;
} */
.myclass{ // 自定义类名样式
background: orange;
color: #fff;
font-size:26px;
}
<div id="app">
<router-link to='/login?id=20'>登录router-link>
<router-link to='/register/80/wang'>注册router-link>
<transition name="fade" mode="out-in">
<router-view>router-view>
transition>
div>
js代码
const login = {
template: "登录组件"
}
const register = {
template: "注册组件"
}
const router = new VueRouter({// 第一步 注册路由实例
routes: [// 第二步 匹配路由规则
{ path: '/', redirect: '/login' },
{ path: '/login', component: login },
{ path: '/register/:id/:name', component: register }
],
linkActiveClass:"myclass" // 自定义类名
})
let vm = new Vue({
el: "#app",
data: {},
created(){
// ?问号传参
// console.log(this.$route.query.id)
// :+变量 形式传参
console.log(this.$route.params)
},
router:router // 第三步 将路由添加到vue实例中
})
子路由使用children来匹配
//html代码
<router-link to='/accont/login'>登录</router-link>
// js代码
const router = new VueRouter({
routes: [
{ path: '/', redirect: '/accont' },
{
path: "/accont", component: accont,// 父路由
children: [// 子路由
// 注意:匹配路径时不要写/,/是匹配根路径
{ path: 'login', component: login },
{ path: 'register', component: register }
]
}
]
})
子路由可以嵌套在父路由,只用写一个
即可,
要是多个同级路由在同一页面 / 同一路径下,该如何处理呢?
vue提供了命名视图的方法,用name来区分视图。
默认视图 采用default 命名,一般默认不写。
<router-view>router-view>
<router-view name="left">router-view>
<router-view name="right">router-view>
在注册路由时可以这样写
一个根路径下,划分不同的组件,采用不同的命名,命名自己定义即可。
default 默认命名 : 组件
name:component
命名后面跟的是组件名,不要加“ ” 。
命名与上面视图的name一一对应
const router = new VueRouter({
routes: [
{
path: '/', components: {
default: head, // default 默认视图
left:left // name : component
right:right
}
}
]
})