修改页面 hash(锚点)可以实现修改 URL 而不重新加载页面
window.location = '#home'
监听页面 hash 变化,当 hash 改变时,动态切换视图
window.onhashchange = function () {
// 根据hash切换视图
}
使用 window.history.pushState 和 window.history.replaceState 也可以使用修改 URL 而不重新加载页面
function changeRoute () {
window.history.pushState(state, title, url) // 新建一条history记录
// do sth 切换视图
}
window.history.replaceState(state, title, url) // 使用新history记录代替当前记录
当浏览器前进、后退,或者在JS中使用back()、forward()、go()等改变当前所在history记录时会触发popstate事件
window.onpopstate = function () {
// 根据URL切换视图
}
页面 URL 改变后,用户刷新页面,会向服务器请求当前 URL,因此服务端需要配置对应的路由。