vue面试题目,router导航,路由导航,hash

3. 如何获取页面的hash变化

(1)监听$route的变化

// 监听,当路由发生变化的时候执行
watch: {
  $route: {
    handler: function(val, oldVal){
      console.log(val);
    },
    // 深度观察监听
    deep: true
  }
},

(2)window.location.hash读取#值window.location.hash 的值可读可写,读取来判断状态是否改变,写入时可以在不重载网页的前提下,添加一条历史访问记录。

# 4. $route 和$router 的区别

●$route 是“路由信息对象”,包括 path,params,hash,query,fullPath,matched,name 等路由信息参数

●$router 是“路由实例”对象包括了路由的跳转方法,钩子函数等

5. 如何定义动态路由?如何获取传过来的动态参数?

(1)param方式●配置路由格式:/router/:id●传递的方式:在path后面跟上对应的值●传递后形成的路径:/router/1231)路由定义

//在APP.vue中
<router-link :to="'/user/'+userId" replace>用户</router-link>    

//在index.js
{
   path: '/user/:userid',
   component: User,
},

2)路由跳转

// 方法1:
<router-link :to="{ name: 'users', params: { uname: wade }}">按钮</router-link

// 方法2:
this.$router.push({name:'users',params:{uname:wade}})

// 方法3:
this.$router.push('/user/' + wade)

3)参数获取通过 $route.params.userid 获取传递的值(2)query方式

●配置路由格式:/router,也就是普通配置●传递的方式:对象中使用query的key作为传递方式●传递后形成的路径:/route?id=1231)路由定义

//方式1:直接在router-link 标签上以对象的形式
<router-link :to="{path:'/profile',query:{name:'why',age:28,height:188}}">档案</router-link>

// 方式2:写成按钮以点击事件形式
<button @click='profileClick'>我的</button>    

profileClick(){
  this.$router.push({
    path: "/profile",
    query: {
        name: "kobi",
        age: "28",
        height: 198
    }
  });
}

2)跳转方法

// 方法1:
<router-link :to="{ name: 'users', query: { uname: james }}">按钮</router-link>

// 方法2:
this.$router.push({ name: 'users', query:{ uname:james }})

// 方法3:
<router-link :to="{ path: '/user', query: { uname:james }}">按钮</router-link>

// 方法4:
this.$router.push({ path: '/user', query:{ uname:james }})

// 方法5:
this.$router.push('/user?uname=' + jsmes)

3)获取参数通过$route.query获取传递的值

route是路由信息对象,包括path,params,hashquery,fullPath,matchednamd等等路由信息

参数获取$route.arams.userid获取传递的支

query方式,配置路由格式:/router,也就是普通配置,

router-link :to="(path:'/profile',query;{name:'why',age;28,height:1.88}}">

}

this.roouter.push({path:'/user'query:{name:james}});

router-link :to="{path:'/user',query:{uname:jaems}}">

afterEach跳转之后滚动会到顶部

beforeEnter如果不像全局配置收尾的话,可以维某些路由单独配置守卫

beforeRouteUpdate当前地址改变并且够组件被服用的时候触发,会

beforeRouteLeave离开组件被调用

1.完整的路由导航解析流程(不包括其他生命周期)

●触发进入其他路由。●调用要离开路由的组件守卫beforeRouteLeave●调用局前置守卫∶ beforeEach●在重用的组件里调用 beforeRouteUpdate●调用路由独享守卫 beforeEnter。●解析异步路由组件。●在将要进入的路由组件中调用 beforeRouteEnter●调用全局解析守卫 beforeResolve●导航被确认。●调用全局后置钩子的 afterEach 钩子。●触发DOM更新(mounted)。●执行beforeRouteEnter 守卫中传给 next 的回调函数

2.触发钩子的完整顺序

路由导航、keep-alive、和组件生命周期钩子结合起来的,触发顺序,假设是从a组件离开,第一次进入b组件∶●beforeRouteLeave:路由组件的组件离开路由前钩子,可取消路由离开。●beforeEach:路由全局前置守卫,可用于登录验证、全局路由loading等。●beforeEnter:路由独享守卫●beforeRouteEnter:路由组件的组件进入路由前钩子。●beforeResolve:路由全局解析守卫●afterEach:路由全局后置钩子●beforeCreate:组件生命周期,不能访问tAis。●created;组件生命周期,可以访问tAis,不能访问dom。●beforeMount:组件生命周期●deactivated:离开缓存组件a,或者触发a的beforeDestroy和destroyed组件销毁钩子。●mounted:访问/操作dom。●activated:进入缓存组件,进入a的嵌套子组件(如果有的话)。●执行beforeRouteEnter回调函数next。

3.导航行为被触发到导航完成的整个过程

导航行为被触发,此时导航未被确认。●在失活的组件里调用离开守卫 beforeRouteLeave。●调用全局的 beforeEach守卫。●在重用的组件里调用 beforeRouteUpdate 守卫(2.2+)。●在路由配置里调用 beforeEnteY。●解析异步路由组件(如果有)。●在被激活的组件里调用 beforeRouteEnter。●调用全局的 beforeResolve 守卫(2.5+),标示解析阶段完成。●导航被确认。●调用全局的 afterEach 钩子。●非重用组件,开始组件实例的生命周期:beforeCreate&created、beforeMount&mounted●触发 DOM 更新。●用创建好的实例调用 beforeRouteEnter守卫中传给 next 的回调函数。●导航完成

触发进入其他路由

调用要离开路由的组件守卫beforeRouteLeave

调用前置收尾beforeEach

在重用的组件里调用beforeRouteUpdate

调用路由独享守卫beforeEnter

beforeEach

在重用的组件里调用beforeRouteUpdate

调用路由独享守卫

beforeRouteEnter调用全局的beforeResolve守卫标志解析阶段完成

用创建好的实力调用beforeRouterEnter收尾当中传给next的回调函数

使用router跳转和使用histroy.pushStqte没有什么差别,

全部评论

相关推荐

1.自我介绍2.介绍一个项目&nbsp;开源,架构设计?解决痛点?3.上个面试官问你&nbsp;map&nbsp;的查找为什么&nbsp;O1,回去有了解吗?-&nbsp;hashMap&nbsp;实现一个数组加链表的结构,数组大小怎么设置?固定还是用户设置还是动态变化?什么情况触发扩容?-&nbsp;map&nbsp;最坏查找情况是怎样的?红黑树实现&nbsp;hashMap&nbsp;的话缺点在哪里?-&nbsp;map&nbsp;过大时,扩容怎么做,新创立空间的话很卡,怎么优化?4.写题:升序数组&nbsp;[2,3,4,5],插入一个数字,返回应该插入的位置-&nbsp;怎么优化(二分查找),考虑二分算&nbsp;midIndex&nbsp;时超过整数最大上限怎么处理-&nbsp;如果让你写测试数据会写什么(重复元素),如果重复,插入哪里更合适(最后面的,开销最小)-&nbsp;你开源项目怎么做的测试?5.async/await&nbsp;降到&nbsp;es5&nbsp;做了什么转化,给了一段代码让我写出转化的结构。6.font-size&nbsp;的&nbsp;px&nbsp;是基于什么而定的(屏幕像素),是决定了字体的长宽还是什么?(寄7.http&nbsp;1.x、2、3&nbsp;的区别,UDP、TCP&nbsp;的区别?8.js&nbsp;怎么发生的内存泄露9.聊聊安全,问了&nbsp;xss、csrf、sql&nbsp;注入的实现原理?场景?10.写题:AB个罐子,分别放红蓝球(标有&nbsp;A、B),把球混在一起后,连续抽&nbsp;3&nbsp;个,计算:A、B&nbsp;球至少有一个,且红球至少一个的概率11.写题:有一个&nbsp;random5(生成&nbsp;1-5,每个随机数都&nbsp;1/5&nbsp;概率),用&nbsp;random5&nbsp;实现&nbsp;random7(1-7,每个随机数都&nbsp;1/7&nbsp;概率)12.url&nbsp;的组成?写题:给&nbsp;url&nbsp;的&nbsp;params&nbsp;插入更多参数,考虑字符转化。转化的意义是什么?13.反问,了解到团队里的人都是跨&nbsp;前端&nbsp;+&nbsp;游戏&nbsp;的打个小广告,想加入社区打破信息差,或者想做开源的同学,欢迎来找我,目前在做一个脚手架项目,详见主页帖子#wxg暑假实习##面经##实习#
点赞 评论 收藏
转发
投递快手等公司10个岗位
点赞 评论 收藏
转发
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务