前端路由的两种模式

本文详细介绍了前端路由的两种模式:hash模式和history模式。在hash模式中,利用URL hash的变化实现页面内容的无刷新更新,而history模式通过window.history对象的pushState和replaceState方法改变URL,不触发HTTP请求。两者在手动刷新时的行为有所不同,history模式可能需要服务端配合处理404情况。文章最后提到了JS面试题的分享。
摘要由CSDN通过智能技术生成

一、  hash模式

1、认识window.location

表示其链接到的对象的位置(URL)。在控制台打印window.location,可以看到有以下的属性和方法

其中window.location.hash会存有一个哈希值,这个hash是指URL中:

#之后的路径地址(包含#)

2、hash在页面中有什么作用

● 锚点定位

<script type="text/javascript">
function showNode (oNode) {var nLeft = 0, nTop = 0;for (var oItNode = oNode; oItNode; nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent);window.scrollTo(nLeft, nTop); 
}

function showBookmark (sBookmark, bUseHash) {if (arguments.length === 1 || bUseHash) {window.location.hash = sBookmark;return;}var oBookmark = document.querySelector(sBookmark);if (oBookmark) { showNode(oBookmark); }
}
</script> 
<p id="myBookmark1"><span class="intLink" onclick="showBookmark('#myBookmark2');">Go to bookmark #2</span>
</p>
...
<p id="myBookmark2"><span class="intLink" onclick="showBookmark('#myBookmark1');">Go to bookmark #1</span>
</p> 

通过以上代码,可以实现在同一个文档下,可以通过点击到达对应的书签处,那我们怎么知道当前处在哪个书签呢?可以将该书签作为一个URL的hash。

同样的场景,其实通过a标签也能实现

<nav><ul><li><a href="#md01"> 跳转到锚点1</a></li><li><a h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值