Posso usare CoffeeScript invece di JS per node.js?


189

Quali sono le mie restrizioni se voglio codificare node.js e usare CoffeeScript? Posso fare qualcosa che sarei in grado di fare in JS?

Risposte:


175

Sì, CoffeeScript si compila semplicemente in JS puro, rendendolo completamente compatibile con node.js.

Per eseguire CoffeeScripts sul nodo, è possibile:

  • Digitare coffee -c example.coffeeper compilare, seguito da node example.jsper eseguire il JS compilato.
  • Digita semplicemente coffee example.coffee

2
Ma che dire quando si usano altri file CoffeeScript? Non voglio mettere tutto in 1 CoffeeScript
Jiew Meng

3
@Jiew Meng puoi compilare un'intera directory allo stesso modo (sostituisci esempio.coffee con il percorso della directory), oppure puoi requirecompilare file di caffè compilati purché require('coffee-script')prima.
David Tang,

1
Funziona coffee example.coffeeprincipalmente per lo sviluppo? O è abbastanza stabile da fare in produzione?
mrmagooey,

4
Sì, qual è la differenza tra le due scelte?
Steve Bennett,

4
Per installare il caffèsudo npm install -g coffee-script
Dmitry Polushkin il

89

Non solo puoi eseguire i file CoffeeScript direttamente in Node con

coffee source.coffee

puoi anche richiederli come se fossero file JavaScript. Ad esempio, se si dispone lib.coffeein una directory, è possibile scrivere

require './lib'

da un altro file CoffeeScript nella stessa directory. (Per fare questo da un file JavaScript, dovrai aggiungerlo require 'coffee-script'in alto.) Quindi, non devi mai compilare esplicitamente sotto Nodo, a meno che tu non stia imballando il tuo progetto per la distribuzione con uno strumento come npm.

Un avvertimento: nelle tracce dello stack, i numeri di riga che vedrai si riferiscono al JavaScript compilato, anche quando esegui CoffeeScript direttamente (quindi non hai accesso a JavaScript). Molte persone stanno cercando di risolvere questo problema, ma è una grande sfida.


1
Cosa succede con il caffè / js lato client?
fantasia

lato client necessita di interprete di annunci che devi includere nella pagina HTML.
Daniele Vrut,

1
@fancy, coffescript> 1.6.1 supporta le mappe di origine
MegaTux,

1
Per quanto ne so, non è possibile eseguire il debug senza correlare JS al caffè in testa.
Eric,

1
Le regole di conversione da Coffeescript a JS sono piuttosto semplici, sono tutte ben documentate :)
Kedare,

57

Sì, ecco una risposta diversa e più semplice. Devi fare 2 passaggi.

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

  2. Avere require('coffee-script')come la prima linea che vengono eseguiti in server.jssu app.js. ( AGGIORNAMENTO: da Coffee Script 1.7, dovrai farlorequire('coffee-script/register'))

Questo registra il compilatore di coffeescript nella tua app e puoi iniziare a trattare i file del caffè e i file js allo stesso modo ora (il che significa che puoi richiedere anche i file del caffè!).

Questo metodo richiederà di scrivere solo un file (app.js) in javascript alla vaniglia. Ma il vantaggio è che l'ambiente di distribuzione non deve necessariamente disporre di coffeescript come dipendenza iniziale installata a livello globale per eseguire l'app. In questo caso, dovresti solo copiare il tuo codice e npm installinstallare tutti i pacchetti necessari. E ti npm startfarei funzionare


2
Grazie per la nota sull'aggiornamento 1.7 di @gprasant, mi stavo togliendo i capelli chiedendomi perché questo ha smesso di funzionare.
pix0r

15

Tutorial video

Ho visto una fantastica serie di tutorial di Pedro Teixeira . Sta costruendo un'intera serie di tutorial sui nodi. Include riferimenti a nodemon per il rilevamento e la compilazione automatici e il ricaricamento di file .coffee modificati.

  1. Coffeescript e Node.js
  2. Nodemon

I link sopra nodetuts.com sono interrotti. I tutorial su quel sito sembrano grandi, però.
ekillaby,

grazie, le destinazioni dei collegamenti originali sono scomparse / spostate. Impostali su ciò che la ricerca di Google ha rivelato, i video di Vimeo @countfloortiles
Mark Essel,

3
Vedi brunch.io per un'ottima soluzione di pipeline demone / asset NodeJS. Copre caffè, CSS superset e altro ancora.
Lincoln B,

notato questo tempo fa, ma non ho visitato da allora. grazie per averlo
menzionato

11

Puoi usare Jitter , una semplice compilazione continua per CoffeeScript.

npm install -g jitter

Supponiamo che tu abbia un sacco di file * .coffee nella directory coffee e che vuoi compilarli nella directory js. Quindi eseguire:

jitter coffee js

Il jitter viene eseguito in background fino a quando non lo si termina (Ctrl + C), in attesa di nuove modifiche.



6

Prova questo

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

Quindi fa:

chmod +x demo.coffee
./demo.coffee

CoffeeScript ha un'integrazione piuttosto solida con il nodo. Una volta che il modulo "coffee-script" viene caricato, sia dal require('coffee-script')she bang che ho demo sopra, o eseguendo coffee demo.coffee... una volta caricato, puoi usare require('./foo')per portarefoo.coffee


Grazie, è molto utile!
Mike Ellis,

0

Se vuoi compilare automaticamente tutti i tuoi file coffeescript (in una directory incluso subdir) ogni volta che cambiano in javascript, usa questo comando:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc

6
Cosa c'è di sbagliato nella funzionalità integrata di coffeescript? coffee -o lib/ -cw src/
aaaidan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.