¿Qué es mejor para el desarrollo web de backend: Node.js o Django?

Node.js es relativamente nuevo en el juego, por lo que muchas veces estarás abriendo nuevos caminos con él. Sin embargo, no es algo malo, Node.js ha aprendido de los errores de otros lenguajes (incluidos Django, .NET, PHP, Java), y tenía poca leyenda. Node.js probablemente tendrá un poco de ventaja donde tienes muchas conexiones pequeñas. Si está utilizando una gran cantidad de Ajax en sus páginas, y está haciendo muchas llamadas asíncronas por página, o utilizando sockets web o conexiones largas similares, Node.js funcionará mejor.

Por lo tanto, sugeriría optar por NodeJS. Node.js es un entorno creado sobre JavaScript.

Si bien ambos están destinados a la programación del lado del servidor y están destinados a lograr las mismas cosas, Node.js es el camino a seguir.

Este es el por qué:

  1. El nodo es más rápido.
  2. El administrador de paquetes del nodo (npm) es más extenso.
  3. El uso del nodo no se limita a un servidor web. Ver meteorito.
  4. El nodo hace que la E / S sin bloqueo parezca inútil. Lo prometo.
  5. Nodo + Reaccionar = Hermoso.

Node.js es una tecnología revolucionaria, por lo que es una gran habilidad para el futuro inmediato y cercano del desarrollo moderno de aplicaciones web. Node.js garantiza un alto rendimiento y mejores funciones de respuesta para el sitio web desde el lado del servidor hasta el front-end. Esto ha llevado a que los desarrolladores de Node.js tengan una gran demanda por parte de la industria, que ha superado todos los principales marcos de desarrollo web presentes en el mercado como PHP, .NET, Django, etc. Este aumento y tendencia se puede ver en el gráfico a continuación y aquí.

Por lo tanto, sugeriría optar por Node.js en lugar de Django.

Hay tantas opciones disponibles en línea para comenzar su aprendizaje. Pero si está buscando comenzar su carrera en este dominio en particular, entonces diría que puede ir a las plataformas mencionadas a continuación:

  • Los libros electrónicos y los libros pueden ser una buena manera de aprender algo nuevo, pero carecería de la interacción y la experiencia de aprendizaje.
  • Youtube también es utilizado por muchos para adquirir nuevas habilidades y aprender cosas nuevas. Pero la interacción es unidireccional y no habría motivación para aprender sin ningún beneficio.
  • MOOC como edWisor.com, Udacity, Udemy, etc., pero debe optar por uno en el que pueda aprender nuevas habilidades, así como practicar según el estándar de la industria y crear algo que realmente pueda obtener un trabajo para el que uno prospere.

Tengo experiencia profesional en ambos, aunque recientemente comencé el desarrollo de Django hace aproximadamente 2 meses. Un caso más análogo a Django sería ExpressJS, ya que ambos son frameworks web. NodeJS es un entorno de tiempo de ejecución que le permite ejecutar javascript en el back-end, por lo que la comparación en el lenguaje sería python vs Javascript / Node.

Lo desglosaré por idioma:

Escalabilidad

Ambos tipos de chupar en esta categoría. Python y Javascript son un gran problema para mantener y refactorizar. Es mejor dividir su base de código en la menor cantidad de aplicaciones posible, cada una con una funcionalidad específica. NodeJS probablemente gane en esta categoría porque las aplicaciones son sustancialmente más pequeñas y más modulares.

Actuación

El tiempo de ejecución de NodeJS es, naturalmente, mucho más rápido que el de Python. Ambos pueden considerarse extremadamente rápidos si se considera el hecho de que Python puede integrar perfectamente el código C / C ++ cuando sea necesario utilizando el compilador de Cython. Esta no siempre es una buena opción o incluso una opción en algunas bases de código de Python, pero la mayoría de las veces es al menos una ruta sólida.

Paquete / Soporte de biblioteca

Ambos son muy buenos en esto en mi experiencia. Los paquetes de NodeJS son mucho menos consistentes y requieren más reflexión antes de su uso. Dicho esto, la instalación e integración de paquetes en cualquiera de los dos le dará una nueva perspectiva sobre la programación moderna y el desarrollo web. Te das cuenta de que puedes hacer cosas de una manera más segura, rápida y confiable en una fracción del tiempo de desarrollo utilizando la biblioteca o paquete prefabricado de otra persona para hacer el trabajo pesado por ti. Python todavía tiene la ventaja principal ya que es más maduro (y también lo son sus usuarios).

Ahora compararé Django con los frameworks JS comunes:

Curva de aprendizaje

Django fue una bestia para mí, incluso después de mucha experiencia en Python y desarrollo web. El sistema modelo / conjunto de consultas es moderno e incluso los conceptos de aplicaciones dentro de su proyecto pueden ser confusos desde el punto de vista de la arquitectura del proyecto. Express es mucho más simple y se puede aprender básicamente de la noche a la mañana. Se puede decir que fue mucho más bien pensado en lo que respecta a aprovechar los comportamientos de tiempo de ejecución / lenguaje en lugar de luchar contra él. Koa y Sails también son muy simples y le dejan al programador planificar las cosas.

Velocidad de desarrollo

No tengo suficiente experiencia en la creación de sitios web con JS para dar una opinión demasiado fuerte sobre esto, pero por lo que he visto, Express será mucho más rápido mientras aprende, pero Django es excelente para reutilizar partes de sus proyectos en nuevos proyectos Tanto Express como Django están diseñados para ser extremadamente rápidos de desarrollar, pero eso depende completamente del marco.

Si bien ya ha habido excelentes respuestas en Node.js vs Django e incluso una que destacó el hecho de que Node.js no es un marco, por lo que realmente no debería compararse con Django, creo que entiendo el significado general de la pregunta y el tipo de respuesta que desea obtener.

En esencia, todo se reduce a que Python (no Django en este caso) y Node.js son solo herramientas. La elección realmente depende de usted aquí, y depende de lo que desee del producto que está construyendo .

Si el único retorno de la inversión que le interesa es obtener conocimiento, diría que elija lo que le interese más. El conocimiento de ambas herramientas es valioso en el mercado, y ambas son ampliamente utilizadas por una gran comunidad.

Sin embargo, si está interesado en crear un producto que realmente dure mucho tiempo, atraer clientes y ganar dinero, hay más cosas a considerar.

Tanto Python como Node tienen una gran comunidad y es bastante fácil encontrar desarrolladores si está interesado en formar un equipo y mantener el producto por un período de tiempo más largo. Sin embargo, es posible que Python sea una tecnología más madura.

No voy a sumergirme en la escalabilidad o el rendimiento aquí, porque ya tienes una gran respuesta al respecto. Lo que me gustaría señalar son dos cosas que me impresionan más como desarrollador de Python a tiempo completo cuando miro Node.

En primer lugar, el administrador de paquetes en Node (NPM) parece estar lleno de paquetes innecesariamente pequeños y dependencias extrañas. El último incidente del ‘panel izquierdo’ lo llevó al límite, y por más divertido que sea, muestra claramente tanto la fuerza como la debilidad de NPM: eventualmente terminarás con cientos, si no miles de paquetes pequeños. En Python, la forma de pensar acerca de los paquetes parece ser mucho más clara y concisa.

La otra cosa es que Nodo significa JavaScript. Prefiero no causar ninguna guerra de idiomas en este momento, pero vale la pena notar que JavaScript en sí tiene un montón de peculiaridades que no son naturales en comparación con otros lenguajes de programación. JavaScript es un lenguaje muy flexible, pero no creo que haya sido realmente diseñado para usarse en el lado del servidor. Probablemente tendrá que lidiar con el terrible callback hell ™ y en ese caso su aplicación será mucho más difícil de depurar.

Ahora sé que todo depende de la forma en que está escrito su software, no del lenguaje en sí. Pero una cita acertada que recibí de las conversaciones de Gary Bernhardt (que recomiendo encarecidamente) es que el comportamiento para el que ves que se usa una herramienta es el comportamiento que la herramienta fomenta. Como he visto bastantes bases de código en mi carrera, estoy de acuerdo con eso. En mi opinión, Python fomenta mejores comportamientos de codificación que JavaScript.

(Python también tiene más opciones en cuanto a framework que Django. Puedes leer sobre los diversos frameworks de Python y sus usos aquí: Introducción para principiantes a los marcos de Python)

Estoy sorprendido y asombrado de que nadie más haya llamado la atención sobre esto, pero estas dos cosas no son lo mismo .

Django es un marco web construido sobre Python. Su pregunta es similar a “¿Cuál es mejor, un automóvil o una carretera?”

Si desea una mejor comparación, debe comparar Node contra Python, o Express (o cualquiera de los otros frameworks web para Node) contra Django (o cualquiera de los otros frameworks web para Python. Node por sí solo hace muy poco para ayudarlo a construir un sitio web a menos que desee escribir un servidor web completo usted mismo. Python por sí solo tiene el mismo problema.

Sin embargo, en última instancia, la respuesta es bastante simple:

¿Conoces bien Javascript? Luego usa Nodo. ¿Conoces bien Python? Luego use Django (o cualquier otro marco de Py). ¿No lo sabes tampoco? Aprende Python, es más fácil.

La pregunta no es lo suficientemente específica como para dar una respuesta absoluta. No hay nada llamado mejor hasta que arregles tus unidades de medida.

Lo mejor depende de lo que estés dispuesto a construir.

Si su sistema tiene una gran base de usuarios concurrentes, entonces Node es la opción preferida. Si está haciendo el back-end de una organización , entonces Django le conviene más.

Si eres un fanático de JavaScript, entonces el nodo es tu hogar, si prefieres Python más , entonces Django es la herramienta adecuada.

Si valoras la actividad de la comunidad, entonces el nodo es algo abrumador donde la comunidad de Python no es tan ruidosa como lo es en una fase estable.

Si valora la madurez y la estabilidad , Python / django está por delante del nodo.

Si está utilizando un marco front-end , es javascript y será más fácil para sus desarrolladores integrarse con el Nodo back-end js, donde Django está escrito en python.

Pero, tanto Node como Django pueden ser una buena opción para crear una aplicación de fondo, lo único que importa es cómo y dónde implementar.

Depende de tus requerimientos.

El nodo es más fácil de escalar, pero realmente puede depender solo de los paquetes grandes, los más pequeños pueden dejar de desarrollarse o mantenerse en cualquier momento, ya que muchos de los paquetes más pequeños son mantenidos solo por una persona o un grupo pequeño.

Django es un poco más fácil de desarrollar a mi gusto, pero tengo más experiencia con Python y me gusta más …

Django le está dando mucho más cosas integradas que necesitará desde el principio, como módulos de seguridad, sesiones y más, mientras que en Node necesitará encontrar el adecuado para usted de los paquetes NPM (supongo que será fácil para encontrar, pero aún necesita buscarlos).

Debido a que Node es de naturaleza asíncrona, es más difícil hacerlo correctamente si viene de la forma “normal” de desarrollar software y necesita tiempo para ajustarse, y no siempre es la mejor manera de hacer las cosas (es posible que desee hacer algo sincrónico, y luego necesitará usar promesas que son asíncronas pero que permiten hacerlo como cosas sincrónicas).

Si su sitio web es intensivo en CPU en el proceso Node (lo que significa que necesita hacer muchos cálculos en Node, no en algún otro proceso como el DB o lo que sea) no debe usar Node ya que Node no es bueno para esto, cualquier otra situación Depende de sus requisitos.

Como otros han indicado, esta no es una comparación válida, pero tampoco estoy de acuerdo con la analogía Nodo / Python.

En el caso de Node.js, el lenguaje es JS, el servidor es Node.js y el marco de elección es algo que debe evaluar. Las opciones comunes incluyen Express.js, Sails.js y Meteor.

En el caso de Django, el lenguaje es Python, el servidor es WSGI y el marco es Django.

Express.js es un framework sin opiniones, más para compararlo con Flask que con Django. Sails y Meteor están más cerca de Django.

Dicho esto, no entraré en la vasta comparación técnica de lo anterior. He participado y entregado proyectos tanto en Node / express como en Django. Como gerente de proyecto y desarrollador, me gustaría centrarme en un aspecto muy importante que muchos desarrolladores pasan por alto. Ese es el costo del tiempo de desarrollo y mantenimiento del código.

El costo de desarrollo y mantenimiento de un proyecto Django sobre cualquier proyecto Node en mi opinión es impresionantemente menor, debido a una serie de factores:

  • La naturaleza misma de Python vs JS
  • Nodo de devolución de llamada infierno
  • Django ORM totalmente comprometido con migraciones y todo
  • Interfaz de administrador Django plug-n-play
  • Django ofrece soluciones fáciles para muchos aspectos: l10n, modelos de formularios, …

Etc, etc. El número de puntos puede incrementarse fácilmente a favor de Django. Finalmente, todo se reduce al hecho de que tiene que escribir y mantener menos cantidad de líneas de código. Y no subestimes el factor costo. Nadie desarrollador quiere pasar su vida en el mismo proyecto una y otra vez.

Para terminar, también me gustaría abordar algunos puntos que supuestamente nodo es mejor que Django:

  • Websockets: simplemente eche un vistazo a los excelentes canales de django.
  • Puntos finales REST: eche un vistazo al fantástico marco REST de Django.
  • Pero el nodo es más rápido; claro, pero no es difícil optimizar un servidor uWSGI y la diferencia en los tiempos de respuesta es despreciable eventualmente.
  • Pero la interfaz de administración de django no usa ajax; entonces no lo use y pase meses escribiendo interfaces de administración personalizadas.

Gracias por leer.

Nodejs … en cualquier momento … porque es asíncrono … puede escribir varias solicitudes, el nodo js manejará todas las solicitudes sin punto muerto … significa que ninguna solicitud entrará en el ciclo de espera … si una solicitud se ejecuta al mismo tiempo, otra solicitud se iniciará como llamada Volver funcionalidades. ..también puedes usar múltiples módulos NPM de código abierto gratuitos.

sea ​​cual sea el proyecto que esté trabajando, estoy seguro de que para cada tipo de proyecto (ai, redes, comunicación, web, móvil, híbrido) hay tantos módulos npm disponibles. Utilice estos módulos. 🙂

Ninguno. Si te gusta Python, web2py es un marco mucho mejor para usar.

Si te gusta JavaScript (Nodo), entonces tienes un problema.

En este tipo de escenario, recomiendo Go para el backend. Puede ejecutar anillos alrededor de Node y es igual de fácil de usar. En términos de concurrencia y altas tasas de transacción, Go puede hacer girar cientos de miles de “gorutinas” o hilos sin sudar. Veamos a Node hacer eso.

Y Go se está convirtiendo rápidamente en un lenguaje de programación Top 10: vea El pequeño lenguaje que podría.

Estás comparando manzanas y naranjas hasta donde yo sé. Node es una plataforma que permite que JavaScript se ejecute en máquinas sin navegador. Hay muchos marcos web construidos en nodos como `expressjs`, ‘meteorjs’, etc.

La ventaja más conocida de node es que le permite permanecer en javascript tanto para la base de código del lado del cliente como del lado del servidor.

Ahora para django es un marco web que ha estado en uso durante un tiempo. Está basado en Python y tiene muy buenas pautas para crear aplicaciones web.

Como alguien ya dijo, lo que es mejor es puramente obstinado. Si está familiarizado con Python y Django, úselo o use marcos web basados ​​en nodos si está en JavaScript. El marco basado en nodos también puede ser ventajoso si tiene muchos programas basados ​​en websocket porque django / python se basa principalmente en wsgi y están redactando una nueva propuesta para websockets

JavaScript es un desastre. Llano y simple. Produce una estructura de código ridícula llamada “Callback Hell”, como su nombre lo indica, esto es algo así como una pesadilla. Ha habido intentos de corregir esto, como “promesas”, sin embargo, estos son hacky por decir lo menos. Node está bien para proyectos personales y pasatiempos, pero de ninguna manera es adecuado para escribir proyectos web profesionales …

Quédate con Django, no te equivocarás.

Mucha gente lo intentará, pero ninguno puede responder esta pregunta porque no ha definido “mejor”. Todas las tecnologías tienen pros y contras. Las diferencias en estas dos tecnologías específicas son en su mayoría triviales.

Suponiendo que no tiene criterios específicos que definan “mejor”, el que considere “mejor” casi siempre será el que mejor conozca.

Las personas que conocen mejor a Node dirán que Node es mejor. Las personas que conocen mejor a Django dirán Django.

Usas el que mejor conoces.

No soy nadie para decir cuál debería usarse, pero daré mi consejo

¡Imagínese cuando use JavaScript en todo su proyecto, con NodeJS puede hacerlo!

Siempre fui un fanático de PHP y quería desarrollar casi cualquier cosa con PHP, pero hace 3 meses me presentaron a NodeJS, y debo decirles que estoy enamorado de NodeJS. A continuación hay razones por las cuales:

  • Conceptos como la programación de un solo hilo o código sin bloqueo o código asincrónico (que hace que nodeJS sea extremadamente rápido).
  • Puede usar un idioma en todo el proyecto (JS en el servidor y el front-end).
  • Debido a que NodeJS es de código abierto, hay muchos paquetes increíbles de la comunidad proporcionados por npm.

Plantearía esta pregunta como “necesito más aclaraciones”, todos los que responden solo adivinan. Es extremadamente difícil casi imposible decir sin los detalles adecuados sobre su proyecto y los requisitos generales lo que debería estar haciendo el “back-end”. En otras palabras, si no proporciona requisitos, es imposible responder la pregunta correctamente.

Si te digo que “tu backend” es un motor de puntuación de riesgo de alta velocidad y la mayoría de tus científicos de decisión son chicos de python … seguro que son requisitos muy diferentes a los de la aplicación web “to do”.

¡No es lo mismo! Node.js es un lenguaje, ¡pero Django es un framework web creado en python!