为什么推荐使用哈希模式?在创建项目时,vue-router默认使用hash方式。设置模式时,应该使用hash模式还是history模式?先了解它们的实现原理,了解它们之间的区别。什么时候选择哪种模式。一、实现原理hashhash的原理是通过监听浏览器的onhashchange事件变化,找到对应的路由应用。通过更改location.hash来更改页面路由。history原理使用html5的history接口中新增的pushState()和replaceState()方法来改变页面路径。historyInterface是浏览器历史栈提供的接口。通过back、forward、go等可以读取浏览器历史栈的信息,pushState和replaceState也可以修改浏览器历史栈。hash和history对比:2、为什么推荐hash模式?理由:1、从兼容的角度分析。hash可以兼容IE8,history只能兼容IE10。2、从网络请求的角度分析。使用hash方式,当地址发生变化时,通过hashchange事件,只会读取hash符号后的内容,不会发起网络请求。history模式下,每访问一个页面都会发起一次网络请求,每次请求都需要服务器进行路由匹配、数据库查询、生成HTML文档,然后向浏览器发送响应。压力很大。3.服务器配置分析。hash不需要任何服务器配置。history刷新页面时,找不到url对应的页面,会出现404问题。因为域名后面的路由是前端控制的,后端只能保留域名部分,所以会造成页面丢失的问题。需要在服务器端添加回退路由来解决这个问题。散列模式不足1.散列模式中的#也称为锚点。这里的#和css中的#是同一个意思,所以hash方式下,页面定位会失效。2、Hash不利于SEO(搜索引擎优化)。3.白屏时间问题。浏览器在渲染HTML文档内容之前需要等待JavaScript文件加载完成,用户等待的时间稍长。
