Kann ich CoffeeScript anstelle von JS für node.js verwenden?


189

Was sind meine Einschränkungen, wenn ich node.js codieren und CoffeeScript verwenden möchte? Kann ich alles tun, was ich in JS tun kann?

Antworten:


175

Ja, CoffeeScript wird einfach in reines JS kompiliert, sodass es vollständig mit node.js kompatibel ist.

Um CoffeeScripts auf dem Knoten auszuführen, können Sie entweder:

  • Geben Sie coffee -c example.coffeezum Kompilieren ein, gefolgt vom node example.jsAusführen des kompilierten JS.
  • Einfach eingeben coffee example.coffee

2
Aber was ist mit anderen CoffeeScript-Dateien? Ich möchte nicht alles in 1 CoffeeScript
Jiew Meng

3
@Jiew Meng Sie können ein ganzes Verzeichnis auf die gleiche Weise kompilieren (ersetzen Sie example.coffee durch den Verzeichnispfad) oder Sie können nicht requirekompilierte Coffeescript-Dateien so lange wie require('coffee-script')zuvor erstellen .
David Tang

1
Läuft das coffee example.coffeehauptsächlich für die Entwicklung? Oder ist es stabil genug für die Produktion?
Mrmagooey

4
Ja, was ist der Unterschied zwischen den beiden Möglichkeiten?
Steve Bennett

4
Kaffee zu installierensudo npm install -g coffee-script
Dmitry Polushkin

89

Sie können nicht nur CoffeeScript-Dateien direkt in Node mit ausführen

coffee source.coffee

Sie können sie auch so benötigen, als wären sie JavaScript-Dateien. Wenn Sie sich beispielsweise lib.coffeein einem Verzeichnis befinden, können Sie schreiben

require './lib'

aus einer anderen CoffeeScript-Datei im selben Verzeichnis. (Um dies aus einer JavaScript-Datei heraus zu tun, müssen Sie require 'coffee-script'oben hinzufügen .) Sie müssen also niemals explizit unter Node kompilieren, es sei denn, Sie packen Ihr Projekt für die Bereitstellung mit einem Tool wie npm.

Eine Einschränkung: In Stack-Traces beziehen sich die angezeigten Zeilennummern auf das kompilierte JavaScript, auch wenn Sie CoffeeScript direkt ausführen (Sie haben also keinen Zugriff auf das JavaScript). Viele Leute versuchen dies zu beheben, aber es ist eine große Herausforderung.


1
Was passiert mit clientseitigem Kaffee / js?
Lust auf den

Für den Client ist ein Anzeigeninterpreter erforderlich, den Sie in die HTML-Seite aufnehmen müssen.
Daniele Vrut

1
@fancy, coffescript> 1.6.1 unterstützt
Quellkarten

1
Soweit ich das beurteilen kann, kann dies nicht getestet werden, ohne JS mit Kaffee in Ihrem Kopf zu korrelieren.
Eric

1
Coffeescript zu JS Konvertierungsregeln sind ziemlich einfach, sie sind alle gut dokumentiert :)
Kedare

57

Ja, hier ist eine andere und einfachere Antwort. Sie müssen 2 Schritte ausführen.

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

  2. Haben Sie require('coffee-script')als die erste Zeile , die in erhalten ausgeführt würde server.jsvon app.js. ( UPDATE: Seit Coffee Script 1.7 müssen Sie tunrequire('coffee-script/register'))

Dadurch wird der Coffeescript-Compiler in Ihrer App registriert, und Sie können jetzt gleich mit der Behandlung von Kaffeedateien und JS-Dateien beginnen (was bedeutet, dass Sie auch Kaffeedateien benötigen können!).

Bei dieser Methode müssen Sie nur die eine Datei (app.js) in Vanille-Javascript schreiben. Der Vorteil ist jedoch, dass Ihre Bereitstellungsumgebung kein Coffeescript als anfänglich global installierte Abhängigkeit zum Ausführen Ihrer App benötigen muss. In diesem Fall müssten Sie nur Ihren Code kopieren und npm installalle erforderlichen Pakete installieren. Und npm startwürde dich zum Laufen bringen


2
Vielen Dank für den Hinweis zum 1.7-Update @gprasant. Ich habe mir die Haare ausgezogen und mich gefragt, warum dies nicht mehr funktioniert.
pix0r

15

Videoanleitungen

Ich habe eine großartige Tutorial-Serie von Pedro Teixeira gesehen . Er hat eine ganze Reihe von Knoten-Tutorials erstellt. Er enthält einen Verweis auf nodemon zur automatischen Erkennung und Kompilierung sowie zum erneuten Laden bearbeiteter .coffee-Dateien.

  1. Coffeescript und Node.js.
  2. Nodemon

Die obigen Links zu nodetuts.com sind fehlerhaft . Die Tutorials auf dieser Seite sehen jedoch großartig aus.
Ekillaby

danke, die ursprünglichen Link-Ziele sind verschwunden / verschoben. Stellen Sie sie auf das ein, was die Google-Suche enthüllte, die Vimeo-Videos @countfloortiles
Mark Essel

3
Unter brunch.io finden Sie eine großartige NodeJS-Daemon / Asset-Pipeline-Lösung. Deckt Kaffee, CSS-Supersets und mehr ab.
Lincoln B

habe dies vor einiger Zeit entdeckt, aber seitdem nicht mehr besucht. Danke, dass du es
angesprochen

11

Sie können Jitter verwenden , eine einfache kontinuierliche Kompilierung für CoffeeScript.

npm install -g jitter

Angenommen, Sie haben eine Reihe von * .coffee-Dateien im Kaffeeverzeichnis und möchten diese im js-Verzeichnis kompilieren. Dann renne:

jitter coffee js

Jitter wird im Hintergrund ausgeführt, bis Sie es beenden (Strg + C) und auf neue Änderungen achten.



6

Versuche dies

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

Dann mach:

chmod +x demo.coffee
./demo.coffee

CoffeeScript hat eine ziemlich solide Integration mit Node. Sobald der ‚Kaffee-Skript‘ Modul geladen wird, entweder durch require('coffee-script'), durch die sie Bang demo'd ich oben, oder durch Ausführen coffee demo.coffee... einmal geladen, mit der Sie können require('./foo')zu bringenfoo.coffee


Danke, das ist sehr nützlich!
Mike Ellis

0

Wenn Sie alle Ihre Coffeescript-Dateien (in einem Verzeichnis einschließlich Unterverzeichnis) bei jeder Änderung in Javascript automatisch kompilieren möchten, verwenden Sie einfach diesen Befehl:

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

6
Was ist falsch an der integrierten Coffeescript-Funktionalität? coffee -o lib/ -cw src/
aaaidan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.