有没有人使用Coffeescript作为生产应用程序?

时间:2010-06-02 02:03:41

标签: javascript coffeescript

Coffeescript看起来很酷。有人用过吗?它的优点是什么?缺点

7 个答案:

答案 0 :(得分:113)

我们已经开始在我们的产品中使用CoffeeScript - 一个非公开的网站,它基本上是一个用于浏览某些类型数据的应用程序。 我们使用CoffeeScript作为命令行编译器(不在服务器上,我们最终想做)。

PROS (对我们来说):

  • 它在javascript(例如括号,分号,一些括号)中摆脱了许多不必要的混乱,以至于代码更清晰&比javascript更容易理解一目了然
  • 比javascript少了20-30%的代码行(做同样的事情)
  • CoffeeScript不仅可以消除噪音,还可以添加像heredocs这样的关键字,类和功能,使编码更清晰,更有趣。
  • 鉴于以前的观点,一旦你学会了绳索,在CoffeeScript中编码无疑会更快

CONS

  • 使用命令行编译器时:要进行调试,在解决问题(javascript)时,您正在查看不同的代码,就像编写修复程序(coffeescript)时一样。然而,有点令人难以置信的是,我们的CoffeeScript非常棒,我们从来不需要调试它!

重要的是,我们可以随时回头。我们的coffeescript编译器只是生成可读的javascript,所以如果有人改变主意或无法解决问题,那么我们可以回过头来使用coffeescript生成的javascript - 并继续编码。

答案 1 :(得分:27)

我们在BusyConf中使用coffeescript作为所有的javascript。 BusyConf的很大一部分是以浏览器运行的客户端应用程序,包括对离线模式的支持。

我们所有的coffeescript代码都经过全面测试。测试本身是用coffeescript编写的,并使用Qunit框架(用javascript编写)。我们还编写了Qunit框架的扩展,使测试更好。 Qunit扩展名用CoffeeScript编写。我们的应用程序有一个用CoffeeScript编写的移动版本,它使用Sencha Touch框架(用javascript编写)。

从中可以看出,您可以在应用程序中自由混合javascript依赖项,但您编写的所有代码(您的应用程序代码,测试等)都可以(而且应该!)是coffeescript。

答案 2 :(得分:24)

差不多一年之后,值得发布一些更新:

  1. Ruby on Rails 3.1正在整合官方的CoffeeScript支持,这意味着它将看到更多真实世界的使用。我上个月在RailsConf上发表了一篇演讲,其中大多数与会者之前没有听说过CoffeeScript,并且给予了dhh的强烈支持 - 他们都渴望进入它。
  2. 有一本关于CoffeeScript的书,目前在电子书中,很快将出版于The Pragmatic Bookshelf。它被称为CoffeeScript: Accelerated JavaScript Development,它真的是你的。它基于CoffeeScript 1.1.1。
  3. 语言实际上在1.0和1.1.1之间的六个月内变化很小;几乎所有的变化都被称为“错误修正”。我不得不对书中的代码进行很少的调整,以便从1.0.1过渡到1.1.1。但是,我确信这种语言将来会有更多重大变化。
  4. 最确定的CoffeeScript项目列表位于CoffeeScript wiki的In the Wild页面上。

    我想说到目前为止,CoffeeScript的大部分制作用途都是与Appcelerator一起创建iPhone / Android应用程序。 (The Changelog的Wynn Netherland通过将CoffeeScript描述为“我的iOS,Android和WebOS移动开发的秘密武器”来模糊我的书,但是在生产Rails应用程序中会有更多的用途 - 我希望,在其他地方 - 在接下来的几个月里。

答案 3 :(得分:12)

答案 4 :(得分:10)

这些天我真的很喜欢Coffeescript。基本上整个HotelTonight iPhone应用程序都写在其中(使用Appcelerator Titanium,它允许您在JavaScript中编写“本机”应用程序 - 它们不是Web应用程序,比如Phonegap)。在这种情况下,我选择使用Coffeescript,因为它使组织和维护大量的JS变得更加容易。我还发现使用Coffeescript(与JavaScript)编写代码会更加愉快。我们还在我们的Rails应用程序中使用Coffeescript作为JS,但这是与整个手机应用程序相关的极小/少量代码。

专业人员通常只是做一个更好的语法,但它也标准化了一个OO机制,然后添加了一些不错的补充(列表推导,一些范围等等)。

对我来说,缺点几乎为零。主要的是它是一个额外的调试层。您需要查看生成的JS(非常易读且很好),然后将其映射到您的Coffeescript代码。对我们来说,这根本不是问题,而是YMMV。

最后,我认为,在生产应用程序中使用它的风险为零,因此,不要让它成为阻止程序。然后,去尝试一下。用它编写一些代码,将它与你在JS中编写的代码进行比较,查看生成的代码,看看你是否因为能够读取调试需求而感到舒服。此外,在#coffeescript IRC中闲逛,人们在那里很好。最后,看看它如何与您的应用集成,例如什么是你的“构建”过程(例如对于Rails,尝试Barista,对于独立的东西,只需使用包含的“coffee -w”等)。

答案 5 :(得分:3)

Coffeescript真的让你更容易编写JS。最终得到更干净,更高效的代码。

话虽这么说,你仍然可以做任何你可以做的香草JS。一旦你足够使用coffeescript,编写(好)JS就会变得容易多了。

所以如果你没有使用过JS,我建议学习coffescript。你会得到更好,更清洁,更少的错误代码。如果你已经非常流利的JS,那么在“真正的”应用程序上开始使用coffeescript可能不是一个好主意。

(另外,coffeescript确实让我感到烦恼,因为它似乎鼓励相当“泛滥”的代码。我不知道这是好事还是坏事,但它似乎是TMTOWTDI的极端情况)

答案 6 :(得分:3)

请注意,尽管存在编译器,但由于JavaScript的动态特性,您无法进行静态检查。如FAQ中所述:

  

静态分析

     

CoffeeScript使用直接的源到源编译器。没有类型   执行检查,如果变量存在,我们就无法计算出来   或不。这意味着我们无法实现其他功能   语言可以本地构建,无需昂贵的运行时检查。作为一个   结果,任何依赖于这种分析的特征都不会   考虑。

IDE支持不如JavaScript成熟(Cloud9具有语法高亮支持,但Eclipse JSDT具有重构和更多):https://stackoverflow.com/questions/4084167/ide-or-its-add-in-for-coffescript-programming