vue-router真实面试题(持续更新中)
1、vue-router怎么重定向页面?路由中配置redirect属性在routes:[{{ path: ‘/a’, redirect: ‘/b’ }}]2、 vue-router怎么配置404页面?在router.js中,由于路由是从上到下执行的,只要在路由配置中最后面放个*号就可以了//通常使用通配符进行配置404页面{path: ‘*’,component:notFound}3、vue-ro
1、vue-router怎么重定向页面?
路由中配置redirect属性
在routes:[{
{ path: ‘/a’, redirect: ‘/b’ }
}]
2、 vue-router怎么配置404页面?
在router.js中,由于路由是从上到下执行的,只要在路由配置中最后面放个*号就可以了
//通常使用通配符进行配置404页面
{
path: ‘*’,
component:notFound
}
3、vue-router路由有几种模式?说说它们的区别?
hash模式:
1.url路径会出现“#”号字符
2.hash值不包括在Http请求中,它是交由前端路由处理,所以改变hash值时不会刷新页面,也不会向服务器发送请求
3.hash值的改变会触发hashchange事件
history模式:
1.整个地址重新加载,可以保存历史记录,方便前进后退
2.依赖H5 API和后台配置,没有后台配置的话,页面刷新时会出现404
4、vue-router有哪几种导航钩子( 导航守卫 )?
全局守卫:
beforeEach((to, from, next) => {调用next来resolve这个钩子} ),
beforeResolve((to, from, next) => {} ),
afterEach((to, from) => {} ) //没有next()
路由独享守卫:
beforeEnter((to, from, next) => {} ),
组件内部守卫:
beforeRouteEnter((to, from, next) => {next可以传回调,回调里面可以用vm访问实例} ), 内部没有this,因为路由还没confirm
beforeRouteUpdate((to, from, next) => {}),可以拿到this
beforeRouteLeave((to, from, next) => {})
5、 说说你对router-link的了解
vue-router插件的其中一个组件, 用于跳转路由, 类似于a标签, 它一般也会渲染成a标签, 但是可以通过tag来变更默认渲染元素, 通过to来跳转
6、 vue-router是什么?有哪些组件?
Vue Router 是 路由管理器。可以用来进行页面跳转和跳转传参。
和和
7、$route和 $router的区别是什么?
route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
router是“路由实例对象”,包括了路由的跳转方法(push、replace),钩子函数等。
8、 vue-router如何响应路由参数的变化?
用watch 检测
// 监听当前路由发生变化的时候执行
watch: {
$route(to != from){
console.log(to.path)
// 对路由变化做出响应
}
}
组件内导航钩子函数
beforeRouteUpdate(to, from, next){
// to do somethings
}
9、在什么场景下会用到嵌套路由?
在页面点击不同的选项卡切换不同的路由来展示不同的内容时
10、如何获取路由传过来的参数?
如果使用query方式传入的参数使用this. r o u t e . q u e r y 接 收 如 果 使 用 p a r a m s 方 式 传 入 的 参 数 使 用 t h i s . route.query 接收 如果使用params方式传入的参数使用this. route.query接收如果使用params方式传入的参数使用this.route.params接收
11、 在vue组件中怎么获取到当前的路由信息?
如果是template中获取直接 r o u t e 即 可 如 果 是 s c r i p t 中 获 取 t h i s . route 即可 如果是script中获取 this. route即可如果是script中获取this.route
可以 console.log(this.$route) 查看其详细信息
下面是我自己做的一些关于vue-router的笔记
跳转方式;
<router-link :to="{name:'Home',params:{username:'lly'}}">Home</router-link>
1、this.$router.go(n)
相对于当前页面向前或向后跳转多少个页面,类似 window.history.go(n)。
n可为正数可为负数。正数返回上一个页面
2、this.$router.push()
由于动态路由也是传递params的,所以在 this.$router.push() 方法中path不能和params一起使用,否则params将无效。需要用name来指定页面。
通过name获取页面,传递params:
传值跳转:this.$router.push({name:"跳转页面name名字" , params:{ 名称:要传的值}})
对应页面接受:this.$route.params.名称
传值跳转:this.$router.push({path:"对应的路径", query:{ 名称:要传的值}})
对应页面接受:this.$route.query.名称
传参是this.$router
,
接收参数是this.$route
,
route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
router是“路由实例对象”,包括了路由的跳转方法(push、replace),钩子函数等。
vue路由传参params和query的区别
1.params只能用name来引入路由,query用path来引入
2.params类似于post,query更加类似于我们ajax中get传参,说的再简单一点,前者在浏览器地址栏中不显示参数,后者显示,所以params传值相对安全一些。
3.取值用法类似分别是this. r o u t e . p a r a m s . n a m e 和 t h i s . route.params.name和this. route.params.name和this.route.query.name。
4.params传值一刷新就没了,query传值刷新还存在
vue中的redirect重定向
https://www.cnblogs.com/Progress-/p/12188413.html
加在router.js中的
const router =newVueRouter({
// 解决vue路由跳转页面之后页面不从最顶端显示问题
scrollBehavior(to, from, saveTop) { if (saveTop) { return saveTop; } else { return { x: 0, y: 0 } } },
})
1.router.currentRoute:当前的路由信息对象,我们可以通过
router.currentRoute.fullPath获得解析后的 URL,包含查询参数和 hash 的完整路径,如果要访问的页面的路由有命名(name)的话,可以通过router.currentRoute.name获得当前路由的名称。
2.router.replace:作用和router.push相同,不过它不会向history添加新纪录,而是替换当前的history记录。
更多推荐
所有评论(0)