- Fecha de publicación
Módulos nativos para React-Native con Go (1/4)
- Autores
- Nombre
- x0s3
- @x0s3js
Pues sí gente, he vuelto!
Tenía ya ganas de volver a escribir algún post y este tema la verdad que me gustaría compartirlo con todos vosotros 😄
La intención de esta serie de posts es ir de "0 to hero" en el desarrollo de módulos nativos y explicar un poco sobre el futuro de los módulos nativos de RN 🤓
La idea principal es separar por partes cada paso y digerir poco a poco todo sin que sea un tocho que ni Los Pilares de la Tierra:
Contenido previsto
- Toma de contacto y motivación
- Creación del primer módulo con Go
- Unificar y llamar desde RN nuestro primer módulo, bridge(https://dev.to/x0s3/modulos-nativos-para-react-native-con-go-3-4-40o7)
- Unificar y llamar desde RN nuestro primer módulo (PARTE 4 JSI/TurboModules 🙄 WIP)
Sin más preámbulos 'amos al lío.
Toma de contacto y motivación
En esta introducción al gran camino del desarrollo de módulos para RN con Go, voy a dar bajo mi punta de vista las ventajas que tiene:
- Compatibilidad con Android y iOS con el mismo código base
- Mucho mas sencillo que C++
- Ahorras tiempo desarrollando la misma funcionalidad
- Portabilidad a otras plataformas/entornos tales como Node.js o WASM 😜
- Ser capaces de reutilizar ese módulo para futuras apps con diferentes frameworks como Flutter, NativeScript, etc.
- Dar la bienvenida a las librerías de Go ya que podremos usarlas 🤩
- Foco de errores y tests en un único código fuente
Por desgracia no todo son ventajas también hay que mencionar las desventajas o los pequeños problemas que puedes encontrar:
- Actualmente la compatibilidad de tipos entre Go y Java/Objc no es muy amplia aún (ya explicaré en otro post o quizás en la parte 4 como podemos llegar a solventar este "problemilla")
- En Android tendremos que pasar por un nuevo bridge (NDK)
- Añadimos complejidad al proyecto
- El tema debug quizás se hace algo mas complicado de lo normal
- Tenemos que saber Go
Y ahora os preguntaréis ¿Qué tiene que ver esto con React-Native? Pues nada la verdad, pero si que nos podemos beneficiar y se podría decir que podemos desarrollar nuestra app ¿x4 de rápido? 🤔
Básicamente nos ahorramos el tener que aprender Objc o Java (o ambos) para poder llegar a tener nuestras apps a la par en tema de funcionalidades nativas, ya sean algoritmos complejos que requieran alto rendimiento, compartir lógica de negocio o simplemente queremos beneficiarnos de alguna librería ya creada con Go.
La verdad que estoy bastante contento y sorprendido lo rápido que se puede llegar a realizar las cosas haciendo uso de Go con RN, sin ir más lejos tengo por aquí una app que las vistas son RN y todo lo demás funciona bajo un módulo de Go (la verdad que me he quitado un peso de encima al no tener que programar en Objc 😂) Repo ItBooks
Creo que lo podemos ir dejando por aquí de momento, una breve chapa, siento que en este post solo sea soltar "rollo-rollo" pero era algo necesario, los próximos serán mejores!!