Могу ли я использовать CoffeeScript вместо JS для node.js?

189

Каковы мои ограничения, если я хочу кодировать node.js и использовать CoffeeScript? Могу ли я сделать все, что смогу сделать в JS?

Дональд
источник

Ответы:

175

Да, CoffeeScript просто компилируется в чистый JS, что делает его полностью совместимым с node.js.

Чтобы запустить CoffeeScripts на узле, вы можете:

  • Введите команду coffee -c example.coffeecompile, затем node example.jsзапустите скомпилированный JS.
  • Просто наберите coffee example.coffee
Дэвид Тан
источник
2
Но как быть при использовании других файлов CoffeeScript? Я не хочу помещать все в 1 CoffeeScript
Jiew Meng
3
@Jiew Meng вы можете скомпилировать весь каталог таким же образом (замените example.coffee на путь к каталогу), или вы можете requireоткомпилировать файлы coffeescript, если вы require('coffee-script')заранее.
Дэвид Тан
1
Работает в coffee example.coffeeосновном для развития? Или это достаточно стабильно для производства?
mrmagooey
4
Да, в чем разница между двумя вариантами?
Стив Беннетт
4
Для установки кофеsudo npm install -g coffee-script
Дмитрий Полушкин
89

Вы можете не только запускать файлы CoffeeScript напрямую в Node с помощью

coffee source.coffee

Вы также можете потребовать их, как если бы они были файлами JavaScript. Например, если у вас есть lib.coffeeв каталоге, вы можете написать

require './lib'

из другого файла CoffeeScript в том же каталоге. (Для того, чтобы сделать это из файла JavaScript, вам нужно будет добавить require 'coffee-script'вверху.) Таким образом, вам никогда не придется выполнять компиляцию явно в Node, если вы не упаковываете свой проект для развертывания с помощью такого инструмента, как npm.

Одно предостережение: при трассировке стека номера строк, которые вы увидите, относятся к скомпилированному JavaScript, даже когда вы запускаете CoffeeScript напрямую (поэтому у вас нет доступа к JavaScript). Многие пытаются это исправить, но это большая проблема.

Тревор Бернхэм
источник
1
Что происходит с клиентом кофе / JS?
Необычные
Клиентская сторона нуждается в переводчике рекламы, который вы должны включить в HTML-страницу.
Даниэле Врут
1
@fancy, coffescript> 1.6.1 поддерживает исходные карты
MegaTux
1
Насколько я могу судить, это невозможно отладить без соотнесения JS с кофе в вашей голове.
Эрик
1
Правила преобразования Coffeescript в JS довольно просты, все они хорошо документированы :)
Kedare
57

Да, вот другой и более простой ответ. Вам нужно сделать 2 шага.

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

  2. Иметь require('coffee-script')в качестве первой строки, которая будет выполнена в server.jsоф app.js. ( ОБНОВЛЕНИЕ: начиная с сценария кофе 1.7, вам придется сделатьrequire('coffee-script/register'))

Это регистрирует компилятор coffeescript в вашем приложении, и теперь вы можете начинать обрабатывать файлы кофе и файлы js одинаково (это означает, что вам также могут потребоваться файлы кофе!).

Этот метод потребует от вас написать только один файл (app.js) в vanilla javascript. Но преимущество заключается в том, что вашей среде развертывания не нужно иметь coffeescript в качестве начальной глобально установленной зависимости для запуска вашего приложения. В этом случае вам просто нужно скопировать код и npm installустановить все необходимые пакеты. И npm startвы бы работали

gprasant
источник
2
Спасибо за примечание об обновлении 1.7 @gprasant, я вырывал свои волосы, задаваясь вопросом, почему это перестало работать.
pix0r
15

Видео уроки

Я видел замечательную серию уроков Педро Тейшейры . Он строит целую серию на уроках узлов. Он включает ссылку на nodemon для автоматического обнаружения, компиляции и перезагрузки отредактированных файлов .coffee.

  1. Coffeescript и Node.js
  2. Nodemon
Марк Эссель
источник
В nodetuts.com ссылки выше сломаны. Тем не менее, учебники на этом сайте выглядят великолепно.
ekillaby
спасибо, исходная ссылка назначения исчезла / переехала. Настройте их на то, что показал поиск Google, видео Vimeo @countfloortiles
Марк Эссель
3
Смотрите brunch.io, чтобы найти отличное решение для демона / конвейера ресурсов NodeJS. Обложки кофе, CSS суперсеты и многое другое.
Линкольн Б
заметил это некоторое время назад, но не посещал с тех пор. спасибо за то, что подняли его
Марк Эссель
11

Вы можете использовать Jitter , Простую непрерывную компиляцию для CoffeeScript.

npm install -g jitter

Допустим, у вас есть куча файлов * .coffee в каталоге coffee, и вы хотите скомпилировать их в каталог js. Затем запустите:

jitter coffee js

Джиттер работает в фоновом режиме, пока вы не прекратите его (Ctrl + C), следя за новыми изменениями.

Роджер Гарсон Ньето
источник
6

Попробуй это

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

Затем сделайте:

chmod +x demo.coffee
./demo.coffee

CoffeeScript имеет довольно прочную интеграцию с узлом. После загрузки модуля «coffee-script», либоrequire('coffee-script') помощью she-bang, который я продемонстрировал выше, либо запустив coffee demo.coffee... после загрузки, вы можете использовать require('./foo')для вводаfoo.coffee

Дейв Допсон
источник
Спасибо, это очень полезно!
Майк Эллис
0

Если вы хотите автоматически компилировать все ваши файлы coffeescript (в одном каталоге, включая subdir) каждый раз, когда они переходят в javascript, просто используйте эту команду:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc
Танер Топал
источник
6
Что не так со встроенной функциональностью coffeescript? coffee -o lib/ -cw src/
Аайдан