import { defineAsyncComponent, h, type Component } from 'vue' import { PAGE_LOADING_DELAY, PAGE_LOADING_TEXT, PAGE_LOADING_TIMEOUT, PAGE_LOAD_ERROR_TEXT, } from './lazy-config' type PageLoader = () => Promise<{ default: unknown }> /** * 页面级异步加载边界(任务 10):按路由分包页面,加载中/失败都有明确反馈, * 不把 chunk 加载错误静默吞掉。 */ export function defineLazyPage(loader: PageLoader): Component { return defineAsyncComponent({ loader: () => loader().then((mod) => mod.default as Component), delay: PAGE_LOADING_DELAY, timeout: PAGE_LOADING_TIMEOUT, loadingComponent: () => h('div', { class: 'page-loading' }, PAGE_LOADING_TEXT), errorComponent: () => h('div', { class: 'page-error' }, PAGE_LOAD_ERROR_TEXT), }) }