唯品秀前端博客
当前位置: 前端开发 > Vue.js专区 > Vue Router中hash和history模式区别

Vue Router中hash和history模式区别

2019-07-08 分类:Vue.js专区 作者:管理员 阅读(402)

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

具体区别

其实很多人觉得这两个模式只是地址栏不同而已,或者说只是美观不美观的问题,个人觉得其实并非完全如此。大家如果做过项目上线应该知道,使用history模式是需要后端配合的,后端具体做了啥?如下:

Apache

1
2
3
4
5
6
7
8
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.html [L]
</IfModule>

nginx

1
2
3
location / {
  try_files $uri $uri/ /index.html;
}

原生 Node.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const http = require('http')
const fs = require('fs')
const httpPort = 80

http.createServer((req, res) => {
  fs.readFile('index.htm', 'utf-8', (err, content) => {
    if (err) {
      console.log('We cannot open "index.htm" file.')
    }

    res.writeHead(200, {
      'Content-Type': 'text/html; charset=utf-8'
    })

    res.end(content)
  })
}).listen(httpPort, () => {
  console.log('Server listening on: http://localhost:%s', httpPort)
})

不管是什么后端语言,它其实要做的事情只有一个,就是在你前端访问二级页面时候服务器找不到对应资源,原本应该返回404,那么现在强制给你返回index.html首页,配合前端的路由规则,然后前端显示对应的组件

那这么看来,是不是就是可以理解,如果是用history模式,那么你在请求二级页面刷新时候,其实你执行过程中比模式的hash多弯一步路,这可能就是最根本的差别了。

「两年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(1) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
1

谢谢你请我吃鸡腿*^_^*

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 条评论 - Vue Router中hash和history模式区别

博客简介

唯品秀博客: weipxiu.com,一个关注Web前端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的前端博客,期待您的参与,主题源码 

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 243 篇
  • 草稿数目: 0 篇
  • 分类数目: 15 个
  • 独立页面: 6 个
  • 评论总数: 906 条
  • 链接总数: 14 个
  • 标签总数: 433 个
  • 建站时间: 1067 天
  • 注册用户: 3710 人
  • 访问总量: 8696449 次
  • 最近更新: 2019年11月14日
服务热线:
 173xxxx7240

 QQ在线交流

 旺旺在线