Node.js,coffeescript和已编译的js文件

时间:2015-07-24 09:30:03

标签: javascript node.js coffeescript nodemon

我知道可以原生地使用CoffeeScript而不是JavaScript,而无需将CoffeeScript文件编译为JavaScript(至少不将它们编译为文件;可能是内存中或即时编译)。

我有一个主要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文件中的更改。

  • 如何避免此行为,并避免每次都编译文件?节点引擎是否可以在不在文件树中创建.js副本的情况下本地使用CoffeeScript文件?

  • 当然我知道Node.js引擎是一个JavaScript引擎,但有一种方法可以直接在内存或不同的文件夹中编译/运行文件(因为它可能仍然很有趣JavaScript输出)?

  • Node.js引擎,CoffeeScript编译器之间的确切交互是什么,以及如何理解这种行为?

1 个答案:

答案 0 :(得分:2)

我经常使用一个小的.js文件启动我的代码,使命令启动我的应用程序node index.js,其中包含以下内容:

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

./src/main更改为咖啡文件的路径。

它使用你的咖啡文件来运行代码,给出与你的咖啡源相对应的堆栈痕迹等。

您的app.coffee不需要咖啡脚本,因为您此时已经在使用咖啡。