Capacidades nativas y opciones de contenedores
Pruebe Fieldnotes, el ejemplo nativo integrado, para seguir drawer, búsqueda, acciones compartidas, guards y un resultado modal en una sola aplicación.
Comience con lo que su aplicación necesita mostrar, luego elija el propietario nativo. NativeScript suministra encabezados de página y controles; el enrutador proporciona identidad de ruta, guards, resultados y coordinación entre los stacks nativos. La aplicación proporciona contenido, acciones comerciales y política de persistencia.
Esta página describe 0.1.0-rc.3, en comparación con la línea base anterior 0.1.0-rc.2. "Existente" a continuación significa que ya está disponible en rc.2; “rc.3” identifica adiciones que requieren el nuevo candidato o la creación de un repositorio local. El paquete sigue siendo un candidato de lanzamiento, no una promesa de estabilidad 1.0. Las guías detalladas siguen siendo la referencia de la API.
Encontrar una capacidad
Los ejemplos siguientes son rutas de repositorio. Siga la configuración de demostración código del ejemplo; cree el paquete antes de ejecutar un ejemplo de suscripción voluntaria. La tabla de compatibilidad Alcance y compatibilidad de RC registra las líneas base de dependencia.
| Necesidad | Propietario/disponibilidad | Límite de plataforma | Guía y fuente ejecutable |
|---|---|---|---|
| Encabezado nativo y botones de página | Core ActionBar / ActionItem; barra de navegación | UIKit existente en iOS, barra de herramientas nativa en Android | barras nativas; Inbox.vue, demostración normal |
| Título grande colapsado | Core ActionBar iosLargeTitle; | iOS existente con contenido de desplazamiento nativo. La ActionBar estándar Android no tiene una política de barra de aplicaciones de material colapsable equivalente | Barras nativas; bandeja de entrada de demostración normal |
| Búsqueda de página nativa | Enrutador useNativeSearch; existente | iOS UISearchController; Android SearchView en la vista de título de ActionBar existente | Propiedad de búsqueda; bandeja de entrada de demostración normal |
| Acciones de contexto de elementos y vista previa | Integración del menú del enrutador, devoluciones de llamadas de aplicaciones; vista previa/menú nativo | iOS existente; Android ventana emergente nativa con acción abierta explícita | Menús contextuales; MessagePreview.vue, bandeja de entrada de demostración normal |
| Encabezado/menú/acciones de teclado compartidos | Enrutador usePageActions / PageActionItem; rc.3 | Manejo compartido de elegibilidad/ocupado/error en superficies nativas compatibles; la aplicación aún realiza acciones de guardar/compartir/eliminar | Page; actions-app.ts, --env.actionsTest |
| Comandos de teclado | Registro de enrutador y envío de clave nativa; | existente El comportamiento del método abreviado de plataforma/teclado físico difiere | Keyboard; navigation-commands.ts, demostración normal |
| Cajón/menú personalizado persistente | Enrutador RouterDrawer | Android superposición existente; iOS superposición y presentación adaptable/permanente rc.3 | Drawer; adaptivedrawer-app.ts, --env.adaptivedrawerTest |
| Historiales de pestañas independientes / barra lateral de pestañas iPad | Enrutador RouterTabs con hosts nativos; pestañas/barra lateral | UIKit existentes en iOS 18+; Android Navegación/riel inferior de material con respaldo documentado Core | Tabs; App.vue, demostración normal |
| Lista adaptable/detalle | Enrutador RouterSplitView, marcos nativos separados; | multiplataforma existente, incluida la geometría de plegado opcional Android | Split; bandeja de entrada de demostración normal |
| UIKit columnas divididas controladas | Enrutador RouterUIKitSplitView; experimental, existente | iOS 18+; posee la raíz de la ventana. No es hijo de un drawer o pestañas | UIKit split; uikitsplit-app.ts, --env.uikitsplitTest |
| Modal nativo y resultado escrito | Presentación de ruta del enrutador, host modal nativo; El historial interno | existente está separado; el comportamiento/las dependencias de la hoja difieren | Modals; Compose.vue, demostración normal |
| Zoom / elementos compartidos / predictivo Back | UIKit/Core transiciones y coordinación de enrutadores; El zoom | iOS existente necesita 18+ y API de tiempo de ejecución; El progreso Android necesita 14+. Sin controlador interactivo universal | Transitions, límites de propiedad; Transitions.vue, Configuración en demostración normal |
| Diagnóstico de navegación | Recopilador/exportación de inclusión voluntaria del enrutador; existente. Visor del navegador rc.3 | Tiempos y estado lógico/nativo, no montón nativo/FPS ni viaje en tiempo real | Diagnostics, viewer; Diagnostics.vue, Configuración en demostración normal |
| Múltiples ventanas nativas / recreación | Un enrutador por ventana nativa; existente | Base de dependencia publicada y pruebas de reconstrucción de tareas/sesiones específicas de la plataforma | Windows; windows-app.ts, --env.windowsTest |
Los indicadores se ejecutan desde demo, por ejemplo ns run ios --env.actionsTest o ns run android --env.actionsTest. Los accesorios solo iOS requieren iOS. Los títulos, encabezados, búsquedas y menús grandes no requieren un nuevo subsistema de "Encabezados de navegación nativos".
Elige un contenedor
| Contenedor | Lo que posee | Úselo cuando |
|---|---|---|
RouterView | Un Frame nativo y su ruta stack | Necesita navegación push/back normal. |
RouterTabs + RouterTab | La selección de destino y los fotogramas montados en cada pestaña | Destinos deben conservar historiales independientes. sidebar cambia la presentación de pestañas de UIKit; no crea un drawer genérico. |
RouterDrawer | Un menú alrededor del contenido ya montado; sin historial de ruta propio | Necesita contenido de navegación personalizado o un menú persistente adaptable. Sus botones eligen si presionar, abrir un enlace o restablecer un stack. |
RouterSplitView | Una disposición de lista/detalle basada en Frame y su adaptación | Un flujo lógico debe expandirse en paneles. Puede ser contenido drawer o vivir dentro de una pestaña. |
RouterUIKitSplitView | La ventana nativa UISplitViewController y las columnas | Usted desea explícitamente la propiedad raíz/columna UIKit y acepta los límites experimentales/de plataforma. |
Una barra lateral de pestañas drawer permanente, UIKit y columnas divididas UIKit pueden verse como una barra lateral. Su historia y propiedad del controlador difieren; elegir por esa propiedad, no sólo por la apariencia.
Componer un drawer con destinos independientes
Mantenga el contenedor y los marcos nombrados montados. Adapte el presentation del drawer en lugar de cambiar árboles con claves completos con v-if:
<RouterDrawer ref="drawer" presentation="auto" :breakpoint="840">
<template #drawer>
<StackLayout>
<Button text="Inbox" @tap="router.openLink('/')" />
<Button text="Settings" @tap="router.openLink('/settings')" />
</StackLayout>
</template>
<RouterTabs>
<RouterTab name="inbox" title="Inbox">
<RouterView name="inbox" />
</RouterTab>
<RouterTab name="settings" title="Settings">
<RouterView name="settings" initial="/settings" />
</RouterTab>
</RouterTabs>
</RouterDrawer>Este fragmento pertenece a una aplicación instalada con un enrutador. Configure links.frame para elegir settings para /settings y inbox en caso contrario; , la guía drawer, y el accesorio drawer ejecutable , proporcionan la configuración completa. openLink selecciona el destino propietario así como su stack. Una navegación exitosa cierra una superposición drawer; un guard rechazado lo deja abierto. Seleccionar un destino no es un restablecimiento del historial implícito.
UComposición no compatible: <RouterDrawer><RouterUIKitSplitView /></RouterDrawer> solicita a dos contenedores que posean raíces nativas incompatibles. Utilice RouterSplitView dentro de drawer, o haga de RouterUIKitSplitView la raíz de la ventana y diseñe sus columnas allí. No vuelva a montar un RouterView para simular una transición; Al hacerlo, se descarta su historia nativa y la identidad de la página.
Estado, enfoque y accesibilidad
Un Page retenido mantiene su estado Vue mientras otra página lo cubre. usePageState opta por un estado serializable pequeño para restauración después de la terminación del proceso; no conserva promesas ni objetos nativos. La propiedad de la consulta de búsqueda pertenece a la aplicación y la activación de la búsqueda debe apuntar a la página elegible actual. Las acciones Page también rechazan la ejecución de un propietario cubierto, inactivo o enajenado.
Utilice botones nativos con etiquetas de accesibilidad claras para destinos drawer, mantenga una alternativa de Menú/Back a los gestos y declare objetivos de enfoque con enfoque de navegación. Honor Reducir el movimiento. Las comprobaciones automatizadas de la jerarquía nativa no son evidencia de que VoiceOver/TalkBack esté enfocado. Cada informe de validación vinculado establece sus límites.
Las propuestas no son capacidades enviadas
La investigación de transiciones interactivas propone límites, no una API común nueva ni una integración con Jolt. La vista previa de Android gestionada por Core requiere una versión candidata upstream fijada y aún no publicada; Core 9.1.3 usa el comportamiento alternativo. Esta descripción no promete una barra Material colapsable en Android, transporte de diagnósticos en vivo ni paridad de gestos para cualquier host personalizado.