nprogress.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import type NProgress from 'nprogress';
  2. // 创建一个NProgress实例的变量,初始值为null
  3. let nProgressInstance: null | typeof NProgress = null;
  4. /**
  5. * 动态加载NProgress库,并进行配置。
  6. * 此函数首先检查是否已经加载过NProgress库,如果已经加载过,则直接返回NProgress实例。
  7. * 否则,动态导入NProgress库,进行配置,然后返回NProgress实例。
  8. *
  9. * @returns NProgress实例的Promise对象。
  10. */
  11. async function loadNprogress() {
  12. if (nProgressInstance) {
  13. return nProgressInstance;
  14. }
  15. nProgressInstance = await import('nprogress');
  16. nProgressInstance.configure({
  17. showSpinner: true,
  18. speed: 300,
  19. });
  20. return nProgressInstance;
  21. }
  22. /**
  23. * 开始显示进度条。
  24. * 此函数首先加载NProgress库,然后调用NProgress的start方法开始显示进度条。
  25. */
  26. async function startProgress() {
  27. const nprogress = await loadNprogress();
  28. nprogress?.start();
  29. }
  30. /**
  31. * 停止显示进度条,并隐藏进度条。
  32. * 此函数首先加载NProgress库,然后调用NProgress的done方法停止并隐藏进度条。
  33. */
  34. async function stopProgress() {
  35. const nprogress = await loadNprogress();
  36. nprogress?.done();
  37. }
  38. export { startProgress, stopProgress };