Posso usar o CoffeeScript em vez de JS para o node.js?


189

Quais são minhas restrições se eu quiser codificar node.js e usar o CoffeeScript? Posso fazer qualquer coisa que eu possa fazer no JS?

Respostas:


175

Sim, o CoffeeScript simplesmente compila em JS puro, tornando-o completamente compatível com o node.js.

Para executar o CoffeeScripts no nó, você pode:

  • Digite coffee -c example.coffeepara compilar, seguido por node example.jspara executar o JS compilado.
  • Basta digitar coffee example.coffee

2
Mas e quando usar outros arquivos CoffeeScript? Eu não quero colocar tudo em 1 CoffeeScript
Jiew Meng

3
@Jiew Meng, você pode compilar um diretório inteiro da mesma maneira (substitua example.coffee pelo caminho do diretório) ou pode requiredescompilar arquivos de café com café, desde que require('coffee-script')previamente.
David Tang

1
Está sendo executado coffee example.coffeeprincipalmente para desenvolvimento? Ou é estável o suficiente para produzir na produção?
mrmagooey

4
Sim, qual é a diferença entre as duas opções?
21813 Steve Bennett #

4
Para instalar cafésudo npm install -g coffee-script
Dmitry Polushkin

89

Não apenas você pode executar arquivos CoffeeScript diretamente no Node com

coffee source.coffee

você também pode solicitá-los como se fossem arquivos JavaScript. Por exemplo, se você tiver lib.coffeeum diretório, poderá escrever

require './lib'

de outro arquivo CoffeeScript no mesmo diretório. (Para fazer isso a partir de um arquivo JavaScript, você precisará adicioná-lo require 'coffee-script'na parte superior.) Portanto, você nunca precisará fazer compilação explicitamente no Node, a menos que esteja empacotando seu projeto para implantação com uma ferramenta como o npm.

Uma ressalva: nos rastreamentos de pilha, os números de linha que você verá se referem ao JavaScript compilado, mesmo quando você estiver executando o CoffeeScript diretamente (para que você não tenha acesso ao JavaScript). Muita gente está tentando consertar isso, mas é um grande desafio.


1
O que acontece com café / js do lado do cliente?
chique

o cliente precisa do intérprete de anúncio que você deve incluir na página HTML.
Daniele Vrut

1
@fancy, coffescript> 1.6.1 suporta mapas de origem
MegaTux 30/06

1
Até onde eu sei, isso não pode ser depurado sem correlacionar JS com café na sua cabeça.
Eric

1
As regras de conversão de Coffeescript para JS são bastante simples, todas estão bem documentadas :)
Kedare

57

Sim, aqui está uma resposta diferente e mais simples. Você precisa fazer 2 etapas.

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

  2. Ter require('coffee-script') como a primeira linha que seria executada em server.jsde app.js. ( ATUALIZAÇÃO: desde o script do café 1.7, você terá que fazerrequire('coffee-script/register'))

Isso registra o compilador de café no seu aplicativo e você pode começar a tratar os arquivos de café e os arquivos js igualmente agora (o que significa que você também pode precisar de arquivos de café!).

Este método exigirá que você escreva apenas um arquivo (app.js) em vanilla javascript. Mas a vantagem é que seu ambiente de implementação não precisa ter coffeescript como uma dependência inicial instalada globalmente para executar seu aplicativo. Nesse caso, você precisaria copiar o código e npm installinstalar todos os pacotes necessários. E npm startcolocaria você em funcionamento


2
Obrigado pela observação sobre a atualização 1.7 @gprasant, eu estava puxando meu cabelo para me perguntar por que isso parou de funcionar.
pix0r

15

Tutoriais em vídeo

Eu vi uma ótima série de tutoriais de Pedro Teixeira . Ele está construindo uma série inteira de tutoriais de nós. Ele inclui referência ao nodemon para detecção automática, compilação e recarregamento de arquivos .coffee editados.

  1. Coffeescript e Node.js
  2. Nodemon

Os links nodetuts.com acima estão quebrados. Os tutoriais nesse site estão ótimos, no entanto.
Ekillaby 6/12/12

graças, os destinos originais do link desapareceram / foram movidos. Configurá-los para o Google Search revelado, os Vimeo @countfloortiles
Mark Essel

3
Consulte brunch.io para obter uma ótima solução de daemon / pipeline de ativos NodeJS. Abrange Café, superconjuntos CSS e muito mais.
Lincoln B

vi isso há um tempo, mas não o visitei desde então. obrigado por trazê-lo à tona
Mark Essel

11

Você pode usar o Jitter , uma compilação contínua simples para CoffeeScript.

npm install -g jitter

Digamos que você tenha vários arquivos * .coffee no diretório coffee e queira compilá-los no diretório js. Então corra:

jitter coffee js

A tremulação é executada em segundo plano até que você a encerre (Ctrl + C), observando novas alterações.



6

Tente isto

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

Então faça:

chmod +x demo.coffee
./demo.coffee

O CoffeeScript possui uma integração bastante sólida com o nó. Uma vez que o módulo 'coffeescript' é carregado, quer por require('coffee-script'), pelo ela-bang I demo'd acima, ou executando coffee demo.coffee... uma vez carregado, você pode ser usado require('./foo')para trazerfoo.coffee


Obrigado, isso é muito útil!
Mike Ellis

0

Se você deseja compilar automaticamente todos os seus arquivos coffeescript (em um diretório, incluindo subdir) toda vez que eles mudarem para javascript, use este comando:

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

6
O que há de errado com a funcionalidade interna de café expresso? coffee -o lib/ -cw src/
Aaaidan 3/08
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.