¿Son CoffeeScript y Node.js el futuro del desarrollo de aplicaciones?

Creo que Quora debería hacer un mejor trabajo al resaltar CUANDO se escriben estas respuestas. Se vuelve especialmente importante cuando se discuten las tendencias tecnológicas en evolución.

Cuando se trata de CoffeeScript, es un regalo del cielo. Antes de descubrir CoffeeScript, no podía tolerar la naturaleza hinchada de Javascript vainilla.

Una razón por la que CS + Node.js es un buen combo es porque volverá a visitar Callback Hell con frecuencia. Si estructura su código de una manera determinada (maneje los errores antes de los éxitos), CoffeeScript le da forma a su código en una hermosa jerarquía de eventos anidados fácilmente legible.

Un factor distintivo de Node.js, para bien y para mal, es que todas las solicitudes pasan por un solo hilo. Eso significa que cada solicitud comparte memoria y pueden acceder / modificar las mismas variables. Permite algunas posibilidades P2P interesantes que no funcionarían en otras plataformas, pero también hace que Node.js sea de un solo subproceso y, por defecto, no esté optimizado para CPU de múltiples núcleos. Hay formas de evitar esto para escalar.

Node.js se usa a menudo con MongoDB, que almacena objetos en formato JSON. Entonces, si desea una pila JS completa (MongoDB-> Node.js-> Backbone.js / Angular.js), puede considerarla como una alternativa a MySQL. Sin embargo, usar MySQL es muy fácil con Node.js.

Si está haciendo algo muy basado en eventos o en dispositivos móviles, Node.js parece ser la herramienta adecuada para ese trabajo porque proporciona el enfoque más ligero y preciso para servir datos, que es perfecto para las API JSON. De hecho, si usa Express.js- cuando recibe una solicitud y desea enviar un objeto en forma de JSON, simplemente ponga:

  res.json mySimpleObj

.. Y responde al cliente con ese objeto en formato JSON. Ya sea que use o no un frontend basado en Javascript, será fácil decodificar el JSON.

Configurar Socket.IO en Node.js para la comunicación en tiempo real también es sencillo.

Si usted es rígido para API bien estructuradas, es fácil seguir los principios RESTful para aplicar GET, POST, PUT, DELETE y otros a sus rutas API.

A partir de 2015, veo algunos trabajos Node.js por ahí. No tanto como PHP / RoR, sino algunos. No creo que suceda un crecimiento explosivo hasta que salga Next Big Thing y el creador revele que funciona con Node.js.

Estoy trabajando en eso. 🙂

Es sorprendente la diferencia que hace un año desde que se respondió esta pregunta. Hoy en día, instalar en Windows es sencillo, y hay un montón de opciones y módulos npm disponibles.

Los mayores problemas actuales son probablemente la cantidad de módulos, y aquellos que no se han actualizado en un tiempo, y que distinguen si es porque están funcionalmente completos o simplemente abandonados. Otro problema específico de Windows es el uso de módulos binarios, desplegándolos y facilitando a los autores incluir los binarios preconstruidos para las versiones de 32/64 bits de NodeJS.

CoffeeScript es excelente para probar, pero admito que todavía no lo estoy usando para mi lógica central. Diré que parece que NodeJS se volverá más crítico en mi lugar de trabajo a medida que pase el tiempo.

Para responder a su pregunta sobre ‘ventajas para la combinación de frontend y backend’, creo que ahora hay algunas ventajas, pero que habrá más y más.

Algunos de los beneficios provienen de la reutilización del código. Ya puede compartir módulos javascript entre el navegador y el servidor. (ver: modul8). Y los frameworks como now.js hacen uso de este hecho para hacer cosas bastante ambiciosas; now.js podría reescribirse con una capa del lado del servidor en otro idioma, ¡pero obviamente es una gran victoria no tener que hacerlo!

Now.js es un buen ejemplo porque es similar, conceptualmente, a los tipos de lógica que se encuentran en los juegos multijugador cliente / servidor: en esos juegos, el código de simulación del cliente y del servidor es el mismo en el cliente y el servidor. Tanto el cliente como el servidor saben que ciertos tipos de acciones no están permitidas, cómo deben llevarse a cabo las simulaciones físicas, etc. Existen numerosos beneficios al mantener el mismo código de cliente y servidor. La predicción del lado del cliente coincide mejor con el servidor, no es necesario mantener sincronizadas dos bases de código separadas, etc. con simulaciones y comportamientos progresivamente más complejos, interacción más rápida o más estado del lado del cliente, los beneficios de este aumento.

Creo que a medida que las aplicaciones web continúen probando todas nuestras nociones de cuánto presionamos al cliente, el uso del mismo lenguaje en ambos extremos será correspondientemente más atractivo.

CoffeeScript es algo ortogonal a esa pregunta en este momento, excepto que, en opinión de mucha gente, es una forma mucho más limpia y fácil de mantener Javascript. Tenga en cuenta que es una opinión con la que algunas personas no están de acuerdo.

Pero en cuanto a si hay ventajas concretas de ‘solo puedes hacer esto en CoffeeScript’ para la pila de CoffeeScript / nodo, este último bit es muy especulativo:

Creo que CoffeeScript * eventualmente tendrá una ventaja sobre JavaScript vainilla debido a su sintaxis flexible y fácil acceso a su AST, del que no se habla mucho, pero creo que es un gran problema a la espera de que suceda. El AST le proporciona macros, la sintaxis flexible les permite verse como algo, y las limitaciones de lenguaje y rendimiento en la metaprogramación en tiempo de ejecución en JavaScript vanilla hacen que las abstracciones en tiempo de compilación sean más atractivas.

Plug descarado: he pirateado un prototipo de macros de estilo lisp para Coffeescript.

fuente anotada: http://mrluc.github.com/macros.c
página del proyecto: http://mrluc.github.com/macros.c