vue-router中hash模式与history模式的区别

yizhihongxing

Vue-router是Vue.js官方的路由管理器,它可以轻松地为单页应用提供路由功能。在Vue-router中,路由模式分为hash模式和history模式,它们的区别如下:

Hash模式

在浏览器中,hash(#)符号后面的所有字符都不会被发送到服务器,这使得单页应用成为现实。在Vue-router中,hash模式是默认的路由模式。

特点

  • URI的hash值用于表示当前的路由状态
  • 使用window对象的onhashchange事件监听hash值的变化
  • 不需要服务器端支持
  • 兼容性更好,支持IE8及以上

示例

假设我们有一个名为App的Vue组件,我们可以定义路由如下:

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

在上面的路由定义中,我们使用了mode: 'hash'来使用hash模式,同时使用了两个路由:

  • 当路径为根路径/时,使用App组件进行渲染
  • 当路径为/about时,使用About组件进行渲染

History模式

在HTML5的History API中,可以通过pushStatereplaceState方法改变URL地址,而不会重新加载页面。Vue-router同时也提供了使用HTML5的history模式来处理URL,这种模式允许在没有hash的情况下使用和操作URL。

特点

  • URI的path用于表示当前的路由状态
  • 使用wondow对象的onpopstate事件监听path值的变化
  • 需要服务器端支持,需要配置对于的路由规则,避免404错误
  • 兼容性较差,仅支持IE10及以上

示例

假设我们有一个名为App的Vue组件,我们可以定义路由如下:

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

在上面的路由定义中,我们使用了mode: 'history'来使用history模式,同时使用了两个路由:

  • 当路径为根路径/时,使用App组件进行渲染
  • 当路径为/about时,使用About组件进行渲染

当我们访问http://localhost/时,我们将看到App组件被渲染,而当我们访问http://localhost/about时,我们将看到About组件被渲染。

总的来说,hash模式与history模式各有优缺点,需要根据需求选择适合自己的模式。对于一些比较老的浏览器,hash模式是一个不错的选择,而现代浏览器中,history模式成为了首选模式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-router中hash模式与history模式的区别 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript获取网页宽高方法汇总

    当我们需要编写一些Web应用或网站时,有时需要获取浏览器的宽度和高度等信息,以便根据宽高信息来做出一些响应式设计或适配不同尺寸设备的设计等。下面介绍一些获取网页宽高的方法。 方法一:获取浏览器窗口宽高 通过 window.innerWidth 和 window.innerHeight 可以获取浏览器窗口实际的宽高,这个方法可用于获取当前设备的可视区域大小。示…

    JavaScript 2023年6月11日
    00
  • JavaScript中call,apply,bind的区别与实现

    JavaScript中的call, apply, bind这三个方法都用于改变函数的this指向。下面分开讲解它们的用途、区别以及实现原理。 1. call方法 1.1 用途 call方法可以借用另一个对象的方法,并且将this指向当前对象。 1.2 示例说明 以下是一个简单的示例,调用Array.prototype.push方法将一个数组合并到另一个数组中…

    JavaScript 2023年6月11日
    00
  • javascript 中Cookie读、写与删除操作

    当我们在使用 JavaScript 进行网站开发时,常常需要使用到 Cookie,Cookie 可以用于保存一些用户信息、网站访问次数、用户偏好设置等数据。本文将详细介绍 JavaScript 中如何进行 Cookie 的读、写与删除操作。 Cookie 的读取 在 JavaScript 中,我们可以使用 document.cookie 读取当前网站的 Co…

    JavaScript 2023年5月19日
    00
  • JavaScript 实现HTML DOM增删改查操作的常见方法详解

    JavaScript 实现HTML DOM增删改查操作的常见方法详解 1. DOM简介 DOM全称“Document Object Model”,中文翻译为文档对象模型,是一种对文档结构化的方式表达,即将文档中的每一个元素都抽象成为一个对象,便于JavaScript等脚本语言进行操作。 DOM是Web页面的编程接口,可以使用JavaScript、VBScri…

    JavaScript 2023年6月10日
    00
  • JS中利用FileReader实现上传图片前本地预览功能

    下面是详细讲解 JS 中利用 FileReader 实现上传图片前本地预览功能的完整攻略: 什么是 FileReader FileReader 是 HTML5 新增的一个 API,它允许网页异步读取存储在用户计算机上的文件数据,使用该 API 可以实现文件的预览、上传、加密等功能。 使用 FileReader 实现上传图片前本地预览功能的步骤 获取 file…

    JavaScript 2023年5月27日
    00
  • JS 正则 时间验证

    下面是 “JS 正则 时间验证” 的完整攻略。 什么是正则表达式 正则表达式是一种用来匹配字符串的表达式,常常被用于对文本进行搜索、替换等操作。在 JavaScript 中,我们可以使用正则表达式来检查一个字符串是否符合某种模式,或者从一个字符串中提取出满足某种模式的子字符串。 时间验证正则表达式 时间验证正则表达式用于验证时间格式是否符合预期,我们可以使用…

    JavaScript 2023年6月10日
    00
  • 详解微信小程序用定时器实现倒计时效果

    下面是详解微信小程序用定时器实现倒计时效果的完整攻略。 步骤一:引入moment.js库 我们需要使用moment.js库来处理日期和时间。在小程序的App.js文件中引入moment.js库,代码如下: // 引入moment.js库 const moment = require(‘./libs/moment.min.js’); // 将moment.js…

    JavaScript 2023年6月11日
    00
  • JavaScript实现动态添加、移除元素或属性的方法分析

    JavaScript实现动态添加、移除元素或属性的方法分析 动态添加元素 方法一:createElement()方法 我们可以使用createElement()方法来创建一个新的元素节点,然后将该节点添加到文档中的某个元素中作为其子元素。其基本语法为: document.createElement(tagName) 其中,tagName指定新节点的标签名称,…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部