Skip to content

Cómo funciona ​

Cada <RouterView> representa un NativeScript Frame y lo entrega al enrutador como un host nativo Hosts nativos. Las páginas se montan con $navigateTo, dentro de un pequeño envoltorio que proporciona su ruta y un enrutador vinculado a su stack. NativeScript-Vue monta cada página como su propia aplicación, por lo que nada de lo proporcionado por <RouterView> les llegaría de otra manera.

En un RouterView, el stack nativo es la fuente del historial de navegación. Después de cada navigatedTo, el host Frame informa un cambio y el enrutador lee las páginas del host y las refleja. Los pops que no inició, como un deslizamiento iOS, se detectan de la misma manera que el suyo propio. replace marca la entrada actual backstackVisible: false antes de navegar, que es la forma en que el marco coloca una página de forma nativa.

El enrutador habla con cada contenedor a través del mismo contrato de host: el Frame de un <RouterView>, el marco dentro de un modal y los dos marcos de un <RouterSplitView>. La coincidencia, guards, los resultados y la conciliación se encuentran en el enrutador una vez; La presentación, los gestos y los identificadores nativos viven en el host. El contrato es experimental y está documentado en hosts nativos.

Donde habla con la plataforma ​

  • Android botón de retroceso: activityBackPressed, cancelado y convertido en router.back(), así que deja que guards tenga voz y voto. En Android 14 y posteriores, un OnBackPressedCallback por encima del núcleo sigue el deslizamiento predictivo y entrega su progreso a useBackGesture().
  • iOS deslizar hacia atrás: enableSwipeBackNavigation apagado mientras un guard de salida está activo.
  • iOS botón de retroceso: UINavigationItem.backAction (iOS 16) mientras está activo un salir de guard.
  • Modals: modalInPresentation mientras un guard de salida está activo, y un delegado frente al núcleo escucha un deslizamiento retenido.
  • Tabs: un delegado frente a la barra de pestañas en iOS, toca a los oyentes en la tira de pestañas en Android, para escuchar un toque en la pestaña seleccionada.

Pruebas ​

Las pruebas se ejecutan contra un sustituto del Frame de NativeScript (test/shims/core.ts). Sigue el orden real: las navegaciones finalizan en un tic posterior y las páginas descartadas se eliminan antes de que se active navigatedTo. Las piezas de arriba que tocan la plataforma se pasan a través de pequeñas costuras que la cuña puede llamar y se revisan en los dispositivos uno por uno.

Lo que el shim no puede ver se ejecuta en un emulador Android real: scripts/native/smoke-android.sh instala la demostración y la conduce a través de adb, verifica los enlaces del sistema operativo en un inicio en frío y en caliente, el estado de la página después de una finalización genuina del proceso, el Material bottom sheet, pantalla de inicio accesos directos, el drawer y viceversa, y los tiempos propios del enrutador desde su diagnóstico contra scripts/native/baselines.json. npm run test:native:android lo ejecuta en un dispositivo conectado después de ns build android; el flujo de trabajo Native lo ejecuta en un emulador semanalmente, bajo demanda y cuando la propia suite cambia. Los informes de validación informe de validación registran los pases manuales que quedan.

Listado y detalle ​

RouterSplitView mantiene dos fotogramas en un GridLayout nativo: uno para la lista fijada y otro para detalles. El enrutador los combina en un stack lógico y omite la raíz transparente interna del detalle. Los cambios de ancho reorganizan los marcos sin transferir páginas entre ellos. No utiliza UISplitViewController ni implementa un drawer.

Actualizaciones de desarrollo ​

El contenedor reenvía recargas de componentes enrutados a NativeScript-Vue para el reemplazo nativo de Page. Una página cubierta espera el navigatedTo del Frame y el siguiente tick del Vue antes de recargarse. Ver HMR.

Las comprobaciones nativas y sus entornos se registran en el informe de validación informe de validación, complementando las pruebas de shim.

Publicado bajo la licencia MIT.