Esta no es una pregunta trivial, así que creo que merece una respuesta articulada. Pocos puntos ya se han expresado en otras respuestas, pero creo que enumerarlos todos puede ayudar a aclarar:
1) rápido y fácil de crear prototipos: hace que sea extremadamente fácil crear prototipos (casi) cualquier tipo de aplicación web en un tiempo más corto en comparación con otros como, por ejemplo, JAVA y LAMP. Solo por mencionar algunos de los ahorros en tiempo: node.js proporciona el módulo del servidor web en sí mismo, por lo que no tiene que tener conocimiento sobre la configuración de Apache o NGINX a menos que desee integrarse en la plataforma existente o tenga un sistema complejo arquitectura, y la comunidad muy activa de node.js proporciona módulos listos para usar y un conocimiento profundo que puede ahorrarle tiempo cuando se trata de desarrollar funciones básicas (Facebook-Connect, RESTful API, plantillas)
2) npm: es EL administrador de paquetes de nodos, representa la forma estándar de compartir código con la comunidad y administrar dependencias externas. Tiene solo 2 años y el número de módulos presentes ha superado (casi) el número de módulos publicados en gemas RoR. El uso de módulos comunitarios como express, socket.io, mongoose, mocha, everyauth, solo por mencionar algunos de ellos, le proporciona una poderosa caja de herramientas para construir una aplicación en ejecución “equivalente a LAMP” en cuestión de horas. Gestiona todas las dependencias anidadas para usted, por lo que puede concentrarse en cuál es la lógica de su aplicación CORE en lugar de perder tiempo desarrollando características básicas que la comunidad mantiene de manera colaborativa y efectiva para usted. La sencilla sintaxis del archivo de configuración también le permite fijar un módulo a una versión específica para que no tenga que preocuparse por futuras actualizaciones que rompan su software.
3) plataforma en la nube: hay una serie de soluciones de Plataforma como servicio como Joyent cloud, heroku, nodejitsu que identifican el nodo como tecnología de primera clase y hacen que la implementación y la escala de su aplicación sean triviales. Otros servicios similares como Pagoda también le permiten desarrollar aplicaciones PHP + MySQL fácilmente, pero en este momento hay más opciones y un mejor soporte para tecnologías de nodos en la nube en mi humilde opinión.
4) mongoDB y Redis: generalmente un proyecto node.js va de la mano con una solución NoSQL. MongoDB y Redis son tecnologías complementarias que están muy bien integradas con node.js. Si está haciendo un proyecto sin una base de datos relacional, node.js es definitivamente un buen candidato.
5) javascript y coffescript: el hecho de que Javascript sea el idioma del navegador hizo necesario que todos los desarrolladores web lo manejen . Esto significa que casi todos los desarrolladores pueden leer Javascript, y encuentro que cada vez más personas son capaces de escribir aplicaciones JavaScript de cliente sólidas, sólidas y sólidas. Tener node.js en el back-end trae otro tipo de problemas como arquitectura en capas, diseño de modelo de dominio, MVC y el uso correcto de patrones de diseño que los desarrolladores suelen usar para resolver usando otros lenguajes como PHP, JAVA, Python, RoR, pero coffescript constituye un Lenguaje de traducción de brecha de puente válido entre la herencia clásica de OO y prototipos como JavaScript, lo que ayuda a no conocer a los nuevos desarrolladores de node.js redescubiertos para evitar errores tontos y filtrar la parte mala de JavaScript
6) arquitectura: la arquitectura node.js le ayuda a superar los problemas de rendimiento y escalabilidad gracias a su interacción sin bloqueo. Metafóricamente, alguien en la conferencia en línea de Nodestack comparó Apache como una pizza cuando tienes que esperar a que se cocinen las pizzas existentes antes de poner más y node.js a un malabarista que permite manejar las solicitudes en el aire mientras se sirve. La nueva venida. Esta arquitectura particular que, de manera similar a NGINX, aprovecha directamente las llamadas al sistema de eventos del sistema operativo abre el desarrollo de todas esas aplicaciones de software en tiempo real que no se pueden desarrollar fácilmente con otros idiomas.
7) costos: gracias a su alto rendimiento, puede evitar costos por hardware adicional. Logré alcanzar 5000 respuestas por segundo en mi computadora portátil (midiendo con ab -n 100000 -c una aplicación exprés). Teóricamente, también ahorra tiempo en la administración del sistema (a menos que tenga una arquitectura compleja), ya que no es necesario conectar las solicitudes HTTP o TCP a otro lenguaje del lado del servidor. Por lo tanto, evita los costos de instalación y mantenimiento de Apache o NGINX.
Todavía hay una rama de aplicaciones web que no recomendaría que se desarrolle usando node.js, aunque la comunidad está creciendo tan rápido que no me sorprendería ver que node.js se usa muy pronto en el centro de sistemas transaccionales complejos. Lo más probable es que necesite un entorno de espacio aislado donde la separación del espacio de memoria para cada solicitud es crítica para el negocio y no puede permitirse una situación en la que una sola excepción derribe el servidor node.js es subóptimo.
- ¿Cuál es la diferencia entre un sitio web y una aplicación?
- ¿Debo desarrollar mi aplicación web en Node.js o Ruby on Rails?
- ¿Cuáles son los pros y los contras de algunos de los lenguajes de back-end más populares para el desarrollo de aplicaciones web?
- Herramientas para desarrolladores web de Chrome o Firebug, ¿cuál es su herramienta favorita para el desarrollo web? ¿Y por qué?
- ¿Cuál es el rol del framework web backend con AngularJS en la interfaz?