2020VUE常考-路由

一:Vue-router有几种钩子函数?具体是什么及执行流程是怎样的?

核心答案:

路由钩子的执行流程,钩子函数种类有:全局守卫、路由守卫、组件守卫。

完整的导航解析流程

1.导航被触发;

2.在失活的组件里调用beforeRouteLeave守卫;

3.调用全局beforeEach守卫;

4.在复用组件里调用beforeRouteUpdate守卫;

5.调用路由配置里的beforeEnter守卫;

6.解析异步路由组件;

7.在被激活的组件里调用beforeRouteEnter守卫;

8.调用全局beforeResolve守卫;

9.导航被确认;

10.调用全局的afterEach钩子;

11.DOM更新;

12.用创建好的实例调用beforeRouteEnter守卫中传给next的回调函数。

二:vue-router 两种模式的区别?

核心答案:

vue-router 有 3 种路由模式:hash、history、abstract。

1) hash模式:hash + hashChange

特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。通过监听 hash(#)的变化来执行js代码 从而实现 页面的改变。 

核心代码:

window.addEventListener(‘hashchange‘,function(){

    self.urlChange()

})

2) history模式:historyApi + popState

HTML5推出的history API,由pushState()记录操作历史,监听popstate事件来监听到状态变更;

因为 只要刷新 这个url(www.ff.ff/jjkj/fdfd/fdf/fd)就会请求服务器,然而服务器上根本没有这个资源,所以就会报404,解决方案就 配置一下服务器端。

说明:

1)hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器;

2)history : 依赖 HTML5 History API 和服务器配置。具体可以查看 HTML5 History 模式;

3)abstract : 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式.

来自VUE中文社区公众号 https://mp.weixin.qq.com/s/60HI-CM1GhqDG5zeTFSOrw

小凤凰newObject
原文地址:https://www.cnblogs.com/xiaofenghuang/p/13984690.html