【vue高频面试题—路由篇】:Vue Router 路由跳转和location.href跳转有什么区别

73 阅读2分钟

1. 核心区别

Vue Router 路由跳转

  • 基于前端路由(SPA 单页应用)

    • 仅改变 URL 地址,不刷新页面。
    • Vue Router 的跳转会动态加载相应的组件,而无需重新加载整个页面资源(HTML、CSS、JS 等)。
  • 使用方法

    • 编程式导航:router.push()router.replace()
    • 声明式导航:<router-link>

location.href 跳转

  • 基于浏览器原生导航(多页应用)

    • 直接刷新整个页面,浏览器会重新请求服务器加载页面资源。
    • 会触发页面的完整生命周期(如 window.onload)。
  • 使用方法

    • 设置 window.location.href 或直接操作 location.href

2. 使用方式对比

Vue Router 跳转示例

// 编程式导航
this.$router.push('/home'); // 跳转到 /home
this.$router.replace('/about'); // 替换当前路由为 /about

// 动态参数
this.$router.push({ name: 'user', params: { id: 123 } });

location.href 跳转示例

// 改变浏览器地址并刷新页面
window.location.href = '/home';

// 动态地址
window.location.href = `/user?id=${123}`;

3. 特性对比

特性Vue Router 跳转location.href 跳转
是否刷新页面不刷新页面,仅更新视图刷新页面,重新加载所有资源
历史记录可控制(push 会新增历史记录,replace 不新增)总是新增历史记录
页面性能高效,无需重新加载页面资源开销大,需要重新加载 HTML、CSS、JS 等资源
传参方式支持动态参数和查询参数(paramsquery支持查询参数(通过 URL 字符串拼接)
浏览器默认行为不触发原生跳转事件触发完整的浏览器跳转逻辑
单页应用支持完全支持 SPA(单页应用)主要用于多页应用
SEO 支持需要配合服务端渲染(SSR)优化默认支持(因为每次跳转都会请求服务器)

4. 使用场景

Vue Router 跳转适用场景

  • 单页应用(SPA) :在前端控制导航,更新视图而不刷新页面。
  • 动态组件加载:使用 Vue 的异步组件加载,按需加载页面组件。
  • 客户端渲染:所有内容通过前端渲染后显示在页面中。
  • 用户体验优先:页面切换速度快,用户不需要等待浏览器刷新。

location.href 跳转适用场景

  • 多页应用(MPA) :传统网页中,页面间的跳转需要请求新页面。
  • 强制刷新:在某些情况下需要刷新整个页面(如退出登录后重定向到登录页)。
  • 与外部链接交互:跳转到非 Vue 管理的页面或外部域名。

5. 总结

  • Vue Router 路由跳转 是 SPA 应用的核心工具,适用于需要频繁切换页面但不希望刷新整个页面的场景,用户体验更流畅。
  • location.href 跳转 是原生浏览器跳转方式,适用于传统多页应用或者需要强制刷新页面的场景。

在 Vue 项目中,优先使用 Vue Router 来实现页面间的跳转。如果确实需要刷新页面(如退出登录或跳转到外部链接),可以使用 location.href