Llegaré a las ventajas parte más adelante en la respuesta. Primero déjame responder la parte de desventajas.
Creo que cuando preguntas sobre las desventajas de usar cualquier idioma, tiene más que ver con el entorno en el que se ejecutan las aplicaciones que con un lenguaje en sí mismo, y también es válido para Javascript. Aquí hay algunas desventajas:
- La mayoría de las veces, cuando desea escribir servicios en Javascript, sus servicios se ejecutarán en un entorno de nodo que es de un solo subproceso y tiene un modelo de E / S sin bloqueo. Por lo tanto, es el más adecuado para las aplicaciones que necesitan mucha IO; se escala mejor en ese caso. Bueno, entonces, algunas de las desventajas obvias no serían capaces de escribir aplicaciones / servicios que requieren mucha CPU, como el procesamiento de imágenes, la codificación de video, etc. En ese caso, no se escalará.
- Aparte de esto, me gustaría mencionar una cosa, que podría no ser una desventaja, pero la falta de la mejor solución posible disponible para aliviar el problema en Javascript, es el “estilo de paso de continuación” que hace que el código sea desordenado y difícil de mantener. Aunque Javascript tiene promesas, generadores, etc., no se supone que sean las mejores soluciones disponibles. No estaría convencido a menos que haya un azúcar sintáctico muy simple que se parezca tanto al paradigma de programación sincrónica.
- Falta de utilidades estandarizadas que se pueden aprovechar ampliamente durante el diseño e implementación de servicios de back-end.
Algunas de las ventajas donde Javascript / Node realmente sobresale son:
- ¿Qué es un desarrollador de back-end en desarrollo móvil?
- ¿Qué idiomas de backend son escalables y multiproceso?
- ¿Qué lenguajes y marcos de programación debo conocer para el desarrollo web de back-end?
- Si soy muy competente en NodeJS pero no tengo experiencia en otra pila de backend, ¿sigo siendo un desarrollador de backend profesional?
- ¿Cuál es la forma más fácil para que un desarrollador de back-end cree una interfaz de usuario atractiva para sus páginas web?
- Creación de API JSON escalables que se ajustan a otros servicios como otros servicios web, bases de datos, etc. Esto se debe al modelo de E / S asíncrono sin bloqueo proporcionado por Node.
- Soporte para “streams” que es una característica muy útil.
Por lo tanto, es una cuestión de tipo de aplicación que está intentando construir, si desea utilizar Javascript para los servicios de fondo.