¿Por qué aprender tu lengua materna?
Paul Graham escribió en su artículo: Cuando la mayoría de la gente realmente se fija en ti, no es la primera vez que te ven ahí parado, sino que te han visto ahí parado durante tanto tiempo que todavía estás ahí.
Yo soy la “mayoría” a la que se refiere Pablo. Cuando apareció React Native por primera vez, aprendí sobre React Native a través de algunas plataformas como CSDN, pero realmente no le presté atención.
Más de medio año después, descubrí que React Native no solo todavía existe, sino que también tiene una buena comunidad React Native. Desde entonces, gradualmente presté atención a React Native.
Nos sumergimos en React Native por varias razones.
En primer lugar, los patrones de diseño rara vez se utilizan al desarrollar React Native.
Sí, has leído bien. De hecho, los patrones de diseño rara vez se utilizan. Algunas personas me preguntarán, ¿es esto un motivo para estudiar?
Déjame jugar un momento y contarte una historia que la mayoría de la gente ha oído.
En las novelas de Jin Yong, hay varias espadas utilizadas en varias etapas de su vida.
La primera es una espada verde desconocida. Feroz e invencible, sólo débil cuando se utiliza para competir con Heshuo.
La segunda espada es la espada Wei Ziruan, que se usaba antes de los 30 años. Era una señal siniestra herir accidentalmente a un hombre justo, pero fue ignorado.
La tercera espada es una espada pesada de hierro oscuro, sin filo ni habilidad. Antes de los 40 años, está muy extendido en todo el mundo.
El cuarto mango es una espada de madera, y su mango se ha podrido. La razón es que busca el fracaso solo. "Después de los cuarenta años, sin dejar un nombre en las cosas, cualquier hierba, madera, bambú o piedra puede usarse como espada".
Las etapas de la vida de Dugu Qiufei se dividen en nivel de espada y espada blanda. Nivel, nivel de espada pesada y nivel de espada de madera. Usa diferentes armas.
La etapa de programación de un programador también se divide en varias etapas.
A nivel de espada, los movimientos de espada son generalmente directos. Los programadores que acaban de ingresar al lugar de trabajo tienen habilidades limitadas y generalmente se concentran en implementar funciones sin considerar el rendimiento ni los modos.
El nivel de espada suave es perseguir el cambio definitivo basado en los movimientos que se han utilizado al extremo. Cuando los programadores repiten el proyecto muchas veces, se darán cuenta de los problemas en el programa y el código; También más estandarizado.
La espada espada supone un salto cualitativo respecto a la espada blanda. Cuando los programadores trabajan durante muchos años y realizan muchos proyectos, gradualmente comprenderán varios patrones y alcanzarán el nivel de arquitectos.
El nivel de la espada de madera básicamente alcanza el estado en el que la espada humana se fusiona en una sola; este es también el estado del que quiero hablar principalmente, y puede volver a la esencia del programa.
Volviendo a la esencia del programa, la forma del programa sólo debe reflejar el problema que se quiere resolver.
Cuando desarrollamos programas durante un período de tiempo, encontraremos que la programación se ha institucionalizado, especialmente utilizando lenguajes orientados a objetos. A menudo escuchamos la palabra patrón, pero deberíamos pensar que los patrones no deberían existir.
El propósito del programa es resolver el problema. Cualquier otra forma agregada al código nos indica que la abstracción del problema no es lo suficientemente profunda. Esto debería ser realizado por el propio lenguaje de programación.
Cuando desarrollé programas de Android con código nativo, utilicé muchos patrones de diseño: patrón de diseño de fábrica, patrón de diseño de adaptador, patrón de diseño único, etc. Al principio me sentí bien conmigo mismo y sentí que era increíble. Lo muestro cuando entrevisto a otros o voy yo mismo a una entrevista. Más tarde pensé, ¿por qué el marco de Android no proporciona una abstracción más profunda para que pueda implementar directamente funciones específicas en lugar de construir varios marcos con varios patrones?
Al entrar en contacto con React Native, aunque React Native también requiere algunos patrones (que son difíciles de evitar en esta etapa), la arquitectura de diseño general de React Native es mucho más sólida y directa que Android.
Por ejemplo, en el desarrollo de React Native, los datos que queremos cambiar se colocan en la máquina de estados. Siempre que los datos en la máquina de estado cambian, cambian sin importar cuántos lugares en la interfaz estén asociados con los datos modificados. En el desarrollo nativo de Android, es posible que sea necesario empaquetar y operar muchas cosas que se cambiarán juntas, lo que sin duda es un paso adicional.
Cuanto más directo sea el código, mejor será la mantenibilidad del programa. Un mejor mantenimiento del programa significa menores costos.
En segundo lugar, el coste del aprendizaje es relativamente alto.
La segunda razón por la que estudio es que el costo de aprendizaje de React Native es relativamente alto. Quizás las razones por las que aceptaste antes puedan volverte loco nuevamente. ¿Por qué es necesario estudiar cuando el coste del aprendizaje es alto?
¡A menudo vale más la pena aprender por el alto coste del aprendizaje!
El coste de aprendizaje de React Native es realmente alto.
Definitivamente primero necesitas aprender la sintaxis JSX, conocimientos de React, ES6 e ideas de programación funcional. Si quieres saber qué es la compilación nativa de React, necesitas aprender nodejs. Para encapsular componentes nativos, también necesita aprender Java, object-c y swift, es decir, aprender el desarrollo nativo de Android e iOS. Para diseñar principios de comunicación, también es necesario conocer C++.
Algunos programadores pueden decirte que "todos los lenguajes de programación son básicamente iguales" y que "el lenguaje no es importante, la comprensión es importante" porque quieren mostrar sus conocimientos. De hecho, lo que dije anteriormente es una tontería. Cada idioma es diferente desde la sintaxis hasta los conceptos. El beneficio de aprender un idioma con otro es que puedes hacer comparaciones y profundizar la impresión del aprendizaje.
Aunque el costo del aprendizaje es alto, no es malo dominar tantas tecnologías aprendiendo React Native. React Native en realidad empaqueta diversos conocimientos en un paquete comprimido, lo que nos permite aprender de manera más eficiente.
La tecnología nativa de React es escalable y escalable.
React Native puede desarrollar Android e IOS al mismo tiempo, especialmente la velocidad de escritura de la interfaz es muy rápida. Al medir el programa completado, en teoría puedes ser dos veces mejor que un programador promedio de Android/IOS.
Microsoft también ha desarrollado una versión nativa de React para Windows Phone. Con el conocimiento de React, puedes escribir fácilmente programas del lado web. Incluso puedes encontrar rastros de React Native en los mini programas de WeChat.
En nuestro mundo, si te hundes o sigues adelante depende de ti mismo y no puedes trasladar las razones al mundo exterior. Algunos estudiantes recién graduados a menudo se sienten injustos cuando escuchan que el 5% de las personas representan el 50% de la riqueza de la sociedad. Desde la perspectiva de un programador, también creo que es injusto, porque el 5% de los programadores escriben el 99% del excelente software del mundo, por lo que deberían representar una mayor proporción de los ingresos.
Los ingresos de un programador nativo de React deberían ser el doble que los de un programador normal de Android/iOS, no hay problema.
En tercer lugar, React Native aún no es perfecto.
React Native todavía tiene muchos inconvenientes y aún no es perfecto. React Native lanza una nueva versión menor casi todos los meses y la versión oficial 1.0 aún no se ha lanzado. ¡Es exactamente por eso que aprendemos nuestra lengua materna!
Hace unos años, cuando trabajaba en Beijing, a menudo escuchaba a los programadores de JavaEE quejarse de que su salario no era tan alto como el de un nuevo programador de Android/iOS que había estado desarrollando durante tantos años.
De hecho, es fácil de entender. ¿No sabes que cuanto más nueva es la tecnología, más valiosa es?
Los programadores son como los mosquitos, hay muchos grupos. Se estima que hay 7 programadores en Houchangcun Road 10, pero cada programador está bajo una gran presión y debe absorber sangre fresca si quiere sobrevivir.
Actualmente no hay muchas empresas que utilicen React Native. Cuando eres gerente de producto o CTO, debes priorizar lo que elige la mayoría de la gente. Existe un término profesional llamado "mejores prácticas de la industria". Porque esta palabra parece eludir la responsabilidad de los gerentes de producto/CTO. Como elegí las "mejores prácticas de la industria", si no tengo éxito, no es mi problema, es el problema de "la industria".
Pero si eres programador y sigues las prácticas anteriores, morirás miserablemente porque las "mejores prácticas de la industria" cambiarán gradualmente. Una vez que sus habilidades queden fuera de las “mejores prácticas de la industria”, debe buscar formas de mantener su hipoteca.
React Native no reemplazará el desarrollo nativo de Android/iOS, pero con el lanzamiento de la versión oficial de React Native, puede convertirse en una "mejor práctica de la industria".
Acerca de cómo aprender la reacción en el idioma nativo
Si desea comenzar a usar React Native rápidamente, definitivamente necesita leer la API oficial. No solo hay documentos sino también ejemplos que cubren la mayor parte del conocimiento.
/docs/get-started .html
FaceBook también proporciona oficialmente una aplicación de demostración, que puede usarse como referencia.
/Facebook/react-native/tree/master/Example
El proyecto f8 de código abierto de Facebook también es muy bueno.
/fbsamples/f8app