欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 【JavaScript】不使用框架路由进行页面跳转

【JavaScript】不使用框架路由进行页面跳转

2025/5/16 0:13:07 来源:https://blog.csdn.net/XiugongHao/article/details/147228488  浏览:    关键词:【JavaScript】不使用框架路由进行页面跳转

一、普通跳转(页面刷新)

1. 使用 window.location 系列方法

window.location.href
直接修改 URL 实现跳转,保留浏览器历史记录:

methods: {goToHome() {window.location.href = '/home'; // 跳转到首页}
}

window.location.replace()
替换当前页面,不保留历史记录(适用于登录后跳转等场景):

methods: {redirectToLogin() {window.location.replace('/login');}
}
2. 动态创建 <a> 标签模拟点击

通过 JavaScript 创建隐藏的 <a> 标签并触发点击事件,适用于需要动态生成跳转链接的场景:

methods: {jumpToExternal(url) {const a = document.createElement('a');a.href = url;a.style.display = 'none';document.body.appendChild(a);a.click();document.body.removeChild(a);}
}

二、无刷新跳转(单页应用效果)

1. 使用 history.pushState()

通过 HTML5 History API 修改 URL 并动态加载组件,实现无刷新跳转:

methods: {goToDetails(id) {// 修改 URLhistory.pushState({ path: `/details/${id}` }, '', `/details/${id}`);// 手动加载组件(需自行实现逻辑)this.loadComponent(`/details/${id}`);},loadComponent(path) {// 根据路径渲染对应组件(如使用动态组件或条件渲染)this.currentComponent = path === '/details' ? DetailsComponent : null;}
}

注意:需监听 popstate 事件处理浏览器前进/后退操作:

mounted() {window.addEventListener('popstate', (event) => {if (event.state?.path) {this.loadComponent(event.state.path);}});
}
2. 条件渲染组件

通过 Vue 的 v-if 或动态组件 (<component :is="">) 切换显示内容,模拟页面跳转效果:

<template><div><Home v-if="currentPage === 'home'" /><About v-if="currentPage === 'about'" /><button @click="currentPage = 'about'">跳转到关于页</button></div>
</template>
<script>
export default {data() {return { currentPage: 'home' };}
};
</script>

四、其他场景

1. 新窗口打开页面

通过 window.open() 实现新窗口跳转(如打开外部链接):

methods: {openNewWindow() {window.open('https://example.com', '_blank');}
}

技术选型建议

方法适用场景优缺点
window.location简单跳转或外部链接实现简单,但会触发页面刷新
history.pushState单页应用无刷新跳转需手动处理组件加载和浏览器历史事件
动态组件条件渲染少量页面切换无需路由,但维护成本随页面数量增加而提高
URL参数/LocalStorage跨页面传参数据需手动管理,可能存在安全性问题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词