componets.ts 758 B

123456789101112131415161718192021222324252627282930
  1. import { defineAsyncComponent, AsyncComponentLoader } from 'vue'
  2. import { AsyncLoading, AsyncSkeletonLoading } from '@/components/LoadingComponent'
  3. /**
  4. * * 动态注册组件
  5. */
  6. export const componentInstall = <T> (key:string, node: T) => {
  7. if(!window['$vue'].component(key) && key && node) {
  8. window['$vue'].component(key, node)
  9. }
  10. }
  11. /**
  12. * * 异步加载组件
  13. * @param loader
  14. * @returns
  15. */
  16. export const loadAsyncComponent = (loader: AsyncComponentLoader<any>) =>
  17. defineAsyncComponent({
  18. loader,
  19. loadingComponent: AsyncLoading,
  20. delay: 20,
  21. })
  22. export const loadSkeletonAsyncComponent = (loader: AsyncComponentLoader<any>) =>
  23. defineAsyncComponent({
  24. loader,
  25. loadingComponent: AsyncSkeletonLoading,
  26. delay: 20,
  27. })