Каковы мои ограничения, если я хочу кодировать node.js и использовать CoffeeScript? Могу ли я сделать что-нибудь, что я мог бы сделать в JS?
Могу ли я использовать CoffeeScript вместо JS для node.js?
Ответы (8)
Да, CoffeeScript просто компилируется в чистый JS, что делает его полностью совместимым с node.js.
Чтобы запустить CoffeeScripts на узле, вы можете:
- Введите
coffee -c example.coffee
для компиляции, а затемnode example.js
для запуска скомпилированного JS. - Просто введите
coffee example.coffee
require
нескомпилированные файлы coffeescript, если вы require('coffee-script')
заранее.
- person David Tang; 12.06.2012
coffee example.coffee
в первую очередь для разработки? Или он достаточно стабилен, чтобы делать это в продакшене?
- person mrmagooey; 12.06.2013
sudo npm install -g coffee-script
- person Dmitry Polushkin; 06.11.2013
Вы можете не только запускать файлы CoffeeScript непосредственно в узле с
coffee source.coffee
вы также можете потребовать их, как если бы они были файлами JavaScript. Например, если у вас есть lib.coffee
в каталоге, вы можете написать
require './lib'
из другого файла CoffeeScript в том же каталоге. (Чтобы сделать это из файла JavaScript, вам нужно будет добавить require 'coffee-script'
вверху.) Таким образом, вам никогда не придется выполнять компиляцию явно в Node, если только вы не упаковываете свой проект для развертывания с помощью такого инструмента, как npm.
Одно предостережение: в трассировках стека номера строк, которые вы увидите, относятся к скомпилированному JavaScript, даже если вы запускаете CoffeeScript напрямую (поэтому у вас нет доступа к JavaScript). Многие люди пытаются исправить это, но это большая проблема.
require('coffee-script/register');
(Источник )
- person bootsmaat; 17.03.2015
Да, вот другой и более простой ответ. Вам нужно сделать 2 шага.
npm install coffee-script --save # I assume you would have done this already
.Сделайте
require('coffee-script')
первой строкой, которая будет выполнена вserver.js
изapp.js
. (ОБНОВЛЕНИЕ: начиная с версии 1.7 сценария кофе, вам нужно будет сделатьrequire('coffee-script/register'))
Это регистрирует компилятор coffeescript в вашем приложении, и теперь вы можете начать обрабатывать файлы coffee и js одинаково (это означает, что вам также могут потребоваться файлы coffee!).
Этот метод потребует от вас написать только один файл (app.js) в ванильном javascript. Но преимущество заключается в том, что ваша среда развертывания не должна иметь coffeescript в качестве начальной глобально установленной зависимости для запуска вашего приложения. В этом случае вам просто нужно будет скопировать свой код, и npm install
установит все необходимые пакеты. И npm start
заставит вас работать
Видеоуроки
Я видел отличную серию руководств Педро Тейшейры. Он создал целую серию руководств по узлам. Он включает ссылку на nodemon для автоматического обнаружения, компиляции и перезагрузки отредактированных файлов .coffee.
Вы можете использовать Jitter, простую непрерывную компиляцию для CoffeeScript.
npm install -g jitter
Допустим, у вас есть куча файлов *.coffee в каталоге coffee, и вы хотите скомпилировать их в каталог js. Затем запустите:
jitter coffee js
Джиттер работает в фоновом режиме, пока вы не остановите его (Ctrl+C), наблюдая за новыми изменениями.
Coffeescript + ExpressJS + Couchdb + Redis + аутентификация:
https://gist.github.com/652819
Попробуй это
#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"
Затем выполните:
chmod +x demo.coffee
./demo.coffee
CoffeeScript имеет довольно прочную интеграцию с node. Как только модуль 'coffee-script' будет загружен, либо с помощью require('coffee-script')
, с помощью демонстрационного примера, показанного выше, либо с помощью coffee demo.coffee
... после загрузки вы можете использовать require('./foo')
для ввода foo.coffee
Если вы хотите автоматически компилировать все ваши файлы coffeescript (в одном каталоге, включая subdir) каждый раз, когда они превращаются в javascript, просто используйте эту команду:
find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc
coffee -o lib/ -cw src/
- person aaaidan; 03.08.2012