/**

  • PerformanceInfo interface to define the shape of performance data object */ interface PerformanceInfo { navigationStart: number; domEnd: number; domready: number; onload: number; memory: number; }

/**

  • Default performance data object with initial values set to 0 */ const defaultPerformanceInfo: PerformanceInfo = { navigationStart: 0, domEnd: 0, domready: 0, onload: 0, memory: 0, }

/**

  • Reactive object to track changes in performance data object */ const performanceInfo = reactive(defaultPerformanceInfo);

/**

  • Function to get performance data and update reactive object / const getPerformanceInfront = (): void => { if (process.client) { setTimeout(() => { /* * Update performance data values by subtracting relevant window.performance.timing values */ performanceInfo.navigationStart = window.performance.timing.domLoading - window.performance.timing.fetchStart; performanceInfo.domEnd = window.performance.timing.domComplete - window.performance.timing.domLoading; performanceInfo.domready = window.performance.timing.domContentLoadedEventEnd - window.performance.timing.fetchStart; performanceInfo.onload = window.performance.timing.loadEventStart - window.performance.timing.fetchStart;

    /** * Get memory used by application and convert to GB */ performanceInfo.memory = getrmb(window.performance?.memory.usedJSHeapSize); }, 500) } }

/**

  • Function to convert memory size from bytes to GB
  • @param size - memory size in bytes
  • @returns memory size in GB with 2 decimal places */ const getrmb = (size: number): number => { return Math.floor(size / 1024 / 1024 / 100) / 10; }

/**

  • Call function to get performance data on page load */ getPerformanceInfront();
interface PerformanceInfo navigationStart number domEnd number domready number onload number memory numberconst defaultPerformanceInfo PerformanceInfo = navigationStart 0 domEnd 0 domready 0

原文地址: https://www.cveoy.top/t/topic/bEaM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录