¿Puedo usar CoffeeScript en lugar de JS para node.js?

189

¿Cuáles son mis restricciones si quiero codificar node.js y usar CoffeeScript? ¿Puedo hacer cualquier cosa que pueda hacer en JS?

Donald
fuente

Respuestas:

175

Sí, CoffeeScript simplemente se compila en JS puro, lo que lo hace completamente compatible con node.js.

Para ejecutar CoffeeScripts en el nodo, puede:

  • Escriba coffee -c example.coffeepara compilar, seguido de node example.jspara ejecutar el JS compilado.
  • Simplemente escriba coffee example.coffee
David Tang
fuente
2
Pero, ¿qué pasa cuando se usan otros archivos CoffeeScript? No quiero poner todo en 1 CoffeeScript
Jiew Meng
3
@Jiew Meng puede compilar un directorio completo de la misma manera (reemplace example.coffee con la ruta del directorio), o puede requiredescomprimir archivos coffeescript siempre que lo haga de require('coffee-script')antemano.
David Tang
1
¿Se está ejecutando coffee example.coffeeprincipalmente para el desarrollo? ¿O es lo suficientemente estable como para hacerlo en producción?
mrmagooey
44
Sí, ¿cuál es la diferencia entre las dos opciones?
Steve Bennett
44
Para instalar cafésudo npm install -g coffee-script
Dmitry Polushkin
89

No solo puede ejecutar archivos CoffeeScript directamente en Node con

coffee source.coffee

También puede solicitarlos como si fueran archivos JavaScript. Por ejemplo, si tiene lib.coffeeen un directorio, puede escribir

require './lib'

desde otro archivo CoffeeScript en el mismo directorio. (Para hacer esto desde un archivo JavaScript, deberá agregarlo require 'coffee-script'en la parte superior). Por lo tanto, nunca tendrá que hacer una compilación explícitamente en Node, a menos que esté empacando su proyecto para su implementación con una herramienta como npm.

Una advertencia: en los seguimientos de pila, los números de línea que verá se refieren al JavaScript compilado, incluso cuando está ejecutando CoffeeScript directamente (por lo que no tiene acceso al JavaScript). Mucha gente está tratando de arreglar esto, pero es un gran desafío.

Trevor Burnham
fuente
1
¿Qué sucede con el café / js del lado del cliente?
elegante
el lado del cliente necesita un intérprete de anuncios que debe incluir en la página HTML.
Daniele Vrut
1
@fancy, coffescript> 1.6.1 admite mapas fuente
MegaTux
1
Por lo que puedo decir, esto no se puede depurar sin correlacionar JS con el café en su cabeza.
Eric
1
Las reglas de conversión de Coffeescript a JS son bastante simples, están bien documentadas :)
Kedare
57

Sí, aquí hay una respuesta diferente y más simple. Necesitas hacer 2 pasos.

  1. npm install coffee-script --save # I assume you would have done this already.

  2. Tienen require('coffee-script')como primera línea que se ejecutan en el server.jsde app.js. ( ACTUALIZACIÓN: desde coffee script 1.7, tendrás que hacerrequire('coffee-script/register'))

Esto registra el compilador coffeescript en su aplicación y ahora puede comenzar a tratar archivos de café y archivos js por igual (lo que significa que también puede necesitar archivos de café).

Este método requerirá que escriba solo un archivo (app.js) en JavaScript de vainilla. Pero la ventaja es que su entorno de implementación no necesita tener coffeescript como una dependencia inicial instalada globalmente para ejecutar su aplicación. En este caso, solo tendría que copiar su código e npm installinstalar todos los paquetes necesarios. Y npm startte tendría en funcionamiento

gprasant
fuente
2
Gracias por la nota sobre la actualización 1.7 @gprasant, me estaba sacando el pelo preguntándome por qué esto dejó de funcionar.
pix0r
15

Tutoriales en vídeo

He visto una gran serie de tutoriales de Pedro Teixeira . Ha estado construyendo una serie completa de tutoriales de nodos. Incluye referencia a nodemon para la detección automática y la compilación y recarga de archivos editados .coffee.

  1. Coffeescript y Node.js
  2. Nodemon
Mark Essel
fuente
Los enlaces de nodetuts.com anteriores están rotos. Sin embargo, los tutoriales en ese sitio se ven geniales.
ekillaby
gracias, los destinos de enlace originales desaparecieron / se mudaron. Ajústelos a lo que reveló la búsqueda de Google, los videos de Vimeo @countfloortiles
Mark Essel
3
Consulte brunch.io para obtener una excelente solución de canalización de demonio / activo NodeJS. Cubre café, superconjuntos CSS y más.
Lincoln B
Lo vi hace un tiempo, pero no lo he visitado desde entonces. gracias por mencionarlo
Mark Essel
11

Puede usar Jitter , una compilación continua simple para CoffeeScript.

npm install -g jitter

Supongamos que tiene un montón de archivos * .coffee en el directorio coffee y desea compilarlos en el directorio js. Entonces corre:

jitter coffee js

Jitter se ejecuta en segundo plano hasta que lo termina (Ctrl + C), buscando nuevos cambios.

Roger Garzon Nieto
fuente
6

Prueba esto

#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"

Entonces hazlo:

chmod +x demo.coffee
./demo.coffee

CoffeeScript tiene una integración bastante sólida con el nodo. Una vez que el módulo de 'coffeescript' se carga, ya sea require('coffee-script'), por el ella-bang que demo'd anteriormente, o ejecutando coffee demo.coffee... una vez cargado, puede utilizado require('./foo')para traerfoo.coffee

Dave Dopson
fuente
Gracias, eso es muy útil!
Mike Ellis
0

Si desea compilar automáticamente todos sus archivos coffeescript (en un directorio, incluido subdirectorio) cada vez que cambian a javascript, simplemente use este comando:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc
Taner Topal
fuente
66
¿Qué hay de malo con la funcionalidad de coffeescript incorporada? coffee -o lib/ -cw src/
aaaidan