在生产中使用"coffee"而不是"node"命令

ajs*_*sie 11 javascript node.js coffeescript

我有一个运行express.js的app.js.

我想将代码转换为coffeescript并考虑创建一个app.coffee,我编译为app.js所以我可以用"node app.js"运行它.

但后来我发现我可以在app.coffee中编写该文件并使用"coffee app.coffee"运行它.

这是一个更好的方法吗?我可以在生产中使用"咖啡"运行服务器吗?

Epe*_*eli 24

是的,你可以在生产中使用咖啡命令.我用它.

我可以看到你想要使用app.js包装器的两个原因.

  1. 您想使用CoffeeScript的本地安装.(应用之间的不同版本)
  2. 您想使用默认的npm start启动服务器:)请参阅npm help scripts

哦,你不需要编译它.您可以使用这样的包装器透明地编译咖啡文件:

server.js:

require('coffee-script').register();
require("./yourcoffeeapp.coffee");
Run Code Online (Sandbox Code Playgroud)

如果要在某些不直接支持CoffeeScript命令的托管环境中使用CoffeeScript,则此包装器技术特别有用.比如Cloud 9 IDE.无需编译已编译的js文件.

  • 请注意,对于较新版本的CoffeeScript(使用1.7.1测试),需要更新如下,**app.js**:`require('coffee-script').register();``require('. /app.coffee');`这个包装器在将Passenger作为Apache模块运行时效果很好,如果你正在部署一个典型的快递应用程序,它需要一个`app.js`文件. (2认同)

Tre*_*ham 7

我upvoted埃佩利的答案,这是明确的,优秀的,用的.js"包装",而不是coffee命令把你从潜在的路径头痛,但由于这是一个主观的问题,让我在相反的意见抛出.

我自己包含的许多CoffeeScripters建议在部署之前将非平凡的Node应用程序编译到JS.看看Sam Stephenson的节点 - 咖啡项目模板并不难看,它包含了一个使编译和测试变得轻而易举的Cakefile.

这样做的一个主要原因是节点堆栈跟踪给出了引用编译的JavaScript的行号,而不是原始的CoffeeScript.因此,当您的服务器日志中记录错误时,能够在服务器上查看相应的代码是很好的.

编译JS的另一个好处是它可以让你在服务器上使用更多的工具 - 许多Node调试器,测试框架和像集群一样的惊人的好东西,比如直接在.js文件上运行.

为您的项目获得良好的编译设置需要一些工作,但我认为您会发现它值得.