App.vue 928 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <div id="app">
  3. <router-view v-slot="{ Component, route }">
  4. <transition name="fade" mode="out-in">
  5. <keep-alive :include="keepAlivePages">
  6. <component :is="Component" :key="route.path" />
  7. </keep-alive>
  8. </transition>
  9. </router-view>
  10. </div>
  11. </template>
  12. <script setup lang="ts">
  13. import { ref, onMounted } from 'vue'
  14. import { useEnv } from '@/composables/useEnv'
  15. const { initEnv } = useEnv()
  16. // 需要缓存的页面组件名称
  17. // 根据路由配置中的 meta.keepAlive 属性动态设置
  18. const keepAlivePages = ref(['Index', 'Menu'])
  19. onMounted(async () => {
  20. // 初始化环境检测
  21. await initEnv()
  22. })
  23. </script>
  24. <style>
  25. #app {
  26. width: 100%;
  27. min-height: 100vh;
  28. background-color: #f5f5f5;
  29. }
  30. /* 页面切换过渡效果 */
  31. .fade-enter-active,
  32. .fade-leave-active {
  33. transition: opacity 0.2s ease;
  34. }
  35. .fade-enter-from,
  36. .fade-leave-to {
  37. opacity: 0;
  38. }
  39. </style>