Tenemos Fabric, el nuevo renderizador. Tenemos un nuevo sistema de módulos nativos, al que llamamos Turbo Module. Tenemos un componente que permite generar código, que es el Cogent, y también tenemos el Modo Sin Puente.
Entonces, una vez que todas las piezas están juntas, tenemos la capacidad de eliminar esencialmente el componente de puente, como mencioné antes, esto se llama Modo Sin Puente. Quiero enfocarme un poco en el Cogent y darte una idea de lo que imaginamos como la experiencia del desarrollador en la nueva arquitectura.
Como mencioné antes, la seguridad de tipos, y la idea principal detrás de Cogent es, digamos que el desarrollador está escribiendo un archivo TypeScript que define la API de un módulo nativo. En este caso, definirán una especificación como una interfaz con una declaración de todas las capacidades de este módulo. Por ejemplo, este módulo puede responder a la pregunta definitiva y toma como entrada una cadena y devuelve un número, y el usuario simplemente registrará esto en un módulo.
Cogent trabaja en este nivel. Se enfoca en esta función y en el tipo de entrada y de retorno. Y a partir de eso, genera mucho código base que en el pasado, los desarrolladores tendrían que escribir manualmente tanto para Android como para iOS. Así que echemos un vistazo a eso. En Android, vamos a generar una clase abstracta con un constructor y un método abstracto específico que se adhiere a la firma de la especificación que vimos antes. Así que vamos a tener una función que toma una entrada, una cadena, y devuelve un número decimal. Es una función abstracta, así que depende de ti implementarla y proporcionar la lógica de negocio correcta. De manera similar, en iOS, vamos a tener un protocolo Objective-C que toma como entrada un NSString y devuelve un NSNumber. Así que hacemos todo el trabajo pesado de la escritura de tipos desde la capa de JavaScript hacia la capa subyacente, y generamos código por ti. Así que solo tienes que implementar la lógica de negocio.
También quiero hablar un poco sobre las herramientas de compilación, porque mientras trabajábamos en la experiencia del desarrollador e introducíamos CodeGen, tuvimos que hacer muchos cambios en cómo se construyen las cosas. Específicamente, también hay mucho código C++ que ahora necesitamos compilar, lo cual antes no era necesario. Por lo tanto, hay algunos cambios que podrías ver, y quiero aclarar algunos temas. Como probablemente sabes, el mundo de la compilación dentro de Meta y fuera de él es un poco diferente, porque internamente usamos Buck para compilar gran parte de nuestro código, mientras que externamente no podemos esperar que los usuarios lo hagan. Instalamos Buck y lo usamos para compilar todo. Así que necesitamos adaptarnos a los estándares de la plataforma. Específicamente en Android, tenemos Gradle. Entonces, hicimos mucho trabajo en torno al código C++. Los usuarios encontrarán referencias a archivos CMake o Android.mk, que les permitirán compilar su código nativo. Así que ya no solo tenemos código Java y Kotlin, sino que también tenemos algo de código C++ para compilar. Para Java y Kotlin, pasamos mucho tiempo construyendo el complemento Gradle de React Native. Este es un conjunto de lógica de compilación y herramientas que permite compilar aplicaciones React Native de manera efectiva.
Comments