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?

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

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.


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


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

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.



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


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

6
Co jest nie tak z wbudowaną funkcjonalnością coffeescript? coffee -o lib/ -cw src/
aaaidan,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.