我知道可以原生地使用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编译器之间的确切交互是什么,以及如何理解这种行为?
答案 0 :(得分:2)
我经常使用一个小的.js
文件启动我的代码,使命令启动我的应用程序node index.js
,其中包含以下内容:
CoffeeScript = require('coffee-script');
CoffeeScript.register();
require('./src/main');
将./src/main
更改为咖啡文件的路径。
它使用你的咖啡文件来运行代码,给出与你的咖啡源相对应的堆栈痕迹等。
您的app.coffee
不需要咖啡脚本,因为您此时已经在使用咖啡。