vue-router 中hash模式和history模式。

在vue的路由配置中有mode选项,最直观的区别就是在url中hash 带了一个很丑的 # ,而history是没有#的。vue默认使用hash。

mode:"hash";
mode:"history";
hash
—— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。
比如这个 URL:http://www.aaa.com/#/hello,hash 的值为 #/hello。它的特点在于:hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。

history
—— 利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定浏览器支持)
这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。只是当它们执行修改时,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求。

因此可以说,hash 模式和 history 模式都属于浏览器自身的特性,Vue-Router 只是利用了这两个特性(通过调用浏览器提供的接口)来实现前端路由。

history模式的问题
       通过history api,我们丢掉了丑陋的#,但是它也有个问题:不怕前进,不怕后退,就怕刷新,f5,(如果后端没有准备的话),因为刷新是实实在在地去请求服务器的。
       在hash模式下,前端路由修改的是#中的信息,而浏览器请求时不会将 # 后面的数据发送到后台,所以没有问题。但是在history下,你可以自由的修改path,当刷新时,如果服务器中没有相应的响应或者资源,则会刷新出来404页面。

最新文章

  1. 【C++】类和对象(构造与析构)
  2. oracle 12c 创建PDB用户即Local User (PDB与CDB)
  3. GitHub 在 Clion2016.1.3 中的设置
  4. 软删除脏数据job笔记
  5. iOS中为网站添加图标到主屏幕
  6. 简洁清新的box样式
  7. linux内核神级list
  8. PostgreSQL的 create index concurrently
  9. "git rm" 和 "rm" 的区别
  10. Lua的元方法__newindex元方法
  11. c# in deep 之LINQ简介(1)
  12. 4.QPixmap,QTransform,绘图函数的使用
  13. 论C++如何优雅的使用数组
  14. Scala数组| 集合
  15. PHP基本随笔
  16. iptables简单用法
  17. edgedb 强大的对象关系数据库
  18. day17 面向对象-成员
  19. ThinkPHP 二维码生成
  20. tomcat 8080 冲突 急速解决方法 -------屡试不爽

热门文章

  1. LeetCode刷题系列——Add Two Numbers
  2. matlab练习程序(Ritter‘s最小包围圆)
  3. win7下tomcat5.5无法通过ip和127.0.0.1访问的解决方法
  4. 一个C#面试问题,要求是将字符串中重复字符从第二个开始都去掉,空格除外。然后显示的时候,从后往前显示。
  5. mysql导入导出csv
  6. create-react-app 打包后文件路径问题
  7. fastcgi+lighttpd+c语言 实现搜索输入提示
  8. 给于用户Agent权限设置
  9. 【转】Android手机分辨率基础知识(DPI,DIP计算)
  10. Maximum Profit