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?

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

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.


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


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

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.



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


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

6
Quel est le problème avec la fonctionnalité coffeescript intégrée? coffee -o lib/ -cw src/
aaaidan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.