2015-07-24 3 views
2

Я понял, что можно было изначально использовать CoffeeScript вместо JavaScript, без компиляции файлов CoffeeScript на JavaScript (по крайней мере, не скомпилировать их как файлы; возможно, в памяти или в режиме on- fly сборник).Node.js, coffeescript и скомпилированные js-файлы

У меня есть основное приложение с главным app.coffee файл следующим образом:

coffee = require 'coffee-script' 
coffee = require 'coffee-script/register' 
express = require 'express' 
compression = require 'compression' 
sockets = require 'socket.io' 
http = require 'http' 
server = http.createServer express 
app = express() 
# [...] 

В моем package.json я следующее:

// ... 
"dependencies": { 
    "coffee-script": "^1.9.3" 
    // ... 
} 
"scripts": { 
    "start": "coffee app.coffee --nodejs" 
    // ... 
} 
// ... 

Я могу запустить приложение с помощью $> nodemon app.coffee или $> coffee app.coffee или $> npm start

В какой-то момент, когда я перезапустите приложение или сохраните файл CoffeeScript, файл CoffeeScript будет скомпилирован в файл JavaScript, и поэтому каждый файл в дереве папок будет дублироваться как в версии .js, так и в версии .coffee, что я нахожу довольно тревожным.

Также, когда есть файл .js для модуля, я когда-то чувствую, что приложение будет использовать его в приоритетном порядке, а изменения в файле CoffeeScript больше не учитываются.

  • Как я могу избежать такого поведения и избегать компиляции файлов каждый раз? Возможно ли, чтобы движок узла изначально использовал файлы CoffeeScript, не создавая копию .js в дереве файлов?

  • Конечно, я понимаю, что движок Node.js является механизмом JavaScript, но есть способ скомпилировать/запустить файлы непосредственно в памяти или в другой папке (так как может показаться интересным увидеть Выход JavaScript)?

  • Каково точное взаимодействие между движком Node.js, компилятором CoffeeScript и как я могу понять это поведение?

ответ

2

Я часто использую небольшой .js файл, чтобы запустить свой код делает команду для запуска своих приложений node index.js, который содержит следующее:

CoffeeScript = require('coffee-script'); 
CoffeeScript.register(); 
require('./src/main'); 

Изменения ./src/main на путь к файлу кофе.

Он использует ваши файлы кофе для запуска вашего кода с указанием стеков и т. Д., Которые соответствуют вашему источнику кофе.

Вашему app.coffee не нужно будет требовать кофе-скрипта, поскольку вы уже используете кофе в этот момент.

Смежные вопросы