¿Qué marco debo aprender: Django o Node.js? ¿Por qué?

En primer lugar, Node.js no es un marco. Node.js es una plataforma basada en el tiempo de ejecución de JavaScript de Chrome. Django es un marco.

Te sugiero que aprendas Django. La razón es que Django está más estructurado y aprende buenos principios de desarrollo. Le brinda una muy buena estructura de proyecto que puede usar. Una vez que tenga un muy buen control sobre Django, aprenda a usar Django REST, y ahora puede crear puntos finales de API muy fácilmente con Django.

Si eres muy nuevo en el desarrollo de backend, no recomendaría nodejs. Te sentirás abrumado con todo lo que escuches. Y hay buenas posibilidades de que aprendas malas prácticas si intentas aprender el desarrollo de backend con nodejs por primera vez. Recoge a Ruby o Django si te estás sumergiendo en el mundo del desarrollo de backend. Una vez que se sienta cómodo con cualquiera de esos marcos, le resultará un poco más fácil aprender nodejs.

Una vez que haya hecho ese cambio a nodo si lo desea. Aprenda la naturaleza asíncrona de JavaScript, módulos. Todos estos principios probablemente lo llevarán a aprender si no lo sabe. Cree una aplicación de contactos muy simple con nodo y luego aprenda express. Express es un marco para node.js

Espero que esto ayude.

Editar:

Características clave de Django:

Django viene con un ORM incorporado (asignación relacional de objetos). ORM en términos simples es su esquema de base de datos integrado como esquema de base de datos. Usted escribe y diseña su base de datos directamente escribiéndola en python y el Django ORM la traduce al esquema de base de datos que elija. Otra cosa realmente genial sobre los ORM es que no tiene que escribir consultas SQL. Un novato en desarrollo web se beneficiaría mucho de esto, pero ten en cuenta que esta no es razón para no aprender SQL.

Otra característica interesante de Django es que viene con un panel de administración. Con este panel puede mantener fácilmente sus bases de datos, agregar, actualizar y eliminar entradas en su base de datos.

Ha sido un año trabajando como desarrollador profesional de nodejs y sigo pensando que Django es un mejor lugar para comenzar el desarrollo web que nodejs. JavaScript como idioma está evolucionando y cada año se realizan actualizaciones al idioma. Cada año agregan una nueva forma de hacer programación asíncrona. Hay tantas maneras de hacer programación asíncrona en JavaScript ahora (devoluciones de llamada, promesas, uso de generadores, espera asíncrona) y un novato se vería abrumado por todo eso. Aunque Javascript puede parecer más simple al principio, difiere un poco de otros idiomas en términos de alcances y cierres variables. Solo creo que la curva de aprendizaje es mayor aquí

Depende. He estado programando en Java desde 2007 y escribí aplicaciones web usando servlets (sí, servlets barebones con JSP). También probé frameworks Java como Struts, GWT, Vaadin, Spring, Spring Roo y Play 1.x. Mi experimento más reciente con un marco de aplicación web Java fue Play 2.

Además de los marcos de aplicaciones web Java, he intentado escribir aplicaciones “hello world” con Grails (Groovy) y Rails. Ninguno de estos marcos de aplicaciones web me dio la sensación de “amor a primera vista” . El desarrollo de aplicaciones web era más un pasatiempo hasta ahora, mientras trabajaba escribiendo aplicaciones de Android a tiempo completo desde 2009.

Experimenté con Node.js hace dos meses (septiembre ’13) y al instante me enamoré de él. Se siente bastante natural escribir aplicaciones Node.js (con Express.js evitará mucha plomería). He estado haciendo mucho trabajo pesado en mis años anteriores con otros frameworks web y escribir aplicaciones web usando Node.js parece ser muy divertido.

Estos son los factores por los que me encanta escribir aplicaciones Node.js. (Sí, esto es muy subjetivo).

Pros
• Muy fluido, no tiene que preocuparse por cambiar de idioma al escribir código para el cliente y el servidor.
• JSON, sus objetos JS son JSON, si está escribiendo API web: es JSON y esta es la mejor parte: MongoDB. MongoDB le permite almacenar y recuperar documentos JSON. Este es un factor muy importante para mí al desarrollar API web para mis aplicaciones móviles.
• JS: un lenguaje de tipo dinámico como JS le brinda flexibilidad y tiene ventajas sobre el lenguaje fuertemente tipado como Java en algunas situaciones. Una de esas situaciones es escribir aplicaciones para la plataforma Node.js.
• Es rápido: el código JS se compila en código nativo mediante el tiempo de ejecución V8 de Chrome. Encuentro mucha información engañosa en blogs y videos de Youtube que indica que Node.js es lento porque usa JavaScript. No caigas en esta información equivocada 😉
• NPM: el administrador de paquetes Node facilita la instalación de los módulos Node.
• Implementación: es muy fácil de implementar. La implementación de aplicaciones Node.js en Heroku y Nodejitsu ahorra toneladas de tiempo de desarrollador.

Contras
Hay algunos inconvenientes que debe tener en cuenta y que podrían evitarse siguiendo algunas prácticas de programación.
• Callback Hell: Node.js depende en gran medida de las devoluciones de llamada y es posible que no se sorprenda escribiendo devoluciones de llamada anidadas que tienen 5 o 6 niveles de profundidad. Puede evitar esto usando funciones con nombre o usando futuros y promesas.

Esta es la única trampa que veo en este momento. Además de Node.js es mi novia recién encontrada. Editaré esta publicación en el futuro según mis experiencias con la plataforma.

En general, recomendaría Node.js para alguien que quiera aprender una nueva plataforma.

Actualización 27 jun 2014
He cambiado de postura recientemente. Revisé Play Framework 2 y lo adopté en lugar de Node.js

Aquí están mis razones (solo mías y esto podría diferir según sus necesidades y experiencia)

1. Falta de experiencia en JavaScript Podría codificar en JS pero mis habilidades en JS no son tan agudas como mis habilidades en Java.

2. Estructura del código y mantenimiento Cuando está creando una aplicación grande. Allí, el lenguaje en sí debería poder imponer restricciones sobre el diseño de la API, así como sobre otros desarrolladores que colaboran en el proyecto. JavaScript como idioma carece de esta capacidad. Un lenguaje fuertemente tipado como Java lo ayudará a lograr esto. Aunque entiendo que esto podría hacerse en parte usando un marco MVC como Backbone.js. El lenguaje en sí es deficiente en esta área.

3. Las aplicaciones Java de Testability son fáciles de probar, esto puede deberse al hecho de que tengo más experiencia con los frameworks de prueba en Java.

4. Rendimiento Escribí un par de aplicaciones básicas (cada aplicación escrita en express.js y Play 2) y usé Apache Bench para cargarlas, probarlas. El juego superó en ambos casos. (No agrupé Node.js durante las pruebas, por lo que no estaba usando todos los núcleos disponibles en mi Mac. Sin embargo, el marco de juego está construido en Akka y usa múltiples núcleos cuando están disponibles). Como estaba contento con el rendimiento de Play, no ejecuté Node.js en modo de clúster.

5. Talentos Mi inicio está lleno de desarrolladores de Java y dado que Play 2 se puede programar en Java, también tengo otros desarrolladores de Android trabajando en la aplicación web. Por lo tanto, la competencia organizacional podría darle una ventaja al elegir un marco.

PD: Necesito más tiempo para descubrir Node.js, pero dado la opción de aprender otro marco de aplicaciones web, ciertamente tomaría más tiempo para explorar Express.js (marco de aplicaciones web Node.js). Actualmente estoy usando Angular.js y Polymer. Ambas son excelentes bibliotecas JS del lado del cliente. Han reducido nuestro tiempo de desarrollo múltiple y se están utilizando en la producción. Ya sea que use Node.js o no, le recomiendo que aprenda JS, porque es claramente el lenguaje de LA WEB.