Vue-router中的history模式和hash模式
还记得在我们从零开始搭建一个Vue-cli3.0项目时,预设置中出现过这样一条询问:

即是否选择历史模式,当时我们很坚决地选了否,那么哈希模式和历史模式究竟有什么区别,今天我们来一探究竟。
哈希模式(hash mode)
这是开发中的默认模式,在url中永远带着#号,在浏览器方面其支持度极佳,甚至兼容低版本的ie浏览器。说到这里就不得不说一下前端路由的原理:window是可以监听到哈希值的变化的(onhashchage事件),这就意味着:当url中的哈希值发生了变化,无需发起http请求,window也可以监听到这种变化,并按需加载前端的代码块。哈希模式也是当下单页面应用的标配,所谓前端路由的强大之处也就在这里:路由分发不需要服务器来做,前端自己就可以完成。网易云音乐的首页也是用的哈希模式:

历史模式(history mode)
在url中不带#号,用的是传统的路由分发模式,即当用户输入一个url时,是由服务器在接受用户的这个输入请求,并由服务器解析url的路径然后做相应逻辑处理。如果要做到改变url但又不刷新页面的潮流效果,就需要前端用上pushState和replaceState两个H5的api,来把url替换的同时又不刷新页面,但需要后端人员去配置url重定向的问题,不然在访问二级页面时,做刷新操作会报404的错误。这和哈希天生就不会刷新页面的特性不同,历史模式来做这件事属于一种“障眼法”,或者说是“老技术干新活”,又废又麻烦。
总结及个人观点:
“带#号不美观”这个说法,我个人是不太同意的,实际上不管带不带#号,真正愿意去记住你的域名,直接在地址栏输入的用户有多少呢?比如你想打开腾讯视频,你记得域名是多少吗?打开vue.js官网,打开mdn官网,他们的域名你是否又能章口就莱?其实绝大部分人都不关心这个,要么从书签栏进入,要么从百度搜索官网名字进入。今时今日我们要打某人的电话,不会手动地去数字键盘一个个敲电话号码,而是直接从电话薄找,甚至直接通过语音助手拨打。人是很懒的,前端路由是潮流。
Vue-router中的history模式和hash模式的更多相关文章
- Vue router中携带参数与获取参数
Vue router中携带参数与获取参数 携带参数 query方式,就是?+&结构,例如/login?id=1 <router-link :to="{ name:'login' ...
- 如何去除vue项目中的 # --- History模式
来自:https://www.cnblogs.com/zhuzhenwei918/p/6892066.html 侵删 使用vue-cli搭建的环境,在配置好路由之后,可以看到下面的情况: 但是不难发现 ...
- 前端路由的两种模式: hash 模式和 history 模式
随着 ajax 的使用越来越广泛,前端的页面逻辑开始变得越来越复杂,特别是spa的兴起,前端路由系统随之开始流行. 从用户的角度看,前端路由主要实现了两个功能(使用ajax更新页面状态的情况下): 记 ...
- html5的 history模式和hash模式
直观区别 hash 带一个# history 没有# 各自特点 hash: 仅 hash 符号之前的内容会被包含在请求中,**因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误.* ...
- vue router 中,children 中 path 为空字符串的路由,是默认打开的路由(包括在 el-tabs 中嵌套路由的情况)
详见该页面的最后一个代码块:https://router.vuejs.org/zh/guide/essentials/nested-routes.html#%E5%B5%8C%E5%A5%97%E8% ...
- 【前端路由】Vue-router 中hash模式和history模式的区别
咱们今天说说VUE路由的hash模式与history模式的区别,这个也是面试常问的问题,不要小看这道题其实问到这里的时候那个面试官应该是个大牛,开发经验丰富,这个题其实就是考验你的开发经验是否属实. ...
- Vue路由的hash模式与history模式的区别?
1.首先router有两种模式:hash模式(默认).history模式(需配置mode: 'history') hash和history的区别? hash ...
- Vue 编程式导航(通过js跳转页面)以及路由hash模式和history模式
第一种方法: this.$router.push({path:'shopcontent?aid=3'} 第二种方法 this.$router.push({name:'news'}} 通过在ma ...
- [Vue 牛刀小试]:第十二章 - 使用 Vue Router 实现 Vue 中的前端路由控制
一.前言 前端路由是什么?如果你之前从事的是后端的工作,或者虽然有接触前端,但是并没有使用到单页面应用的话,这个概念对你来说还是会很陌生的.那么,为什么会在单页面应用中存在这么一个概念,以及,前端路由 ...
随机推荐
- button的onclick事件给函数传递参数
ul+='<button onclick="pay(\''+regiId+'\')" >按钮</button>' //此为原生JS页面拼接//此方式的关键就 ...
- PHP 开发工程师基础篇 - PHP 数组
数组 (Array) 数组是 PHP 中最重要的数据类型,可以说是掌握数组,基本上 PHP 一大半问题都可以解决. PHP 数组与其他编程语言数组概念不一样.其他编程语言数组是由相同类型的元素(ele ...
- ETCD:与etcd进行交互
原文地址:Interacting with etcd 与etcd进行交互 用户更多的是通过putting或者是getting从etcd获取一个键对应的值.这一部分描述了如何通过etcdctl做这些工作 ...
- jquery使用on()方法绑定的事件被执行多次的问题
jQuery用on()方法绑定了事件之后,在代码执行过程中,可能会遇到事件被多次执行的情况. 本来以为是事件冒泡的问题,后来发现是on()方法的特性引起的问题. 简单还原一下问题的场景 这里简单还原一 ...
- ef实现一次查询多个聚合函数的字段
想用ef来写一个统计字段的语句,如下所示 select sum(price) as price_total, sum(amount) as amount_total from table1 发现似乎实 ...
- 1.1选择select
一.核心(Core) 1.1选择 1.1.1 d3.select(selector) 选择第一个与指定字符串selector匹配的元素,如果没有就返回空. 例如: <table> &l ...
- URL跳转绕过姿势
POC "@" http://www.target.com/redirecturl=http://whitelist.com@evil.com "\" http ...
- Dynamics CRM - js中用webapi基于fetchxml查询遇到的问题 -- Invalid URI: The Uri scheme is too long.
最近用WebApi做基于Fetchxml的查询的时候,遇到一个很蛋疼的报错:Invalid URI: The Uri scheme is too long. 检查了整个URL,也没发现有什么问题. - ...
- OpenCV:获取图像当中某一点的坐标
import numpy as np image=np.zeros((300,300,3),dtype='uint8') (cx,cy)=image.shape[1]//2,image.shape[0 ...
- WPF--事件列表
事件 描述 Annotation.AnchorChanged 新增.移除或修改 Anchor 元素时发生. Annotation.AuthorChanged 新增.移除或修改 Author 元素时发生 ...