¿Alguien ha utilizado Coffeescript para una aplicación de producción? [cerrado]

94

Coffeescript se ve muy bien. ¿Alguien lo ha usado? ¿Cuáles son sus pros y contras?

Esteban Araya
fuente
Relacionado: stackoverflow.com/questions/6245341/…
Trevor Burnham

Respuestas:

113

Comenzamos a usar CoffeeScript en nuestro producto, un sitio web no público que es básicamente una aplicación para navegar por ciertos tipos de datos. Usamos CoffeeScript como compilador de línea de comandos (no en el servidor, lo que eventualmente nos gustaría hacer).

PROS (para nosotros):

  • Elimina una gran cantidad de desorden innecesario en javascript (por ejemplo, llaves, punto y coma, algunos corchetes) en la medida en que el código es más limpio y más fácil de comprender de un vistazo que javascript.
  • 20-30% menos líneas de código que javascript (para hacer exactamente lo mismo)
  • CoffeeScript no solo elimina el ruido, sino que agrega palabras clave, clases y características como heredocs para hacer la codificación más limpia y algo más agradable
  • Teniendo en cuenta los puntos anteriores, es indudable que es más rápido codificar en CoffeeScript una vez que aprendes a usarlo.

CONTRAS

  • Cuando usa el compilador de línea de comandos: para depurar, está viendo un código diferente cuando resuelve el problema (javascript) como cuando escribe la corrección (coffeescript). Sin embargo, increíblemente, ¡nuestro CoffeeScript es tan increíble que nunca hemos necesitado depurarlo!

Es importante destacar que podemos regresar en cualquier momento. Nuestro compilador de coffeescript solo está produciendo javascript legible, por lo que si alguien cambia de opinión o no puede resolver algo, entonces podemos volver a usar el javascript que produjo coffeescript y seguir codificando.

PandaWood
fuente
1
PandaWood acerta en todos los puntos. Lo he estado usando en producción para todos mis clientes este año con gran éxito. Estamos usando Buildr como compilador, ya que admite la agrupación de archivos coffeescript y javascript en uno. github.com/balupton/buildr.npm
balupton
13
"¡Nuestro CoffeeScript es tan asombroso que nunca hemos necesitado depurarlo!" Ehh ... ¿de verdad? ¿Tus datos siempre coinciden con tus expectativas? ¿Nunca ha tenido uno inesperado thiso ha enviado el tipo incorrecto a una función? No creo que hayas hecho nada interesante todavía si no has tenido que "depurar nada".
Ryan Florence
8
@rpflo, si nota las palabras "Empezamos a usar Coffeescript ..." y lo compara con la declaración ofensiva, y tómelo en el contexto desenfadado en el que se da, creo que cualquiera podría estar de acuerdo. , que hay pocos motivos de preocupación. Es muy probable, por el texto que he dado, que simplemente hayamos convertido javascript que ya funciona en coffeescript, por lo que aún no se requiere una depuración seria
PandaWood
3
Acerca de la Con ', ahora con Source-Maps eso ya no es un problema, solo compile -my estará bien.
omeid
@omeid buen punto. Hice un seguimiento de eso y logré que los mapas de origen funcionen en Chrome con coffeescript
PandaWood
27

Usamos coffeescript para todo el javascript en BusyConf . Una gran parte de BusyConf es una aplicación del lado del cliente que se ejecuta en navegadores, incluida la compatibilidad con el modo fuera de línea.

Todo nuestro código coffeescript está completamente probado. Las pruebas en sí están escritas en coffeescript y utilizan el marco Qunit (que está escrito en javascript). También escribimos una extensión para el marco de Qunit que hace que las pruebas sean más agradables. La extensión Qunit está escrita en CoffeeScript . Nuestra aplicación tiene una versión móvil que está escrita en CoffeeScript y utiliza el marco Sencha Touch (que está escrito en javascript).

La conclusión de eso es que puede entremezclar libremente las dependencias de JavaScript en su aplicación, pero todo el código que escriba (el código de su aplicación, pruebas, etc.) puede (¡y debería!) Ser coffeescript.

Jim Garvin
fuente
24

Casi un año después, vale la pena publicar algunas actualizaciones:

  1. Ruby on Rails 3.1 está incorporando soporte oficial de CoffeeScript, lo que significa que verá un uso mucho mayor en el mundo real. Di una charla en RailsConf el mes pasado, donde la mayoría de los asistentes no habían oído hablar de CoffeeScript antes y, dado el fuerte respaldo de dhh, estaban ansiosos por participar.
  2. Hay un libro sobre CoffeeScript, actualmente en eBook y pronto se publicará en The Pragmatic Bookshelf. Se llama CoffeeScript: Desarrollo acelerado de JavaScript , y es realmente suyo. Está basado en CoffeeScript 1.1.1.
  3. El lenguaje ha cambiado muy poco en los seis meses entre 1.0 y 1.1.1; casi todos los cambios se califican como "correcciones de errores". Tuve que hacer muy pocos ajustes en el código del libro para la transición de 1.0.1 a 1.1.1. Sin embargo, estoy seguro de que el idioma verá cambios más significativos en el futuro.

La lista más definitiva de proyectos de CoffeeScript se encuentra en la página In the Wild del wiki de CoffeeScript .

Diría que la mayor parte del uso de producción de CoffeeScript hasta ahora se realiza junto con Appcelerator para crear aplicaciones para iPhone / Android. (Wynn Netherland de The Changelog difuminó mi libro al describir a CoffeeScript como "mi arma secreta para el desarrollo móvil de iOS, Android y WebOS"), pero habrá mucho más uso en las aplicaciones de producción de Rails y, espero, en otros lugares. en los próximos meses.

Trevor Burnham
fuente
10

Realmente amo Coffeescript estos días. Esencialmente, toda la aplicación HotelTonight para iPhone está escrita en él (usando Appcelerator Titanium, que le permite escribir aplicaciones "nativas" en JavaScript; no son aplicaciones web, digamos como Phonegap). Elegí usar Coffeescript en este caso porque facilita mucho la organización y el mantenimiento de una gran cantidad de JS. También me resulta mucho más agradable escribir código con Coffeescript (frente a JavaScript). También usamos Coffeescript para JS en nuestra aplicación Rails, pero esta es una cantidad de código increíblemente menor / pequeña en relación con toda la aplicación del teléfono.

La mayoría de las ventajas tienen que ver con ser una sintaxis más agradable, pero también que estandariza un mecanismo OO, y luego agrega algunas adiciones agradables (listas de comprensión, algunas cosas de alcance, etc.).

Los contras son casi nulos para mí. El principal es que es una capa adicional para depurar. Deberá mirar el JS generado (que es MUY legible y agradable), y luego asignarlo a su código Coffeescript. Para nosotros, esto no ha sido un problema en absoluto, pero YMMV.

Al final, mi opinión es que no hay ningún riesgo en términos de usarlo en una aplicación de producción, así que no dejes que eso sea un bloqueador. Entonces, pruébalo. Escriba algún código con él, compárelo con lo que escribiría en JS, mire el código generado para ver si se siente cómodo con poder leerlo para las necesidades de depuración. Además, pasa el rato en el IRC #coffeescript, la gente es buena allí. Y finalmente, vea cómo se integraría con su aplicación, por ejemplo, cuál es su proceso de "construcción" (por ejemplo, para Rails, pruebe Barista, para algo independiente, simplemente use el "café -w" incluido, etc.).

Chrisrbailey
fuente
3

Coffeescript realmente facilita la escritura de JS. Terminas con un código más limpio y eficiente.

Dicho esto, solo puedes hacer todo lo que puedas en Vanilla JS. Una vez que use coffeescript lo suficiente, se vuelve mucho más fácil escribir (bueno) JS.

Entonces, si no ha usado JS mucho, le sugiero que aprenda coffescript en su lugar. Obtendrá un código mejor, más limpio y con menos errores. Si ya tiene mucha fluidez en JS, puede que no sea una buena idea comenzar a usar coffeescript en una aplicación "real".

(Además, coffeescript me molesta un poco porque parece fomentar un código bastante "floofy". No sé si es algo bueno o malo, pero parece un caso extremo de TMTOWTDI)

Zach
fuente
25
No estoy de acuerdo con la recomendación de aprender coffeescript en lugar de javascript, y también con la idea de que una vez dominado el aprendizaje / uso de javascript no es valioso. Comprender javascript es fundamental para los desarrolladores web. Es necesario comprender el javascript que generará su código coffeescript. Para aquellos que ya son maestros de JavaScript, coffeescript será un dispositivo mágico y revolucionario, er, herramienta.
Jim Garvin
3
@Jim Garvin, estuvo de acuerdo. Es importante que las personas aprendan su javascript, también diría que probablemente sería imposible aprender coffeescript antes que javascript de todos modos, ya que todos los recursos para un principiante estarán escritos en js anticuados (a menos que Rick Olsen de repente decida comenzar a publicar algunos iniciando tutoriales JS en su blog).
Daniel Mendel
2
También necesita comprender Javascript para escribir Coffeescript. Para que pueda depurar su código cuando algo salga mal.
Blaise
Actualización: CoffeeScript ahora tiene documentos bastante decentes, y los mapas de origen hacen que la depuración del código JS sea innecesaria. JavaScript es solo un objetivo en estos días. Aprender JS sigue siendo muy útil, pero un principiante podría aprender suficiente CoffeeScript, sin saber nada de JavaScript, para comenzar a codificar.
Carl Smith
3

Tenga en cuenta que, aunque hay un compilador, no obtiene comprobación estática debido a la naturaleza dinámica de JavaScript. Como está escrito en las preguntas frecuentes:

Análisis estático

CoffeeScript utiliza un compilador directo de fuente a fuente. No se realiza ninguna verificación de tipo y no podemos determinar si una variable existe o no. Esto significa que no podemos implementar funciones que otros lenguajes pueden construir de forma nativa sin costosas comprobaciones de tiempo de ejecución. Como resultado, no se considerará ninguna característica que se base en este tipo de análisis.

El soporte de IDE es menos maduro que el de JavaScript (Cloud9 tiene soporte de resaltado de sintaxis, pero Eclipse JSDT tiene refactorizaciones y más): /programming/4084167/ide-or-its-add-in-for-coffescript -programación

thSoft
fuente