当前位置: 首页 > 知识库问答 >
问题:

vue.js - 请问使用vue-router与v-show分别实现选项卡有什么区别?

施俊明
2023-10-28

我们开发项目,无论是后台管理系统,还是移动应用,经常会使用到各式各样类似选项卡的切换组件,如下:

1、管理后台:
image.png

2、选项卡:
image.png

3、移动端底部tabber:
image.png

问题如下:
1、实现这种类选项卡组件有2中方法:分别是 vue-router的嵌套路由v-show, 请问2种实现有什么区别(个人看不出区别),来回切换时,能否缓存原本查看的内容呢?什么时候使用vue-router的嵌套路由,什么时候使用v-show

2、vue-router 嵌套路由,在不断切换子路由时,父路由的组件是从新加载?还是缓存了无需再次加载呢?

请问大神们,能否详细解答?谢谢!

共有2个答案

袁运锋
2023-10-28
  1. v-show 顾名思义,切换靠的是隐藏与显示,所以所有组件都会创建出来,不会销毁
  2. vue-router 则会创建和销毁组件
  3. 如何抉择?我觉得两者不存在竞争关系。很明显,vue-router 需要跟 URL 关联起来;而 v-show 则仅限于同一个页面里不同内容的呈现。
司徒池暝
2023-10-28

这个问题涉及到了 Vue.js 框架下的两种重要技术:vue-router 和 v-show。vue-router 是 Vue.js 的官方路由管理器,它允许你为应用定义路由,以便用户能够在不同的页面之间进行导航。v-show 是一个 Vue.js 的指令,用于根据表达式的值来动态地显示或隐藏元素。

首先,我们来回答你的第一个问题。vue-router 和 v-show 都可以用来实现选项卡组件,但是它们的工作方式和使用场景有很大的区别。

  1. vue-router 的嵌套路由:

当你使用 vue-router 的嵌套路由来实现选项卡组件时,你需要在路由配置中为每个选项卡定义一个子路由。然后,你可以使用 <router-view> 组件来动态地渲染当前激活的子路由对应的组件。当用户切换选项卡时,子路由会发生变化,相应的组件也会被重新加载和渲染。这种方式适合用于那些需要加载大量数据或资源的选项卡,因为在每个选项卡之间切换时,子路由对应的组件会被重新加载,从而确保数据的最新和资源的有效利用。

  1. v-show:

当你使用 v-show 来实现选项卡组件时,你可以为每个选项卡定义一个 Vue 组件,并使用 v-show 指令来动态地显示或隐藏它们。v-show 指令会根据表达式的值来决定是否显示或隐藏元素。当用户切换选项卡时,v-show 指令会控制对应组件的显示和隐藏,而不会重新加载组件。这种方式适合用于那些数据量不大且不需要频繁加载的选项卡,因为它可以避免不必要的组件重新加载和渲染。

关于你的第二个问题,当使用 vue-router 的嵌套路由时,父路由的组件是否会重新加载取决于路由配置和 Vue.js 的懒加载机制。默认情况下,当父路由的 URL 发生变化时,父路由的组件会被重新加载。但是,如果你使用了 Vue.js 的懒加载机制来加载父路由的组件,那么父路由的组件只会在第一次访问时被加载,而在后续的导航中会保持缓存状态,不会再次被加载。

 类似资料:
  • 本文向大家介绍v-show和v-if有什么区别?使用场景分别是什么?相关面试题,主要包含被问及v-show和v-if有什么区别?使用场景分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 区别:v-if 不渲染 DOM,v-show 会渲染 DOM v-show 使用场景: 预渲染需求 需要频繁切换显示状态

  • 本文向大家介绍如何区分vue中的v-show 与 v-if,包括了如何区分vue中的v-show 与 v-if的使用技巧和注意事项,需要的朋友参考一下 1. v-show 不管初始的条件是什么,元素总是会被渲染,并且只是简单的基于 CSS display: none 或者 display: block 的属性进行切换。 2. v-if 会根据初始的条件(data里自己的定义的数据)来进行真正的渲染

  • 我正在寻找编译过程中使用的默认编译器标志。因此,我使用了命令

  • 本文向大家介绍react与angular、vue有什么区别?相关面试题,主要包含被问及react与angular、vue有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 Angular以前有接触过,我的感觉是,这不像React和Vue一样是构架+补充库(比如需要另外的全家桶来配合使用),它的功能非常完整,更像是一个框架,往里面填充就行,里面什么功能都有集成进去,缺点也明显,比较大,运行速度不

  • 本文向大家介绍vue-router传参query和params有什么区别?相关面试题,主要包含被问及vue-router传参query和params有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 query 是已 ?key=name 的方式在url中,刷新后仍然能获取到值 params 如果 path中有对应的占位的属性则显示在url中,例如 /:id => /2,刷新后不会丢死值;如果没

  • 本文向大家介绍vue学习笔记之v-if和v-show的区别,包括了vue学习笔记之v-if和v-show的区别的使用技巧和注意事项,需要的朋友参考一下 v-if vs v-show v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。 v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。 相