hash模式。
url上面会有#。
hash模式的主要原理就是onhashchange()事件,表现就是修改#后面的内容不会向服务器发送http请求,因此也不会重新加载页面。
hash 模式打包后,直接在浏览器中打开 /dist/index.html 可以正常的访问
Hash模式的优点在于它兼容性好,可以在所有现代浏览器中工作,而不需要进行任何特殊处理。然而,它的缺点也很明显,那就是URL中包含了#符号,这在某些情况下可能会破坏URL的美观性,同时也不利于搜索引擎的优化(SEO)
history模式 。
url没有#。
History模式则利用了HTML5的History API来实现路由的切换。但是需要后端配合添加一些配置(配置服务器来正确返回你的index.html
)。否则页面刷新会报404.(遇到的一个情况就是:
history模式vue项目打包文件之后 npm run build 出现dist包,里面就是单页面 index.html ,部署项目之后 我们点击路由 不会发生错误 但是如果刷新就会显示404,)
基于HTML5 History API :pushState和replaceState 。
这两个方法应用于浏览器的历史记录栈,提供了对历史记录进行修改的功能。修改url的时候会向服务端发出请求。
history 模式打包后,直接在浏览器中打开 /dist/index.html 会报错
History模式的缺点在于它的兼容性不如Hash模式。在一些老旧的浏览器中,History API可能不被支持,导致路由切换无法正常工作。因此,在使用History模式时,我们需要做好充分的兼容性处理,以确保在所有浏览器中都能获得良好的用户体验。
总的来说,Hash模式和History模式各有优缺点,选择哪种模式主要取决于你的应用需求和目标用户。如果你的应用需要兼容所有现代浏览器,并且对URL的美观性要求不高,那么Hash模式可能是一个更好的选择。而如果你的应用需要更好的用户体验和SEO效果,并且你的目标用户主要使用较新的浏览器,那么History模式可能更适合你。