我可以为node.js使用CoffeeScript而不是JS吗?

don*_*ald 189 javascript node.js coffeescript

如果我想编写node.js并使用CoffeeScript,我的限制是什么?我可以做任何我能用JS做的事吗?

Dav*_*ang 175

是的,CoffeeScript只是编译成纯JS,使其与node.js完全兼容.

要在节点上运行CoffeeScripts,您可以:

  • 键入coffee -c example.coffee要编译,然后node example.js运行已编译的JS.
  • 只需输入 coffee example.coffee

  • 是的,两种选择之间有什么区别? (4认同)
  • 安装咖啡`sudo npm install -g coffee-script` (4认同)
  • @Jiew Meng你可以用同样的方式编译整个目录(用目录路径替换example.coffee),或者你可以`require`未编译的coffeescript文件,只要你事先需要('coffee-script')`. (3认同)
  • 但是在使用其他CoffeeScript文件时呢?我不想把所有东西放在1 CoffeeScript中 (2认同)

Tre*_*ham 89

您不仅可以直接在Node中运行CoffeeScript文件

coffee source.coffee
Run Code Online (Sandbox Code Playgroud)

您也可以将它们视为JavaScript文件.例如,如果您lib.coffee在目录中,则可以编写

require './lib'
Run Code Online (Sandbox Code Playgroud)

来自同一目录中的另一个CoffeeScript文件.(为了从JavaScript文件中执行此操作,您必须require 'coffee-script'在顶部添加.)因此,您永远不必在Node下显式编译,除非您使用像npm这样的工具打包项目以进行部署.

需要注意的是:在堆栈跟踪中,即使您直接运行CoffeeScript(因此您无法访问JavaScript),您将看到的行号也会引用已编译的JavaScript.很多人都试图解决这个问题,但这是一个很大的挑战.


gpr*_*ant 57

是的,这是一个不同的,更简单的答案.你需要做两个步骤.

  1. npm install coffee-script --save # I assume you would have done this already.

  2. require('coffee-script')因为这将在得到执行第一线server.jsapp.js.(更新:自从咖啡脚本1.7,你将不得不这样做require('coffee-script/register'))

这会将coffeescript编译器注册到您的应用程序,您现在可以开始同等地处理咖啡文件和js文件(这意味着您也可以要求咖啡文件!).

此方法将要求您在vanilla javascript中只编写一个文件(app.js).但优点是您的部署环境不需要将coffeescript作为初始全局安装的依赖项来运行您的应用程序.在这种情况下,您只需要复制代码,并npm install安装所有必需的包.并且npm start会让你起来跑步

  • 感谢关于1.7更新@gprasant的说明,我正在拉扯我的头发,想知道为什么它停止工作. (2认同)

Mar*_*sel 15

视频教程

我见过Pedro Teixeira的精彩教程.他一直在构建关于节点教程的整个系列.他包括对nodemon的引用,用于自动检测和编译以及重新加载已编辑的.coffee文件.

  1. Coffeescript和Node.js
  2. Nodemon

  • 有关伟大的NodeJS守护程序/资产管道解决方案,请参见http://brunch.io.涵盖咖啡,CSS超集等. (3认同)

Rog*_*eto 11

您可以使用Jitter,这是CoffeeScript的简单连续编译.

npm install -g jitter
Run Code Online (Sandbox Code Playgroud)

假设你在咖啡目录中有一堆*.coffee文件,并希望将它们编译到js目录.然后运行:

jitter coffee js
Run Code Online (Sandbox Code Playgroud)

抖动在后台运行,直到你终止它(Ctrl + C),看着新的变化.


Shr*_*hna 8

Coffeescript + ExpressJS + Couchdb + Redis + Auth:

https://gist.github.com/652819

  • 该死,这是很多流行语. (30认同)

Dav*_*son 6

试试这个

#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"
Run Code Online (Sandbox Code Playgroud)

然后做:

chmod +x demo.coffee
./demo.coffee
Run Code Online (Sandbox Code Playgroud)

CoffeeScript与节点的结合非常可靠.一旦加载了"咖啡脚本"模块,或者通过require('coffee-script')我上面演示的模仿,或者通过运行coffee demo.coffee...一旦加载,你可以用来require('./foo')引入foo.coffee