我可以使用CoffeeScript代替JS来开发Node.js吗?


Answers:


175

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

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

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

2
但是,当使用其他CoffeeScript文件时呢?我不想将所有内容都放在1 CoffeeScript中
Jiew Meng

3
@Jiew Meng,您可以用相同的方式编译整个目录(用目录路径替换example.coffee),或者require只要require('coffee-script')事先就可以未编译的coffeescript文件。
David Tang

1
运行coffee example.coffee主要是为了发展吗?还是足够稳定以进行生产?
mrmagooey 2013年

4
是的,这两种选择有什么区别?
史蒂夫·贝内特

4
安装咖啡sudo npm install -g coffee-script
Dmitry Polushkin 2013年

89

您不仅可以直接在Node中使用以下命令运行CoffeeScript文件

coffee source.coffee

您也可以要求它们就好像它们是JavaScript文件一样。例如,如果您lib.coffee在目录中,则可以编写

require './lib'

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

一个警告:在堆栈跟踪中,即使直接运行CoffeeScript,您也会看到的行号是指已编译的JavaScript(因此您无权访问JavaScript)。许多人都在尝试解决此问题,但这是一个很大的挑战。


1
客户端Coffee / js会怎样?
2012年

您必须包含在HTML页面中的客户端需求广告解释器。
Daniele Vrut

1
@fancy,coffescript> 1.6.1 支持源地图
MegaTux 2014年

1
据我所知,如果不将JS与咖啡联系起来,就无法调试它。
埃里克

1
Coffeescript到JS的转换规则非常简单,有据可查:)
Kedare 2014年

57

是的,这是一个不同且更简单的答案。您需要执行2个步骤。

  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编译器注册到您的应用程序,您现在就可以同等地开始处理coffee文件和js文件(这意味着您也可能需要coffee文件!)。

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


2
感谢您对1.7更新@gprasant的说明,我想知道为什么它停止工作时才拔掉头发。
pix0r 2014年

15

影片教学

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

  1. Coffeescript和Node.js
  2. Nodemon

上面的nodetuts.com链接已损坏。不过,该站点上的教程看起来很棒。
ekillaby

谢谢,原始的链接目标消失了/移动了。将其设置为Google搜索显示的内容,即Vimeo视频@countfloortiles
Mark Essel

3
有关出色的NodeJS守护程序/资产管道解决方案,请参见brunch.io。涵盖Coffee,CSS超集等。
林肯B

不久前发现了这个,但此后再也没有来过。感谢您将它
马克爱索尔

11

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

npm install -g jitter

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

jitter coffee js

抖动会在后台运行,直到您终止它(Ctrl + C),然后观察新的变化。



6

试试这个

#!/usr/bin/env coffee
v = 78
console.log "The value of v is '#{v}'"

然后做:

chmod +x demo.coffee
./demo.coffee

CoffeeScript与node的集成非常牢固。一旦加载了“ coffee-script”模块,可以通过require('coffee-script'),通过上面演示的she-bang或运行coffee demo.coffee...加载后,就可以用来导入require('./foo')foo.coffee


谢谢,这非常有用!
Mike Ellis,

0

如果您希望每次将所有coffeescript文件更改为javascript时自动编译所有coffeescript文件(在一个目录中,包括subdir),请使用以下命令:

find . -name '*.coffee' -type f -print0 | xargs -0 coffee -wc

6
内置coffeescript功能有什么问题?coffee -o lib/ -cw src/
aaaidan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.