Vue路由模式(history模式 刷新页面空白解决方案)

这篇具有很好参考价值的文章主要介绍了Vue路由模式(history模式 刷新页面空白解决方案)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

vue路由的三种模式 Hash模式History模式abstract 模式

一、Hash模式

  • Vue3:
  • Hash 模式是用 createWebHashHistory() 创建的:
import { createRouter, createWebHashHistory } from 'vue-router'
const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    //...
  ],
})
  • Vue2
import Router from 'vue-router'
const router = new Router({
	node: 'hash',
	routes: [
		//...
	]
})

它在内部传递的实际 URL 之前使用了一个哈希字符(#)。由于这部分 URL 从未被发送到服务器,所以它不需要在服务器层面上进行任何特殊处理。不过,它在 SEO 中确实有不好的影响。如果你担心这个问题,可以使用 HTML5 模式。

二、HTML5 (History)模式

  • Vue3
  • History模式是用 createWebHistory() 创建的:
import { createRouter, createWebHistory} from 'vue-router'
const router = createRouter({
  history: createWebHistory(),
  routes: [
    //...
  ],
})
  • Vue2
import Router from 'vue-router'
const router = new Router({
	node: 'history',
	routes: [
		//...
	]
})

当使用这种历史模式时,URL也会看起来很 “正常”,例如 https://example.com/user/id

history.go(-2);//后退两次
history.go(2);//前进两次
history.back(); //后退
hsitory.forward(); //前进

不过,问题来了。由于我们的应用是一个单页的客户端应用,如果没有适当的服务器配置,用户在浏览器中直接访问 https://example.com/user/id,就会得到下图 404 的错误。这就尴尬了。Vue路由模式(history模式 刷新页面空白解决方案),服务器相关配置及使用,nginx,vue

Tips:本人参与的项目常见部署访问基本是Nginx,偶尔有使用Internet Information Services (IIS)

  • 解决方法如下:

1、nginx配置

修改nginx.conf文件如下:

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

or

location / {
     try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
     index index.html index.htm;
 }
 #对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
 #因此需要rewrite到index.html中,然后交给路由在处理请求资源
location @router {
    rewrite ^.*$ /index.html last; # /index.html 为项目根目录
}

2、Internet Information Services (IIS)配置

a、安装 IIS UrlRewrite

b、在网站的根目录下创建一个 web.config 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Handle History Mode and custom 404/500" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

三、Abstract 模式

abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,暂未实际使用过,后期补充相关实现

  • Vue3
  • 在 SSR 上使用时,你需要手动传递相应的 history:
  • Abstract 模式是用 createMemoryHistory() 创建的:
// router.js
let history = isServer ? createMemoryHistory() : createWebHistory()
let router = createRouter({ routes, history })
// 在你的 server-entry.js 中的某个地方
router.push(req.url) // 请求 url
router.isReady().then(() => {
  // 处理请求
})

总结

以上就是Vue不同的历史模式内容,本文简单介绍了Vue History路由模式的使用,而具体的项目配置需根据项目实际情况配置。

感谢阅读!
参考:Vue路由的不同的历史模式文章来源地址https://www.toymoban.com/news/detail-527579.html

到了这里,关于Vue路由模式(history模式 刷新页面空白解决方案)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3在运行时路由可以正常跳转,但是页面空白,刷新页面恢复正常[已解决]

    vue3在运行时路由可以正常跳转,但是页面空白,刷新页面恢复正常,在网上寻找很久说是keepAlive的原因,后来看了看我的代码~ 原来的代码: 改后的代码: 由此可见,根元素一定要由一个div去包裹住! template必须有且只能有一个div 在这样才会正常显示~ 原理: 这里我们要先

    2023年04月27日
    浏览(59)
  • vue项目history模式刷新404问题

    vue项目history模式部署到服务器后 ,根路径访问没有问题,但是进入其他功能再刷新页面就会出现404,因为你没在nginx或者apache配置上面加上重定向跳转。 解决办法,只需要加上这段配置: nginx配置内容: apache配置内容: 这句配置的意思是每次匹配url路径时候找不到对应静态

    2024年02月11日
    浏览(47)
  • vue3 关于动态路由刷新出现空白页最优解

    原因:刷新页面的时候动态路由会刷新掉,然后动态路由会重新加载, 而匹配路由会在加载路由之前 ,所以会导致空白页 解决办法:递归再调用beforEach,或者直接跳回首页 在你加载路由的地方 递归调用:next({ …to, replace: true });(慎用,如果你的后台管理table是带标签会有

    2024年02月15日
    浏览(53)
  • VUE 配置history路由模式配置

    vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。 当你使用 history 模式时,URL 就像正常

    2024年02月10日
    浏览(44)
  • Vue 路由:Hash 模式与 History 模式详解

            Vue 是一款流行的前端框架,它提供了强大的路由功能,用于构建单页应用程序(SPA)。Vue 路由有两种模式:Hash 模式和 History 模式。本文将详细介绍这两种模式的原理、特点和使用场景,帮助你在 Vue 项目中选择适合的路由模式。         Hash 模式是 Vue 路由的

    2024年02月06日
    浏览(52)
  • 解决Vue3+Vite3 打包部署到nginx后配置非根目录刷新页面报错空白

    报错内容 解决方法 router文件 vite.config.ts nginx.conf 配置中路径apps是我自建的存放前端页面的文件夹 起关键作用的是 try_files $uri $uri/ /demo/index.html ,当然上面项目文件夹demo也需保持一致 alias 后面的路径是Vue项目打包后dist静态文件服务器存放路径,一般在nginx下面建一个文件夹

    2024年02月11日
    浏览(59)
  • Vue学习笔记 之 History 路由 和 Hash 路由的区别 及 History 模式时,Nginx的配置方式

    一、History 模式、Hash 模式   Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用的前端路由。它允许你通过定义路由配置来映射不同的 URL 到对应的组件,实现页面间的跳转和导航。Vue Router 支持两种路由模式:history 模式和 hash 模式。 1、History 模式   在 History 模式

    2024年02月07日
    浏览(37)
  • Vue2嵌入HTML页面空白、互相传参、延迟加载等问题解决方案

    一、需求分析       最近做的一个用H5加原生开发的html项目,现需要集成到Vue2.0项目里面来。遇到的相关问题做个记录和总结,以便能帮到大家避免踩坑。 二、问题记录 1、页面空白问题      将html页面通过iframe的方式嵌入进来之后,发现页面是空白的,不显示任何元素,

    2024年02月13日
    浏览(42)
  • vue路由的两种模式 hash与history

    Vue 路由是 Vue.js 框架提供的一种机制,用于实现单页面应用(Single-Page Application,简称 SPA)中的前端路由功能。它允许通过定义不同的路由路径和对应的组件,来管理应用程序中不同页面或视图的展示和切换。 Vue 路由使用了浏览器的 History API 或 hash(#)来实现路由导航。通

    2024年02月10日
    浏览(51)
  • vue3如何切换hash/history两种路由模式

    本文介绍了在vue3中,如何使用history和hash两种路由模式的方法 1、history模式 使用createWebHistory 2、hash模式 使用createWebHashHistory 综上所述: history 对应 createWebHistory hash 对应 createWebHashHistory

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包