vue-router两种模式区别及使用注意事项详解

yizhihongxing

Vue-router两种模式区别及使用注意事项详解

前言

在学习Vue时,经常会使用Vue-router来实现前端路由。Vue-router有两种模式:history模式和hash模式。本篇文章将详细讲解这两种模式的区别,并给出使用注意事项。

区别

Hash模式

默认模式是hash模式,即地址栏的URL格式是以#/开头,比如:

http://localhost:8080/#/home

在hash模式下,当URL发生变化时,页面不会重新加载,而是通过捕获hash变化事件来进行局部更新。

在Vue-router中,通过mode: 'hash'来指定使用hash模式。

History模式

另一种模式是history模式,即地址栏的URL格式是普通的URL格式,比如:

http://localhost:8080/home

在history模式下,当URL发生变化时,页面会走正常的HTTP请求流程,因此在使用history模式时,需要保证服务器正确配置,以免出现404错误。

在Vue-router中,通过mode: 'history'来指定使用history模式。

注意事项

Hash模式下的路由传参

在hash模式下的路由传参,使用$route.query方式是无效的,应该使用$route.params。例如:

// 路由配置
{
  path: '/user/:id',
  component: UserComponent
}

// 跳转
router.push('/user/123')

// 获取参数
this.$route.params.id // 123

History模式下的服务端配置

当你使用history模式时,服务器应该正确的配置,以便在刷新页面时能够重定向到正确的路径。举一个栗子,假设我们的服务器是Nginx,需要在配置文件中添加以下配置:

location / {
  try_files $uri $uri/ /index.html;
}

这将使全部的路由请求都返回index.html页面,应用程序就可以在客户端接管。

示例

Hash模式下的示例

在hash模式下,我们可以定义如下路由:

const router = new VueRouter({
  mode: 'hash',
  routes: [
    {
      name: 'home',
      path: '/',
      component: HomeComponent
    },
    {
      name: 'about',
      path: '/about',
      component: AboutComponent
    }
  ]
})

上述路由配置中,我们定义了两个路由://about

在页面中可以通过<router-link>标签来切换路由。

<div>
  <h1>Hello Vue-router Hash Mode!</h1>
  <router-link to="/">Home</router-link>
  <router-link to="/about">About</router-link>
  <router-view></router-view>
</div>

History模式下的示例

在history模式下,我们需要在服务器中做出如下配置:

location / {
  try_files $uri $uri/ /index.html;
}

然后定义如下路由:

const router = new VueRouter({
  mode: 'history',
  routes: [
    {
      name: 'home',
      path: '/',
      component: HomeComponent
    },
    {
      name: 'about',
      path: '/about',
      component: AboutComponent
    }
  ]
})

与hash模式下相似,我们同样可以通过<router-link>标签来切换路由。

<div>
  <h1>Hello Vue-router History Mode!</h1>
  <router-link to="/">Home</router-link>
  <router-link to="/about">About</router-link>
  <router-view></router-view>
</div>

总结

通过本文的学习,我们了解了Vue-router两种路由模式的区别、以及注意事项。对于前端路由的学习和掌握,这是至关重要的,它会极大提高你的开发效率和代码的可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-router两种模式区别及使用注意事项详解 - Python技术站

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

相关文章

  • JS关于刷新页面的相关总结

    JS关于刷新页面的相关总结 在前端开发中,页面刷新是一项非常重要的操作。在JavaScript中,可以通过不同的方式来实现页面的刷新,本篇文章将对JS关于刷新页面的相关知识进行总结。 1. location.reload() location.reload() 方法用于重新加载当前文档。该方法会重新向服务器发送请求,从而获取最新的内容,刷新页面。下面是一个简…

    JavaScript 2023年6月11日
    00
  • 跟我学习javascript创建对象(类)的8种方法

    跟我学习JavaScript创建对象(类)的8种方法 本文将详细讲解JavaScript中创建对象或类的8种方法,包括对象字面量、构造函数、原型链、Object.create()、工厂模式、Class语法、继承与混合等内容。 1. 对象字面量 对象字面量是一种创建对象的简单方法,通过直接在花括号内定义对象的属性和方法,以冒号作为键名和键值的分隔符。例如: l…

    JavaScript 2023年5月27日
    00
  • 上周日为开始日,本周六为结束日,这一周在一年中的所在周数

    function getWeekNumber(date) { // 创建表示周日的新 Date 对象并获取其时间戳 const sunday = new Date(date.getFullYear(), date.getMonth(), date.getDate() – date.getDay()); const sundayTimestamp = sund…

    JavaScript 2023年4月24日
    00
  • JavaScript字符串检索字符的方法

    JavaScript中有多种方法可以用于检索字符串中的字符。以下是其中几种常用的方法。 charAt() 方法 charAt() 方法用于检索字符串中指定位置的字符。其语法如下: str.charAt(index) 其中,str 表示要检索的字符串,index 表示要检索的位置。注意,位置是从0开始计数的。 示例1:检索字符串中的第一个字符 var str …

    JavaScript 2023年5月28日
    00
  • JS数组的常用10种方法详解

    JS数组的常用10种方法详解 在JavaScript编程中,数组是一种十分常见的数据结构。JS数组提供了丰富的API供我们操作和处理数组,今天我们来详细讲解一下JS数组的常用10种方法。 1. push() arr.push(item1, item2, …, itemX) push()方法在数组的末尾添加一个或多个元素,并返回数组的新长度。例如: let…

    JavaScript 2023年5月27日
    00
  • 页面只能打开一次Cooike如何实现

    实现页面只能打开一次 Cookie 的方法可以通过在用户访问首次打开页面时,设置一个标记位cookie,如果后续用户再次访问相同的页面,判断是否存在该标记位。 下面给出两条示例来说明如何实现: 示例一:使用JavaScript和Cookie实现页面只能打开一次 JavaScript中可以使用 document.cookie 来获取、设置、删除cookie。我…

    JavaScript 2023年6月11日
    00
  • ES6之模版字符串的具体使用

    当我们需要将一些字符串拼接在一起时,通常会使用 + 号操作符或字符串模板生成函数。在ES6中,我们还可以使用模版字符串来进行字符串的拼接。 模版字符串使用反引号( )来包含字符串,并使用${}`来嵌入变量或表达式。例如: const name = "Lucy"; console.log(`Hello, ${name}!`); //输出:&…

    JavaScript 2023年5月28日
    00
  • Javascript Date getMilliseconds() 方法

    以下是关于JavaScript Date对象的getMilliseconds()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的getMilliseconds()方法 JavaScript Date对象的getMilliseconds()方法返回一个毫秒的数字(0-999)。该方法可用获取当前日期的毫秒数。 下使用Date的getMi…

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