Para agregar un poco a la respuesta de Joel Phelan, me gustaría agregar algunos consejos generales: las mejores herramientas para aplicaciones grandes son aquellas que agregan, son más fáciles de cambiar, mantener y comprender, al ser más fácil de refactorizar, hacer pruebas, el código está limitado en lo que hace, y es consistente en su uso . Eso se aplica a cualquier tipo de lenguaje / marco que esté decidiendo.
Expandiré cada punto y luego un sesgo hacia Angular, porque es con el que he estado trabajando mucho, pero si puedes encontrarlo también en React (o cualquier otra herramienta) si también es bastante bueno para aplicaciones grandes.
- Más fácil de cambiar, más fácil de refactorizar: si tiene una aplicación grande, llega un punto en que un solo desarrollador (incluido usted) no conocerá todos los detalles de toda la aplicación. Ni siquiera con las revisiones de código (a menos que cada cambio sea visto por todos antes de fusionarse, pero aún así lo olvidaría fácilmente). Entonces sucede que te encuentras con un código desconocido cuando se desarrolla con el tiempo. Si la herramienta es fácil de cambiar / refactorizar, eso no se convertirá en un problema. Si no lo es, entonces su aplicación se vuelve mucho más compleja y es cuando odia su herramienta y su aplicación porque es difícil seguir agregando cosas. Esto se ve enormemente afectado por los siguientes puntos.
- Más fácil de mantener y hacer pruebas: hay un dicho, “Si no se prueba, no funciona”. Si bien esto puede discutirse, tener pruebas automáticas es fundamental para modificar (leer mantener) con confianza. Ya sean linters, compiladores, pruebas unitarias, pruebas e2e, compilaciones, etc., eso le permitirá no preguntarse en producción “¿se romperá horriblemente porque olvidé algo”? Claro, todavía puede suceder, dependiendo de la velocidad y las prioridades de desarrollo, pero si puede disminuirlo con un poco de esfuerzo, siempre vale la pena.
- El código está limitado en lo que hace: uno de los aspectos que promueven los defensores de la programación funcional es que las funciones hacen una sola cosa y pueden ser utilizadas por otras funciones (de orden superior) para lograr el resultado final. Esta es una de las formas de decir que su código solo hace 1 tarea y no hará otra cosa que no esperaría / desearía. En JS y en lenguajes similares, el lenguaje en sí no ayudará a hacer cumplir esto en particular (si carecen de tipos o permiten una programación imperativa), pero si las herramientas que lo rodean y las reglas de estilo de código lo ayudan, eso será de gran ayuda para comprender / mantener . (IMO / La siguiente parte es un sesgo general completo) Definitivamente trabaje en esto, los defensores de los lenguajes de scripting elogian la velocidad de desarrollo cuando carecen de tipos, pero si tiene éxito, llega a un punto donde es realmente fácil y rápido romper sin esperarlo Eso no es velocidad de desarrollo. Encuentre un lenguaje con semántica de tipos, inferencia de tipos y experimentación fácil (actualización automática, herramientas de recarga. Luego obtendrá su velocidad de desarrollo, menos pruebas y (extrañamente) más código de trabajo.
- Uso consistente: si un idioma / herramienta usa un “lenguaje común para funciones” para satisfacer sus necesidades, su aplicación es más consistente en cómo se desarrolló y, en consecuencia, es más fácil de entender (SI conoce ese idioma común). Si cada parte de su proyecto se implementa de manera muy diferente, que Dios bendiga a esa alma que puede entender todos los diferentes dialectos al mismo tiempo.
Ahora, en el caso de Angular, es posible que se pregunte cómo cumple cada punto. Haré una nueva edición con él cuando tenga más tiempo para escribir 😉
- ¿Qué plataforma / tecnología funciona mejor para una aplicación web de listado de propiedades inmobiliarias?
- ¿Cuáles son los mejores recursos para aprender más sobre los navegadores, el diseño del marco web y la seguridad?
- Si hago una aplicación web en Angular2 que se ejecuta en AWS (S3, DynamoDB), ¿todavía necesito hacer alguna programación del lado del servidor (como Play o PHP o Python)?
- ¿Por qué utilizar una base de datos no relacional en lugar de una base de datos relacional?
- ¿Cuál es la diferencia entre AppDynamics y Application Insights para Azure WebApps?