网页打开时, url 默认是 / 路径,如果未匹配到组件时,会出现空白
重定向 → 匹配 / 后, 强制跳转 /home 路径
{ path: 匹配路径, redirect: 重定向到的路径 },
比如:
{ path:'/' ,redirect:'/home' }
const router = new VueRouter({
routes: [
{ path: '/', redirect: '/home'},
...
]
})
当路径找不到匹配时,给个提示页面
404的路由,虽然配置在任何一个位置都可以,但一般都配置在其他路由规则的最后面
path: “*” (任意路径) – 前面不匹配就命中最后这个
import NotFind from '@/views/NotFind'
const router = new VueRouter({
routes: [
...
{ path: '*', component: NotFind } //最后一个
]
})
NotFound.vue
404 Not Found
router/index.js
...
import NotFound from '@/views/NotFound'
...
// 创建了一个路由对象
const router = new VueRouter({
routes: [
...
{ path: '*', component: NotFound }
]
})
export default router
路由的路径看起来不自然, 有#,能否切成真正路径形式?
const router = new VueRouter({
mode:'histroy', //默认是hash
routes:[]
})
点击按钮跳转如何实现?
编程式导航:用JS代码来进行跳转
两种语法:
特点:简易方便
//简单写法
this.$router.push('路由路径')
//完整写法
this.$router.push({
path: '路由路径'
})
特点:适合 path 路径长的场景
语法:
路由规则,必须配置name配置项
{ name: '路由名', path: '/path/xxx', component: XXX },
通过name来进行跳转
this.$router.push({
name: '路由名'
})
点击搜索按钮,跳转需要把文本框中输入的内容传到下一个页面如何实现?
1.查询参数
2.动态路由传参
两种跳转方式,对于两种传参方式都支持:
① path 路径跳转传参
② name 命名路由跳转传参
//简单写法
this.$router.push('/路径?参数名1=参数值1&参数2=参数值2')
//完整写法
this.$router.push({
path: '/路径',
query: {
参数名1: '参数值1',
参数名2: '参数值2'
}
})
接受参数的方式依然是:$route.query.参数名
//简单写法
this.$router.push('/路径/参数值')
如:this.$router.push(`/search/${this.searchword}`)
//完整写法
this.$router.push({
path: '/路径/参数值'
})
index.js
routes: [
{ path: '/search/:word?', component: Search }
]
接受参数的方式依然是:$route.params.参数值,
如: $route.params.searchword
this.$router.push({
name: '路由名字',
query: {
参数名1: '参数值1',
参数名2: '参数值2'
}
})
this.$router.push({
name: '路由名字',
params: {
参数名: '参数值',
}
})
注意: path不能配合params使用,所以在index.js中路由的配置也需要有name
编程式导航,如何跳转传参?
1.path路径跳转
query传参
this.$router.push('/路径?参数名1=参数值1&参数2=参数值2')
this.$router.push({
path: '/路径',
query: {
参数名1: '参数值1',
参数名2: '参数值2'
}
})
动态路由传参
this.$router.push('/路径/参数值')
this.$router.push({
path: '/路径/参数值'
})
2.name命名路由跳转
query传参
this.$router.push({
name: '路由名字',
query: {
参数名1: '参数值1',
参数名2: '参数值2'
}
})
动态路由传参 (需要配动态路由)
this.$router.push({
name: '路由名字',
params: {
参数名: '参数值',
}
})