Puis-je utiliser CoffeeScript au lieu de JS pour node.js?

189

Quelles sont mes restrictions si je veux coder node.js et utiliser CoffeeScript? Puis-je faire tout ce que je pourrais faire dans JS?

Donald
la source

Réponses:

175

Oui, CoffeeScript se compile simplement en JS pur, ce qui le rend totalement compatible avec node.js.

Pour exécuter CoffeeScripts sur le nœud, vous pouvez soit:

  • Tapez coffee -c example.coffeepour compiler, suivi de node example.jspour exécuter le JS compilé.
  • Tapez simplement coffee example.coffee
David Tang
la source
2
Mais qu'en est-il lors de l'utilisation d'autres fichiers CoffeeScript? Je ne veux pas tout mettre dans 1 CoffeeScript
Jiew Meng
3
@Jiew Meng vous pouvez compiler un répertoire entier de la même manière (remplacez example.coffee par le chemin du répertoire), ou vous pouvez requiredécompiler des fichiers coffeescript aussi longtemps que vous require('coffee-script')au préalable.
David Tang
1
La course est-elle coffee example.coffeeprincipalement destinée au développement? Ou est-ce suffisamment stable pour être utilisé en production?
mrmagooey
4
Ouais, quelle est la différence entre les deux choix?
Steve Bennett
4
Pour installer du cafésudo npm install -g coffee-script
Dmitry Polushkin
89

Non seulement vous pouvez exécuter des fichiers CoffeeScript directement dans Node avec

coffee source.coffee

vous pouvez également en avoir besoin comme s'il s'agissait de fichiers JavaScript. Par exemple, si vous avez lib.coffeedans un répertoire, vous pouvez écrire

require './lib'

à partir d'un autre fichier CoffeeScript dans le même répertoire. (Pour faire cela à partir d'un fichier JavaScript, vous devrez ajouter require 'coffee-script'en haut.) Ainsi, vous n'avez jamais à faire de compilation explicitement sous Node, à moins que vous n'emballiez votre projet pour le déploiement avec un outil comme npm.

Une mise en garde: dans les traces de pile, les numéros de ligne que vous verrez font référence au JavaScript compilé, même lorsque vous exécutez directement CoffeeScript (vous n'avez donc pas accès au JavaScript). Beaucoup de gens essaient de résoudre ce problème, mais c'est un gros défi.

Trevor Burnham
la source
1
Que se passe-t-il avec le café / js côté client?
fantaisie
côté client a besoin d'un interpréteur d'annonces que vous devez inclure dans la page HTML.
Daniele Vrut
1
@fancy, coffescript> 1.6.1 prend en charge les cartes sources
MegaTux
1
Pour autant que je sache, cela ne peut pas être débogué sans corréler JS au café dans votre tête.
Eric
1
Les règles de conversion de Coffeescript en JS sont assez simples, elles sont toutes bien documentées :)
Kedare
57

Oui, voici une réponse différente et plus simple. Vous devez faire 2 étapes.

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

  2. Avoir require('coffee-script')comme première ligne qui serait exécutée dans server.jsde app.js. ( MISE À JOUR: depuis coffee script 1.7, vous devrez fairerequire('coffee-script/register'))

Cela enregistre le compilateur coffeescript dans votre application et vous pouvez commencer à traiter les fichiers coffee et les fichiers js également maintenant (ce qui signifie que vous pouvez également avoir besoin de fichiers coffee!).

Cette méthode vous demandera d'écrire un seul fichier (app.js) en javascript vanilla. Mais l'avantage est que votre environnement de déploiement n'a pas besoin d'avoir coffeescript comme dépendance initiale installée globalement pour exécuter votre application. Dans ce cas, il vous suffirait de copier votre code et d' npm installinstaller tous les packages nécessaires. Et vous npm startmettrait en marche

gprasant
la source
2
Merci pour la note concernant la mise à jour 1.7 @gprasant, je m'arrachais les cheveux en me demandant pourquoi cela avait cessé de fonctionner.
pix0r
15

Tutoriels vidéos

J'ai vu une superbe série de tutoriels de Pedro Teixeira . Il a construit toute une série de tutoriels sur les nœuds. Il inclut une référence à nodemon pour la détection automatique, la compilation et le rechargement des fichiers .coffee modifiés.

  1. Coffeescript et Node.js
  2. Nodemon
Mark Essel
la source
Les liens nodetuts.com ci-dessus sont rompus. Les didacticiels sur ce site ont cependant fière allure.
ekillaby
merci, les destinations du lien d'origine ont disparu / déplacé. Définissez-les sur ce que la recherche Google a révélé, les vidéos Vimeo @countfloortiles
Mark Essel
3
Voir brunch.io pour une excellente solution de démon / pipeline d'actifs NodeJS. Couvre le café, les sur-ensembles CSS et plus encore.
Lincoln B
repéré cela il y a quelque temps, mais je n'ai pas visité depuis. merci de l'avoir soulevé
Mark Essel
11

Vous pouvez utiliser Jitter , une compilation continue simple pour CoffeeScript.

npm install -g jitter

Disons que vous avez un tas de fichiers * .coffee dans le répertoire coffee et que vous voulez les compiler dans le répertoire js. Puis exécutez:

jitter coffee js

Jitter s'exécute en arrière-plan jusqu'à ce que vous y mettiez fin (Ctrl + C), en regardant les nouveaux changements.

Roger Garzon Nieto
la source
8

Coffeescript + ExpressJS + Couchdb + Redis + Auth:

https://gist.github.com/652819

Shripad Krishna
la source
30
Merde, c'est beaucoup de mots à la mode.
bgw
6

Essaye ça

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

Alors fais:

chmod +x demo.coffee
./demo.coffee

CoffeeScript a une intégration assez solide avec node. Une fois le module 'coffee-script' chargé, soit par require('coffee-script'), par le she-bang dont j'ai fait la démonstration ci-dessus, soit en exécutant coffee demo.coffee... une fois chargé, vous pouvez utiliser require('./foo')pour apporterfoo.coffee

Dave Dopson
la source
Merci, c'est très utile!
Mike Ellis
0

Si vous souhaitez compiler automatiquement tous vos fichiers coffeescript (dans un répertoire comprenant le sous-répertoire) chaque fois qu'ils se transforment en javascript, utilisez simplement cette commande:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc
Taner Topal
la source
6
Quel est le problème avec la fonctionnalité coffeescript intégrée? coffee -o lib/ -cw src/
aaaidan