vue-router的两种模式:hash和history详解

更新日期: 2023-03-17阅读: 1.5k标签: Hash

vue.js是一种流行的JavaScript框架,用于构建交互式Web应用程序。Vue-router是Vue.js框架中的一个重要组件,它允许您为应用程序创建路由。在Vue-router中,有两种不同的路由模式:hash模式和history模式。本文将详细介绍这两种模式,并讨论它们之间的差异。


hash模式

在hash模式下,URL中的#符号用作路由器的路径分隔符。例如,如果要访问Vue应用程序中的/about页面,则可以使用以下URL:

http://example.com/#/about

当用户点击链接时,浏览器会自动滚动到页面顶部,并且不会向服务器发送请求。相反,浏览器仅仅修改URL中的#符号后的路径,然后通过hashchange事件通知Vue-router更新视图。

在hash模式下,您可以通过Vue-router api来动态设置和移除路由。例如,您可以使用以下代码动态添加一个新的路由:

const router = new VueRouter({
  mode: 'hash',
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About }
  ]
})

router.addRoutes([{ path: '/contact', component: Contact }])

虽然hash模式非常容易实现,但它也具有一些缺点。首先,因为所有路由都在同一个页面中加载,所以初始加载可能比较慢。其次,由于#符号的存在,搜索引擎可能无法正确地索引您的网站


history模式

在history模式下,URL中没有#符号,而是使用html5的History API来管理路由。例如,如果要访问Vue应用程序中的/about页面,则可以使用以下URL:

http://example.com/about

当用户点击链接时,浏览器将向服务器发送HTTP请求,然后返回与请求路径匹配的内容。与hash模式不同,浏览器不会滚动到页面顶部,而只是更新页面内容。

在history模式下,您还可以使用Vue-router API动态设置和移除路由。例如,您可以使用以下代码动态添加一个新的路由:

const router = new VueRouter({
  mode: 'history',
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About }
  ]
})

router.addRoutes([{ path: '/contact', component: Contact }])

尽管history模式可以提供更好的用户体验和seo优化,但它也有一些限制。首先,如果在没有配置正确的服务器支持的情况下使用history模式,用户在直接访问应用程序中的特定路由时可能会遇到404错误。其次,由于浏览器缓存的存在,可能需要手动清除缓存才能查看更新后的内容。


结论

在Vue-router中,hash模式和history模式各有优缺点。如果您的应用程序不需要SEO优化或是您希望快速启动应用程序,那么hash模式可能是最佳选择。而如果您需要SEO优化并且拥有正确的服务器支持,那么history模式可能更适合您的应用程序。最终的选择取决于您的需求和偏好。

链接: https://fly63.com/article/detial/12412

关于Webpack中hash的用法

在webpack的配置项中,可能会见到hash这样的字符。这种带哈希值的文件名,可以帮助实现静态资源的长期缓存,在生产环境中非常有用。带hash的文件是现在web启用缓存来提升性能比较建议的形式。

location.hash属性#_window.location.hash 使用

hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分),#是用来指导浏览器动作的,都会被浏览器解读为位置标识符 , 这意味着这些字符都不会被发送到服务器端。对服务器端完全无用。所以,HTTP请求中不包括#。

vue-router之hash模式和history模式

hash模式即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。history模式利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。

一致性hash算法和实现

一致性hash算法,是麻省理工学院1997年提出的一种算法,目前主要应用于分布式缓存当中。一致性hash算法可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题。

多阶Hash算法

在分布式系统中,会经常用到K-V存储,一般实现的方式有红黑树或者哈希表,在Redis中还用到了跳表。都是通过一个确定的Key值,来查找Key附带的Value属性。本文会介绍一种高效的算法——多阶Hash。

webpack打包的3种hash值区别

我们都知道,webpack有各种hash值,包括每次项目构建hash,不同入口的chunkhash、文件的内容contenthash,这么多hash,它们有什么区别呢?

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!