App.vue 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <router-view v-slot="{ Component }">
  3. <keep-alive :include="keepAliveIncludes">
  4. <component :is="Component" />
  5. </keep-alive>
  6. </router-view>
  7. <Login v-model:dialogVisible="useUserInfoStore.loginShow" />
  8. </template>
  9. <script setup lang="ts">
  10. import { useRoute, useRouter } from 'vue-router'
  11. import Login from '@/components/login/index.vue';
  12. import useUserInfo from "@/stores/modules/user";
  13. const useUserInfoStore = useUserInfo();
  14. import { listenerOnline } from '@/composables/online';
  15. listenerOnline();
  16. const router = useRouter()
  17. const route = useRoute()
  18. /* keep alive 的路由名称 */
  19. const keepAliveIncludes = router
  20. .getRoutes()
  21. .filter((router) => router.meta?.keepAlive)
  22. .map((router) => router.name as string)
  23. </script>
  24. <style scoped>
  25. .logo {
  26. height: 6em;
  27. padding: 1.5em;
  28. will-change: filter;
  29. transition: filter 300ms;
  30. }
  31. .logo:hover {
  32. filter: drop-shadow(0 0 2em #646cffaa);
  33. }
  34. .logo.vue:hover {
  35. filter: drop-shadow(0 0 2em #42b883aa);
  36. }
  37. </style>