如何去除vue项目中的#及其ie9兼容性
一、如何去除vue项目中访问地址的#
vue2中在路由配置中添加mode(vue-cli创建的项目在src/router/index.js)
exportdefaultnewRouter({ mode:'history', routes:[ { path:'/', name:'menu', component:menu, children:[ { path:'organization', component:organization, children:[ { path:'', redirect:'organizationSub' }, { path:'organizationSub', component:organizationSub } ] }, { path:'user', component:user }, { path:'role', component:role } ] } ] })
二、vue路由原理
2.1 hash模式:vue-router默认的路由模式。
vue开发的单页面应用,html只有一个,切换时url的变化通过url的hash模式模拟完整的url。
2.2 history模式:vue2中配置mode:'history'。
利用history.pushStateAPI完成url的跳转
HTML5History模式官网介绍:https://router.vuejs.org/zh-cn/essentials/history-mode.html
三、注意事项
不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问http://oursite.com/user/id就会返回404,这就不好看了。
所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果URL匹配不到任何静态资源,则应该返回同一个index.html页面,这个页面就是你app依赖的页面。
vue-router官网中有介绍,也有后台配置样例:https://router.vuejs.org/zh-cn/essentials/history-mode.html
四、兼容性
经过测试,mode:'history'在ie9下不生效,若vue项目需要兼容ie9,且后台对访问地址有严格校验,不建议使用此种模式。若是内容有错误或遗漏,欢迎大家批评指正~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。