El paso final realmente depende de tu configuración, pero dado que estamos usando React Navigation, simplemente estamos colocando cada uno de esos navegadores de nivel superior de los módulos federados como pantallas dentro de la aplicación host. Así que cada vez que queramos mostrar uno de esos módulos federados, simplemente podemos empujar el módulo relevante y será descargado, cargado y mostrado. Si estás interesado en experimentar con esta configuración, puedes escanear el código QR. En nuestro GitHub, tenemos exactamente esa configuración en funcionamiento, así que puedes clonarla, puedes instalar dApps, y estás listo para comenzar.
Hasta ahora, hemos estado hablando principalmente del flujo regular, pero lo interesante es el flujo para desarrolladores de terceros, o tal vez si eres una organización realmente grande y tienes tantos equipos que cuando los encuentras en la cocina, dices, no te he visto antes. En ese caso, esto también se aplicará a ti. Así que imaginemos que realmente estamos construyendo una aplicación de Uber, y un caso de uso muy típico es que vamos a incluir alquileres. Pero no vamos a proporcionar los alquileres, ¿verdad? Hablaremos con una de esas compañías de alquiler como Hertz, ellos proporcionarán alquileres desde su API. Típicamente, lo que hacemos es hablar con el desarrollador de terceros, le pedimos a Hertz sobre sus documentos de API, sobre todo lo que tienen, y luego vamos e implementamos todo. Haremos manejo de errores, haremos gestión de estado, haremos integración de UI, todo tipo de cosas que se requieren, y luego al final, haremos la integración real que estará estrechamente acoplada con nuestra aplicación.
Pero, ¿y si hubiera una manera diferente de hacer esto? Bueno, imaginemos un escenario donde no lo implementamos, sino que alguien más lo implementa por nosotros, lo cual es obviamente el mejor caso. Así que proporcionamos un SDK que incluye herramientas de desarrollo, documentos de API, estándares, y todo lo que proporciona nuestro entorno, y luego los desarrolladores externos implementan características reales siguiendo nuestros requisitos de UI, nuestros estándares, nuestra seguridad, nuestras herramientas, todo. Lo que tienen que crear al final del día es solo esta mini aplicación que funciona de manera independiente, cumple con los requisitos de su negocio, sus requisitos comerciales, nuestros requisitos, es independiente. Es un cambio diferente, es un cambio significativo del enfoque anterior porque no está acoplado a nuestra aplicación. Y lo que sucede después es que cuando están listos, nos lo envían a través de cualquier sistema que hayamos establecido, y eso se convierte en parte de nuestra aplicación automáticamente. Y la buena noticia es que esto es exactamente de lo que trata Module Federation, y puedes construirlo hoy en React Native con Reapak. Así que echemos un vistazo rápido a cómo podemos implementar rápidamente cosas como SDK. Esto se basa en el principio de que React Context funciona a través de los límites de la aplicación host y la mini aplicación. Así que a un nivel alto primero, creamos un paquete SDK que exponemos a los desarrolladores externos. El paquete SDK es algo como una declaración de interfaz de lo que se proporciona en tu entorno, y una de las formas más simples de hacer esto es crear React Context. Luego, la aplicación host utiliza el proveedor de contexto para inyectar los valores reales, así que una inyección de dependencia clásica. Y luego la mini app usa hooks o consume el contexto, obteniendo lo que sea proporcionado por el host en un momento dado como el valor real. Así que repasemos esto paso a paso, mirando el Módulo de Pagos, por ejemplo. Así que como dije primero, creamos contexto. Abstracción elegante y simple, fácil de comenzar. Podemos proporcionar algún manejo de errores, por si acaso está mal configurado, y potencialmente un hook para que sea más fácil para las personas trabajar con él. Luego podemos crear un proveedor de tiempo de ejecución de SDK, típicamente lo que hago yo mismo es crear uno y encapsular todo dentro para que sea más fácil para mí seguirlo. Y este es el componente que debe ser proporcionado por el host para ejecutar todas las mini apps. Así que es como un entorno del sistema si quieres ejecutar mi mini app, necesitas proporcionar exactamente esto. Y luego el host tiene que proporcionar valores reales para cada propiedad requerida por el proveedor de tiempo de ejecución de SDK de lo contrario no será visto por el módulo federado.
Comments