He visto muchas charlas sobre lo increíble que es Node.js para las aplicaciones web en tiempo real: cosas que necesitan enchufes, Comet, comunicaciones pesadas con AJAX, etc. Sé que su modelo controlado por eventos, asíncrono y subproceso también es bueno para la concurrencia con baja sobrecarga.
También he visto los tutoriales de Node.js para aplicaciones más simples, 'tradicionales', no en tiempo real (por ejemplo, el ejemplo de blog estándar, que parece ser el 'Hola Mundo' estándar para las personas que aprenden el desarrollo de aplicaciones). Y también sé que node-static le permite servir activos estáticos.
Mi pregunta es: ¿hay alguna buena razón para evitar Node.js para aplicaciones web tradicionales, como anuncios clasificados, foros, el ejemplo de blog mencionado anteriormente o el tipo de aplicaciones CRUD que creas para aplicaciones comerciales internas? Solo porque sobresale en todas las cosas funky en tiempo real, ¿eso lo contraindica para usos más habituales?
Lo único en lo que puedo pensar, desde el principio, es la falta de bibliotecas maduras (aunque eso está cambiando).
(La razón por la que pregunto es porque estoy considerando abandonar PHP para Node.js, principalmente para superar la falta de coincidencia de impedancia de cambiar entre idiomas, pero también para poder reutilizar el código de validación y otras cosas. Mi superego me advierte que elija el la mejor herramienta para el trabajo , sin embargo, no tengo mucho tiempo para aprender quince idiomas y todas sus bibliotecas de usuarios solo para tener un arsenal completo. También es tranquilizador que Node.js me brinde una ruta de optimización más fácil que PHP / Apache en el futuro cuando tenga que empezar a pensar en el tráfico pesado).
[EDITAR] Gracias por las respuestas hasta ahora, amigos; Solo quiero ver si alguien más va a influir antes de elegir una respuesta. La respuesta de @Raynos confirma un poco lo que estoy pensando, y los enlaces de los comentaristas me sirvieron para pensar, pero quiero ver si alguien más tiene respuestas específicas de Nodo, como 'NO UTILICE NODO PARA EL PROBLEMA X '. (Además de las tareas de CPU alta; ya lo sé :-)
fuente
Respuestas:
Sí, si tiene N años en la plataforma web X, entonces claramente puede desarrollar una aplicación en la plataforma X más rápido.
Si desea hacer Y y la plataforma X tiene una solución prefabricada Y que hace X, entonces hágalo.
Todas las razones genéricas de por qué debería usar una plataforma sobre otra.
Sí, hay otra plataforma que le permite escribir una aplicación genérica más rápido, me viene a la mente Ruby on Rails.
Sin embargo, eso dijo. Tengo experiencia con el nodo y no puedo afirmar que elegiría otra plataforma sobre el nodo a menos que haga una gran cantidad de características listas para usar.
Básicamente es una simple cuestión de
No hay razones sólidas por las que node.js sea una plataforma inconveniente (aparte de "odio javascript")
fuente
Después de trabajar con el nodo durante algunas semanas, diría que sí, es genial. Pero no necesariamente es algo que quiera usar para reemplazar sus aplicaciones web habituales con ... ni, en mi opinión, está destinado a ser.
Recuerde, el nodo es su propio servidor. Esto introduce complejidades si desea ejecutar más que solo su aplicación node.js. es decir, si tiene más de un sitio / dominio alojado en una máquina. No es como una pila LAMP, donde puede tener una docena de aplicaciones PHP para media docena de dominios diferentes que se ejecutan en el mismo servidor (en el puerto 80, al menos). Hay marcos para el nodo que probablemente lo hacen posible, pero eso agrega complejidad que simplemente no necesita si se adhiere a las plataformas web tradicionales. (Por supuesto, también puede configurar proxies colocando un servidor web frente al nodo, pero eso de alguna manera anula el beneficio de usar el nodo).
OMI, Node es perfecto para trabajar en conjunto con un servidor web tradicional. La forma en que tengo las cosas organizadas ahora es servir las imágenes estáticas html / js / vía apache, y manejar las necesidades de datos 'en tiempo real' mediante un sondeo largo a la aplicación de nodo.
fuente
Una buena razón para tener dudas acerca de los nodos no es técnica: es genial y sorprendente en lo que hace.
Son negocios y específicamente capital humano, es decir, programadores que lo saben, cuánto cuestan y su disponibilidad. No es tan difícil de aprender, pero como con cualquier tecnología más nueva, el número de personas que lo conocen bien (o quieren) es una subestimación de los grupos más grandes de trabajadores.
fuente
Esta es una muy buena pregunta que debemos hacernos para avanzar demasiado en el estado del arte.
Tenía mucha curiosidad por saber (como Paul d'Aoust) dónde existen las limitaciones de Node.JS. Lamentablemente, muchas respuestas están COMPLETAS de sesgos subjetivos y razones temporalmente relevantes.
Me pregunté: ¿PODEMOS FILTRAR BIAS SUBJETIVAS Y OBTENER RESPUESTAS SÓLIDAS A ESTA PREGUNTA RELEVANTE?
Los puntos restantes parecen ser:
1. NodeJS no es tan maduro como los marcos tradicionales. Como sugiere Paul d'Aoust, esta es solo una razón temporalmente relevante, no para evitarla por completo, sino para su revisión y diligencia debida. Se espera que hagamos nuestra tarea como profesionales de la web, y es nuestro trabajo determinar el mejor ajuste de la tecnología para la organización, sus necesidades, su futuro, el equipo (y no nosotros). La madurez es una necesidad de aclaración y un juicio de apetito por el riesgo, pero no de evasión.
2. NodeJS como servidor proxy. Una sugerencia sabia, de discusión previa, que vale la pena revisar y considerar. Es la noción de usar Node en correlación con las tecnologías existentes como un patrón de diseño de proxy de interfaz front-end. Pero también, no es una razón para EVITAR el uso del nodo, sino una razón para evitar usarlo como un reemplazo completo. En lugar de optar por un enfoque corolario
3. Nodo de depuración. En una conversación con los desarrolladores del Nodo central en Joyent, hay muchas complicaciones en torno a la depuración y el rastreo de la causa raíz de los problemas resultantes del núcleo (basado en la ejecución de un solo hilo y la incapacidad de ver en los hilos del pasado). Vale la pena considerarlo y evaluarlo, pero (de nuevo) probablemente no sea aversión por el uso común, solo casos extremos que pueden empujar el sobre. Tal vez sus necesidades específicas caerían en esta categoría y tal vez no.
4. Recursos humanos. Esta es la mejor razón para EVITAR el uso de JS en esta página y, en mi humilde opinión, es una verdad cruda e inconveniente. Se plantea la pregunta: ¿ tiene su empresa los profesionales talentosos adecuados a la mano para ver el proyecto a través del ciclo de vida completo? Si no, no hay duda de que debe evitar NodeJS. O, en su lugar, considere A) localizar el talento correcto, o B) Educar el talento existente.
Quejas: Mi observación de las quejas en JavaScript es que muchas resultan más del Error del usuario que de fallas consistentes del lenguaje. Hemos desacreditado muchos reclamos contra "The Hate JavaScript Diatribe" y continuaremos desacreditando muchos más. Problemas como: la documentación no es lo suficientemente buena, no es lo suficientemente sexy, pero a la gente no le gusta, es cáncer, es el demonio o es demasiado "propensa a los errores tipográficos" (-Crichardson), son subjetivos y quejas sesgadas que deben ser eliminadas para la toma de decisiones corporativas precisas.
Al final, la respuesta correcta puede ser: no hay buenas razones para EVITAR NodeJS . Quizás es por eso que está experimentando un rápido crecimiento, adopción y contribución. Pero para todos nosotros, tal vez la respuesta aquí es continuar evaluando, investigando y entendiendo mejor NodeJS, y buscando aversiones concretas. En la búsqueda de estar abiertos a comprender exactamente dónde Node.JS es inmaduro, encontramos exactamente dónde necesitamos mejorarlo. Y eso es una bendición.
Buena pregunta. Por mi parte, sigo siendo curioso de que alguien mencione una mejor razón para evitar NodeJS, que estas.
fuente
¿Hay algún beneficio de usar el nodo sobre X para aplicaciones que no son en tiempo real?
Beneficio de usar X sobre Nodo para aplicaciones que no son en tiempo real:
Mi respuesta definitivamente no será válida en 2015. En 2014, omita Node para aplicaciones web que no sean en tiempo real, pero esté atento.
Cada marco web tiene un punto fuerte. Serás feliz mientras lo usas para ese punto. Las aplicaciones web que no son en tiempo real no son el punto fuerte de los marcos web de Node.
fuente
Node.js es una plataforma muy popular y tiene muchas características interesantes, bla, bla, bla, pero el uso de una herramienta es una preferencia personal. Le di a Node.js cuatro veces y no estaba contento con eso. Aquí están mis razones. Tenga en cuenta que algunas de esas razones están desactualizadas o simplemente son personales: P
fuente
HTTP no tiene estado, por lo que en realidad no existe una aplicación web que no sea en tiempo real y, por lo tanto, no hay razón para que no pueda usar el nodo para todo.
Dicho esto, el nodo es más adecuado para un tipo particular de arquitectura de aplicación. PHP es archivos html que contienen un poco de código. El nodo es un código que opcionalmente contiene un poco de html.
Esto significa que si su aplicación tiene formularios html estándar sin ningún script del lado del cliente, PHP será más fácil. Node tiene herramientas de plantillas, pero obviamente no es tan maduro como algo como PHP.
Si tiene muchos scripts del lado del cliente y guarda los datos con ajax, terminará con un cliente estático html que llama a funciones en el servidor. Esto es exactamente en qué nodo es bueno. Si bien no es la forma en que generalmente se crean las aplicaciones CRUD, puede producir algo bastante bueno con el marco adecuado.
fuente