¿Qué es Router?
@beforesemicolon/router es una solución de enrutamiento basada en Web Component para aplicaciones de una sola página, aplicaciones de varias páginas y sitios híbridos que desean navegación del lado del cliente sin adoptar un enrutador de marco.
Utiliza elementos personalizados, por lo que las rutas viven en la misma estructura HTML que las vistas que controlan. Puede comenzar con marcado estático, agregar archivos de ruta diferidos a medida que la aplicación crece y utilizar las API JavaScript solo cuando necesite protecciones, análisis, navegación programática o integración de paquetes.
Modelo de ejecución
El enrutador resuelve las activaciones de páginas a través de un motor de coincidencia central:
- Coincidencia única: La URL se analiza y compara una vez por evento de navegación.
- Guardias unificadas: Las guardias globales y específicas de ruta se ejecutan exactamente una vez para cada transición, evitando controles redundantes.
- Notificaciones quirúrgicas: Solo se notifican los elementos con reconocimiento de ruta afectados por el cambio de URL, lo que evita repeticiones innecesarias.
- Remontajes en caché: Cuando una ruta queda inactiva, sus nodos DOM se desconectan y se mantienen en la memoria. Al retroceder, se vuelve a montar el contenido almacenado en caché instantáneamente en lugar de volver a crearlo.
Características clave
- Navegación declarativa: Cambie páginas y actualice títulos de documentos mediante la etiqueta
<page-link>. - Coincidencia de ruta: Cargue vistas en línea o archivos de ruta externos usando
<page-route>con parámetros dinámicos (por ejemplo,:id). - Representación de parámetros de búsqueda: Reaccione limpiamente a cadenas de consulta de URL utilizando
<page-route-query>. - Retrocesos inteligentes: Configure ubicaciones predeterminadas o páginas 404 generales utilizando
<page-redirect>. - Accesibilidad de metadatos: Acceda a los parámetros de nombre de ruta, valores de consulta o detalles de carga útil de estado al instante usando
<page-data>. - Control avanzado: Rutas seguras con Route Guards asíncronos, intercambie entre los modos de enrutamiento Historial y Hash e integre con paquetes de módulos.