问题解决2:当vue路由采用history模式时,访问页面时会出现404找不到现象

以上几个教程里所使用的测试vue项目(demo1)均是十分简单的项目,完全没涉及到router路由或者其他的知识,今天一位小哥将自己的项目部署到nginx后,发现某些页面在访问的时候偶尔会出现404找不到,因此找到我,共同解决了这个问题。在解决过程中,发现这其实也是个老生常谈的问题,最主要就是vue项目的路由采用了history模式,才导致了这个问题。

既然问题已经找到了,那么就应该探究下为什么会出现这个问题:

  • 1.首先我们先理解一下SPA(单页Web应用)的概念:

由于我们是使用vue搭建的单页web应用(SPA),就是只有一个Web页面的应用,是在打开页面的时候加载单个HTML页面(index.html),在用户与程序交互的时候动态获取数据(axios)的Web页面程序。

  • 单页面应用程序:
    只有在第一次才会向后台请求页面,之后的每次请求都是去获取到必要的数据,由页面上的js解析数据后动态展示到页面上

  • 传统单页面程序:
    每次页面的跳转都是去服务器请求页面

因此,单页面应用程序的优势就体现出来了:
减少请求的密度,加快了页面的响应速度,降低了服务器上的压力,有着更好的用户体验,让用户在web app上也能感受到native app的流畅。

  • 2.引出路由

既然是单页面程序,那么我们看到的页面跳转是什么情况呢?一个页面怎么会来回跳转呢?此时就理所应当的引出vue中的重中之重,vue-router(单页面应用程序的路径管理器)。
vue的单页面应用是基于路由+组件的,路由用于设定访问路径,并且将路径组件进行连接;在传统的多页面应用中,是使用一些超链接<a></a>来进行页面跳转与切换的;而在vue-router中,不是页面的切换,而是组件的切换,所以,路由的本质就是 建立起url和组件之间的映射关系

  • vue-router的工作原理是什么呢?
    SPA(single page application):单页面应用程序,其中只有一个完整的页面(index.html);它在加载页面的时候,不会加载所有页面,而是只更新某个指定的容器中的内容。单页面应用程序的核心之一就是:更新视图而不重新请求页面;vue-router在实现单页面前端路由的时候,提供了两种方式:Hash模式History模式,根据**mode参数来自由选择采用什么方式。
    1. Hash模式
      vue-router默然采用的就是Hash模式---采用URL的Hash来模拟一个完整的URL,于是当URL发生改变的时候,页面不会重新加载。hash(#)是URL的锚点,代表的是网页中的一个位置,单单改变#后面的部分,浏览器只会滚动到相应的位置,而不会去后端请求网页资源,也就是说#是用来指导浏览器动作的,对服务器端完全不起作用,HTTP请求中也不包括#;同时每一次改变#后面的部分,都会在浏览器的访问历史中增加一个记录,当使用浏览器的“后退”按钮的时候,就可以返回上一个位置;所以说Hash模式是使用锚点值的改变,根据不同的值,渲染指定DOM元素的不同数据。
    1. history模式
      由于Hash模式中会在URL上自带#,如果不想要很丑的#的话,我们可以使用路由的history模式,只需要在配置路由规则的时候,加入值:mode:'hostory',这种模式充分利用了history.pushState API来完成URL跳转而无需重新加载页面。
//main.js文件中
const router = new VueRouter({
  mode: 'history',
  routes: [...]
})

当你在使用history模式的时候,URL就会像是正常的URL,没有#存在,比较美观。不过这种模式如果不加以配置的话,会有一个深坑,深坑出现的原因简单介绍一下:

当我们使用history模式的时候进行页面跳转的时候,其vue-router原理是使用HTML5的新接口pushState和replaceState,这两个接口的最大的特点就是改变URL地址,但却不刷新页面,注意!!!仅仅改变网址,网页不是真正的跳转了,也不会获取到新的资源,本质上,网页还是停留在原来的页面(index.html)

  • 举个栗子🌰:
    打开首页后,你的URL显示www.xxx.com/home,这时候能正常显示,没问题,此时你进入到注册页,URL此时是www.xxx.com/home/reg,这个时候,当你点击刷新时,浏览器就会拿着当前的地址www.xxx.com/home/reg去后台请求该资源,后台肯定没有对应的资源,所以就会报404找不到,这样就很明了了!

  • 该怎样解决呢?
    栗子🌰中出现的问题,我们可以想想一下,假如一旦浏览器向服务器请求找不到404时,就还跳回到最初的index.html页面,页面再根据URL上的路径跳转到对应的组件里不就好了嘛!事实上,我们就是这么取解决的,在服务器上进行以下相关配置即可解决该问题!
    vue-router history后端配置例子

至此,还问题的前因后果已经讲清楚了,以后再遇到类似的问题也会有解决思路了,这样就很好,希望以后一直坚持住!

页面知识参考自:
https://blog.csdn.net/weixin_45111741/article/details/101028344
https://blog.csdn.net/sinat_17775997/article/details/80688397

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 清早路过曾经工作的地方,孩子们放假了,校园里显得冷清。隔着门远远地看了一眼,是完全的熟悉。偶遇了曾经的同事,并不是...
    碧云女子阅读 449评论 0 1
  • (摘自《儿童心理学手册》第六版第四卷第章【学前儿童发展与教育】) 表征思维 在儿童发展的同时,他们开始迷恋假装游戏...
    瓦尔妲的星辰阅读 4,916评论 0 1
  • 暑假第43天,周一。 昨夜其实是今天凌晨一点孩子才睡觉,赶作业赶成这个节奏我也是无语了。今早估...
    记得祝福阅读 182评论 0 3
  • 前不久,我家亲戚建了一个家人群。分布在全国各地,还有在国外的家人们,一时间纷纷聚在一起。 大表哥问我:“最近为什么...
    安妮的成长日记阅读 1,886评论 2 7
  • 从零开始的时,你就可以做得更好吗?不是,因为我们不是上帝,所以做不到最好。 每当我们开始做一件事后,才过了几...
    蜀黍kang阅读 252评论 1 1