Czy mogę używać CoffeeScript zamiast JS dla node.js?

189

Jakie są moje ograniczenia, jeśli chcę zakodować node.js i używać CoffeeScript? Czy mogę zrobić wszystko, co mógłbym zrobić w JS?

Donald
źródło

Odpowiedzi:

175

Tak, CoffeeScript po prostu kompiluje się w czysty JS, dzięki czemu jest w pełni kompatybilny z node.js.

Aby uruchomić CoffeeScripts na węźle, możesz:

  • Wpisz, coffee -c example.coffeeaby skompilować, a następnie, node example.jsaby uruchomić skompilowany JS.
  • Po prostu wpisz coffee example.coffee
David Tang
źródło
2
Ale co z używaniem innych plików CoffeeScript? Nie chcę umieszczać wszystkiego w 1 CoffeeScript
Jiew Meng
3
@Jiew Meng możesz skompilować cały katalog w ten sam sposób (zastąp example.coffee ścieżką do katalogu) lub możesz requirenieskompilować plików coffeescript tak długo, jak require('coffee-script')wcześniej.
David Tang,
1
Czy działa coffee example.coffeeprzede wszystkim na rozwój? Czy jest wystarczająco stabilny w produkcji?
mrmagooey
4
Tak, jaka jest różnica między tymi dwoma wyborami?
Steve Bennett
4
Aby zainstalować kawęsudo npm install -g coffee-script
Dmitry Polushkin
89

Nie tylko możesz uruchamiać pliki CoffeeScript bezpośrednio w Node za pomocą

coffee source.coffee

możesz również wymagać ich, jakby były plikami JavaScript. Na przykład, jeśli masz lib.coffeew katalogu, możesz pisać

require './lib'

z innego pliku CoffeeScript w tym samym katalogu. (Aby to zrobić z pliku JavaScript, musisz dodać require 'coffee-script'na górze.) Tak więc nigdy nie musisz jawnie kompilować w Węzle, chyba że pakujesz swój projekt do wdrożenia za pomocą narzędzia takiego jak npm.

Jedno zastrzeżenie: w śladach stosu numery wierszy, które zobaczysz, odnoszą się do skompilowanego JavaScript, nawet gdy bezpośrednio używasz CoffeeScript (więc nie masz dostępu do JavaScript). Wielu ludzi próbuje to naprawić, ale jest to duże wyzwanie.

Trevor Burnham
źródło
1
Co dzieje się z kawą / kawą po stronie klienta?
fantazyjne
po stronie klienta potrzebny jest interpreter reklam, który należy umieścić na stronie HTML.
Daniele Vrut
1
@fancy, coffescript> 1.6.1 obsługuje mapy źródłowe
MegaTux
1
O ile wiem, nie można go debugować bez skorelowania JS z kawą w twojej głowie.
Eric
1
Reguły konwersji Coffeescript do JS są dość proste, wszystkie są dobrze udokumentowane :)
Kedare
57

Tak, oto inna i prostsza odpowiedź. Musisz zrobić 2 kroki.

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

  2. Mieć require('coffee-script')jako pierwsza linia, która zostanie wykonany w server.jsz app.js. ( AKTUALIZACJA: od skryptu kawy 1.7 musisz to zrobićrequire('coffee-script/register'))

Spowoduje to zarejestrowanie kompilatora coffeescript w Twojej aplikacji i możesz teraz traktować pliki kawy i pliki js jednakowo (co oznacza, że ​​możesz również wymagać plików kawy!).

Ta metoda wymaga napisania tylko jednego pliku (app.js) w javascript waniliowym. Ale zaletą jest to, że środowisko wdrażania nie musi mieć coffeescript jako początkowej globalnie zainstalowanej zależności do uruchomienia aplikacji. W takim przypadku wystarczy skopiować kod i npm installzainstalować wszystkie niezbędne pakiety. I npm startchciałbyś, żebyś był gotowy do pracy

gprasant
źródło
2
Dzięki za notatkę o aktualizacji 1.7 @ gprasant, wyciągałem włosy, zastanawiając się, dlaczego to przestało działać.
pix0r,
15

Samouczki wideo

Widziałem świetną serię samouczków autorstwa Pedro Teixeiry . Buduje całą serię na samouczkach dotyczących węzłów. Zawiera odniesienie do nodemon do automatycznego wykrywania i kompilacji oraz ponownego ładowania edytowanych plików .coffee.

  1. Coffeescript i Node.js
  2. Nodemon
Mark Essel
źródło
W nodetuts.com linki powyżej są podzielone. Samouczki na tej stronie wyglądają jednak świetnie.
ekillaby,
dzięki, oryginalne miejsca docelowe linków zniknęły / zostały przeniesione. Ustaw je zgodnie z tym, co ujawniło wyszukiwarka Google, filmy Vimeo @countfloortiles
Mark Essel,
3
Zobacz brunch.io, aby uzyskać świetne rozwiązanie demona / potoku NodeJS. Obejmuje kawę, nadzbiory CSS i wiele innych.
Lincoln B,
zauważyłem to jakiś czas temu, ale od tamtej pory nie odwiedziłem. dzięki za poruszenie tej
kwestii
11

Możesz użyć Jittera , prostej ciągłej kompilacji dla CoffeeScript.

npm install -g jitter

Załóżmy, że masz kilka plików * .coffee w katalogu kawy i chcesz skompilować je do katalogu js. Następnie uruchomić:

jitter coffee js

Jitter działa w tle, dopóki go nie zakończysz (Ctrl + C), sprawdzając nowe zmiany.

Roger Garzon Nieto
źródło
8

Coffeescript + ExpressJS + Couchdb + Redis + Auth:

https://gist.github.com/652819

Shripad Krishna
źródło
30
Cholera, to wiele modnych słów.
bgw 22.12.12
6

Spróbuj tego

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

Następnie wykonaj:

chmod +x demo.coffee
./demo.coffee

CoffeeScript ma dość solidną integrację z węzłem. Gdy moduł „coffeescript” jest ładowany, albo require('coffee-script')przez she-Bang demo'd powyżej lub uruchamiając coffee demo.coffee... Po załadowaniu można stosować require('./foo')przynieśćfoo.coffee

Dave Dopson
źródło
Dzięki, to bardzo przydatne!
Mike Ellis
0

Jeśli chcesz automatycznie kompilować wszystkie pliki coffeescript (w jednym katalogu łącznie z podkatalogiem) za każdym razem, gdy zmieniają się one w javascript, po prostu użyj tego polecenia:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc
Taner Topal
źródło
6
Co jest nie tak z wbudowaną funkcjonalnością coffeescript? coffee -o lib/ -cw src/
aaaidan,