Registro de módulos
Al crear aplicaciones a gran escala con paquetes de activos modernos (como Vite o Webpack), las importaciones de cadenas dinámicas en el atributo src (por ejemplo, <page-route src="./pages/home.js">) son difíciles de rastrear para los paquetes durante el análisis estático.
El Registro de módulos le permite prerregistrar un mapa de rutas de páginas para sus funciones de cargador, lo que permite una división de código adecuada y un seguimiento de activos en su canal de compilación.
registerRouteModules
Registra un mapa de rutas a las funciones del cargador de módulos.
type ModuleLoader = () => Promise<any>
function registerRouteModules(modules: Record<string, ModuleLoader>): voidEjemplos de integración
1. Vite (import.meta.glob)
Vite admite la importación automática de múltiples archivos que coincidan con un patrón global:
import { registerRouteModules } from '@beforesemicolon/router'
// 1. Gather all page components (lazy loaders)
const modules = import.meta.glob('./pages/**/*.{ts,js,html}', { eager: false })
// 2. Register with router
registerRouteModules(modules)2. Webpack (require.context)
Webpack usa require.context para rastrear estructuras de directorios:
import { registerRouteModules } from '@beforesemicolon/router'
const context = require.context('./pages', true, /\.(ts|js|html)$/)
const modules = {}
context.keys().forEach((key) => {
// Map paths to loaders
modules[key] = () => Promise.resolve(context(key))
})
registerRouteModules(modules)3. Registro manual
También puedes asignar importaciones manualmente:
import { registerRouteModules } from '@beforesemicolon/router'
registerRouteModules({
'./pages/home.js': () => import('./pages/home.js'),
'./pages/about.js': () => import('./pages/about.js'),
})Uso en HTML
Una vez que los módulos estén registrados, defina sus etiquetas <page-route> como de costumbre. El enrutador interceptará la cadena src y la resolverá utilizando el cargador registrado previamente en lugar de activar una solicitud de recuperación genérica del navegador:
<!-- Uses the registered bundler import loader automatically -->
<page-route path="/" src="./pages/home.js"></page-route>getRouteModule
Recupera un cargador de módulos registrado por su ruta.
function getRouteModule(path: string): ModuleLoader | undefinedPrecarga de módulos registrados
Los módulos registrados se pueden precargar antes de que el usuario navegue hasta ellos.
function preloadRouteModule(path: string): Promise<void>
function preloadRouteModules(paths: string[]): Promise<void>import { preloadRouteModules } from '@beforesemicolon/router'
await preloadRouteModules(['./pages/dashboard.js', './pages/settings.js'])