iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >聊聊vue的两种路由模式(哈希和历史)
  • 321
分享到

聊聊vue的两种路由模式(哈希和历史)

Vue前端JavaScript 2023-05-14 22:05:02 321人浏览 八月长安
摘要

路由器分别有两种模式:一种是hash模式、另一种是history模式,在使用Vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试

聊聊vue的两种路由模式(哈希和历史)

路由器分别有两种模式:一种是hash模式、另一种是history模式,在使用Vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式

这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试当中被问到

今天就一起来学习

哈希模式(hash)

vue-router默认hash模式,使用url的哈希(hash)来模拟一个完整的URL,当URL改变时,页面不会重新加载。【相关推荐:vuejs视频教程WEB前端开发

如下所示

Http://localhost/#home

特点: #号后面的参数不会传送给服务器,兼容性好,不会作为路径的一部分发送给服务器,也就是它不会包括在HTTP请求体中,对后端完全没有影响,只是我们前端同学自己玩

页面刷新时,会停留在当前页面,不会重新加载

如果觉得hash路径很丑,不简洁,我们可以用路由的history模式,这种模式充分利用history.pushState apireplaceState,来完成,url跳转而无需重新加载页面

历史模式

history模式:在实例化配置对象中添加mode模式,值为history就可以了的 经过改造后,hash模式就会变成history模式

const router = new VueRouter({
  mode: 'history',
  routes: [...]
})

这两种方式的使用都是没啥问题的,如果你在意浏览器url的颜值,#符号掺杂在url里看起来确实有些不优雅

如果你想url更好看,那么就使用history模式

但是:在hash模式下,使用hash符号之前的内容会被包含在请求体中,#号后面的不会发送给服务器

history模式下,前端的URL必须和实际向后端发起请求的URL保持一致

如:https://itclan.cn/fontend/id,如果后端缺少没有对/fontend/id的路由处理,那么它将返回404错误

如果你想要支持history模式,那么需要后端同学支持,想要彻底解决404的问题,需要与后端同学协商,因为需要后端与前端路由做匹配

在服务端增加一个覆盖所有情况的时候的候选资源,如果url匹配不到任何静态资源,应该返回一个首页页面

如果出现404,容易让用户觉得这是一个Bug

如何解决前台刷新页面404问题

解决这个问题:如果你用的是node做后端服务,那么在Node后台中可以加入一个中间件比如:connect-history-api-fallback即可解决这种404问题

如果是javaPHP,找后端同学,让后端路由与前端路由做匹配,或是用Ngnix做中间代理

如下这段简易的Node服务代码,可以命名为server.js,同时安装express以及connect-history-api-fallback中间件

启动后端服务执行命令node server.js

const express = require('express');
const history = require('connect-history-api-fallback')

const app = express()
app.use(history())
app.use(express.static(__dirname+'/static'));


app.listen(5005,(err)=> {
  if(!err)consle.log('服务器启动成功了')
})

把前端打包生成的dist文件内的代码,放到static中,通过这一操作,即可解决刷新页面,404的问题

对单页面spa的应用理解

我们的前端使用的vue-router中的两种模式,就是单页面应用,整个应用只有一个router路由器,是可以通过$router属性获取到

也就是说,整个应用只有一个完整的页面,同时,点击页面中的导航链接,不会刷新页面,只会是页面的局部更新

而我们页面中的数据,往往需要通过ajax请求来获取

现在开发的新项目,都是前后端分离,基本上都是单页面应用

总结

前端路由,有两种模式,一种是hash模式,另一种是history模式,其中hash模式是默认模式,#后面的不会发送给服务端,不会重新刷新加载页面,而history模式,url虽然比较好看,但是想要完整支持,需要后端同学提供支持,后端路由与前端的路由需要做匹配

否则部署到线上,一刷新页面,会出现404的问题

(学习视频分享:vuejs入门教程、编程基础视频)

以上就是聊聊vue的两种路由模式(哈希和历史)的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 聊聊vue的两种路由模式(哈希和历史)

本文链接: https://www.lsjlt.com/news/207471.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 聊聊vue的两种路由模式(哈希和历史)
    路由器分别有两种模式:一种是hash模式、另一种是history模式,在使用vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试...
    99+
    2023-05-14
    Vue 前端 JavaScript
  • vue路由的两种模式怎么实现
    这篇文章主要介绍“vue路由的两种模式怎么实现”,在日常操作中,相信很多人在vue路由的两种模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue路由的两种模式怎么...
    99+
    2024-04-02
  • vue的两种路由模式源码分析
    这篇文章主要介绍“vue的两种路由模式源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue的两种路由模式源码分析”文章能帮助大家解决问题。哈希模式(hash)vue-router默认hash...
    99+
    2023-07-06
  • Vue中Router路由两种模式hash与history详解
    hash 模式 (默认) 工作原理: 监听网页的hash值变化 —> onhashchange事件, 获取location.hash 使用 URL 的 hash 来模拟一个完整...
    99+
    2024-04-02
  • vue中路由的两种模式以及实现原理
    Vue.js 是一种流行的前端框架,通过其优秀的路由管理模块实现了单页应用(Single-page Application,SPA)的开发。Vue 路由管理模块(Vue Router)具有两种模式:历史模式(History mode)和哈希...
    99+
    2023-05-23
  • vue路由跳转router-link清除历史记录的三种方式(总结)
    目录路由跳转router-link清除历史记录官方文档提供了如下三种方式vue跳转后不记录历史记录路由跳转router-link清除历史记录 1.在vue项目中说起路由跳转,我们最先...
    99+
    2024-04-02
  • Vue的三种路由模式总结
    目录路由模式解析1.hash模式2.history模式3.abstract模式路由三个基本概念vue中实现路由还是相对简单的vue-cli创建一个项目体验一下, 安装vue-rout...
    99+
    2024-04-02
  • vue前端路由以及vue-router两种模式实例详解
    目录前言1、什么是前端路由(1)后端路由阶段(2)前后端分离路由阶段(3)单页面应用阶段2、vue-router 提供了 hash 和 history 两种路由模式(1)hash模式...
    99+
    2024-04-02
  • 详解Vue路由传参的两种方式query和params
    Vue路由传参的两种方式query和params 一、router-link 1. 不带参数 <router-link :to="{name:'home'}"> <...
    99+
    2024-04-02
  • vue的几种路由模式有哪些区别
    这篇文章主要介绍了vue的几种路由模式有哪些区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue的几种路由模式有哪些区别文章都会有所收获,下面我们一起来看看吧。vue路由有三种模式:Hash、History...
    99+
    2023-07-05
  • Vue路由模式中的hash和history模式详细介绍
    目录1. 路由概念2. hash模式3. history路由模式1. 路由概念 路由的本质就是一种对应关系,根据不同的URL请求,返回对应不同的资源。那么url地址和真实的资源之间就...
    99+
    2024-04-02
  • vue中this.$router.push()路由传值和获取的两种常见方法汇总
    目录一、关于点击事件实现跳转并传递参数的方法二、this.$router.push()中的参数规则三、参数的接收四、传递的参数是对象或数组       ...
    99+
    2022-12-15
    vue 中this.$router.push()路由传值和获取 vue 中this.$router.push()路由
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作