路由实现单页面原理初步了解

本文介绍了单页面应用中路由的基本原理,通过监听URL变化,使用Ajax请求数据并更新DOM。主要探讨了两种实现方式:hash模式,利用location对象的hash属性及hashchange事件;以及history模式,借助H5的pushState接口和popstate事件实现不刷新页面的URL切换,支持浏览器历史操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现的基本原理是监听url的变化,截取url,然后根据url用Ajax请求数据,替换DOM。
通常有两种实现路由的方式:
1.hash模式
2.history模式

hash模式

location对象有一个hash属性,它的作用是返回或设置url中从#开始的url。
并且#后面的hash值的变化不会导致浏览器向服务器发送请求,也就不会导致页面刷新。
hash值的变化会触发hashchange事件

window.addEventListener('hashchange',function () {
//获取hash值
let hash = document.location.hash;
//之后根据hash值调用Ajax请求数据替换dom
})

history模式

1.history.pushState
pushstate是H5的新接口,用pushstate方法可以改变url而不刷新页面。

history.pushstate(state,title,url)

state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。允许设为null。
title:新页面的标题,但是所有浏览器目前都忽略这个值,设为null。
url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。
2.popstate事件
popstate事件由history.go()和history.back()触发,配合popstate可以让路由支持浏览器的历史前进和后退操作。

window.addEventListener('popstate', function(){
//自定义Ajax事件
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值