Python 爬虫实战:某高校场馆预约系统的 ASP.NET 动态状态流逆向分析
2025/12/26 22:44:22
v-if(条件渲染):
false时,元素不会被渲染到 DOM中true时,才会创建和渲染元素v-show(显示切换):
display属性来控制显示/隐藏false时,添加display: none<!-- v-if:条件为 false 时,DOM 中没有这个元素 --> <div v-if="isShow">Hello</div> <!-- v-show:条件为 false 时,DOM 中有这个元素,但 style="display: none" --> <div v-show="isShow">Hello</div>| 特性 | v-if | v-show |
|---|---|---|
| 初始渲染开销 | 小(条件为 false 时不渲染) | 大(总是渲染) |
| 切换开销 | 大(销毁/重建元素) | 小(只改变 CSS) |
| 编译条件 | 惰性的(lazy) | 不惰性 |
v-if:
<template> <div v-if="isShow"> <ChildComponent /> </div> </template>false→true:组件会创建,触发created、mounted等钩子true→false:组件会销毁,触发beforeUnmount、unmounted等钩子v-show:
v-if:
v-else-if和v-else<template>标签v-for配合(但不推荐同时使用)v-show:
v-else-if和v-else<template>标签✅适合以下情况:
<div v-if="userRole === 'admin'"> 管理员面板 </div><div v-if="showAdvancedSettings"> 高级设置(大多数用户不会打开) </div><HeavyComponent v-if="needLoad" /><template v-if="isLoggedIn"> <div>欢迎回来</div> <button>退出</button> </template> <template v-else> <button>登录</button> </template>✅适合以下情况:
<!-- 模态框、下拉菜单等 --> <div v-show="isModalOpen" class="modal"> 模态框内容 </div><div v-show="activeTab === 'tab1'">Tab 1 内容</div> <div v-show="activeTab === 'tab2'">Tab 2 内容</div> <div v-show="activeTab === 'tab3'">Tab 3 内容</div><!-- 切换时保持表单输入状态 --> <form v-show="showForm"> <input v-model="formData.name" /> </form><transition> <div v-show="isVisible">带过渡效果的内容</div> </transition><template> <div> <!-- 场景1:频繁切换 - 使用 v-show --> <button @click="toggle">切换</button> <div v-show="isShow"> 我会频繁切换(推荐 v-show) </div> <!-- 场景2:条件很少改变 - 使用 v-if --> <div v-if="userType === 'premium'"> 高级用户专属内容(推荐 v-if) </div> <!-- 场景3:大型组件懒加载 - 使用 v-if --> <HeavyChart v-if="showChart" /> </div> </template> <script> export default { data() { return { isShow: true, userType: 'premium', showChart: false } }, methods: { toggle() { this.isShow = !this.isShow // 频繁切换 } } } </script>简单记忆:
选择原则:
v-ifv-showv-ifv-show