Answers:
我们已经开始在我们的产品中使用CoffeeScript-一个非公开的网站,基本上是一个用于浏览某些类型数据的应用程序。我们将CoffeeScript用作命令行编译器(而不是在服务器上,我们最终希望这样做)。
重要的是,我们可以随时回头。我们的coffeescript编译器只是生成可读的javascript,因此,如果任何人改变了主意或无法弄清某些内容,那么我们就可以退回到使用coffeescript生成的javascript并保持编码。
this
,或者向函数发送了错误的类型?如果您不必“调试任何东西”,我认为您还没有做任何有趣的事情。
-m
一切都很好。
对于BusyConf中的所有 JavaScript,我们都使用coffeescript。BusyConf的很大一部分是在浏览器中运行的客户端应用程序,其中包括对脱机模式的支持。
我们所有的coffeescript代码都经过了全面测试。测试本身是用coffeescript编写的,并使用Qunit框架(用javascript编写)。我们还为Qunit框架编写了一个扩展,使测试变得更好。Qunit扩展是用CoffeeScript编写的。我们的应用程序具有使用CoffeeScript编写的移动版本,并使用Sencha Touch框架(使用javascript编写)。
这样做的好处是,您可以在应用程序中自由地混合javascript依赖关系,但是您编写的所有代码(您的应用程序代码,测试等)都可以(而且应该是!)是coffeescript。
差不多一年后,值得发布一些更新:
CoffeeScript项目的最权威列表在CoffeeScript Wiki的“ 在野外”页面上。
我想说,到目前为止,CoffeeScript的大多数生产用途都是与Appcelerator结合使用,以创建iPhone / Android应用程序。(Changelog的Wynn Netherland通过将CoffeeScript描述为“我的iOS,Android和WebOS移动开发的秘密武器”来模糊我的书),但是在生产Rails应用程序中将会有更多的用途,并且,我希望在其他地方,在未来的几个月中。
Coffeescript用于iPad的Ars Technica阅读器http://arstechnica.com/apple/news/2010/11/introducing-the-ars-technica-reader-for-ipad.ars
这些天我真的很喜欢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”等)。
Coffeescript确实确实使编写JS更容易。您最终得到了更干净,更高效的代码。
话虽如此,您仍然只能在Vanilla JS中做任何事情。一旦使用了足够的coffeescript,编写(好的)JS变得容易得多。
因此,如果您没有大量使用JS,建议您改用coffescript。您将获得更好,更干净,错误更少的代码。如果您确实精通JS,那么在“真实”应用程序上开始使用coffeescript可能不是一个好主意。
(此外,coffeescript让我有点恼火,因为它似乎鼓励使用相当“繁琐”的代码。我不知道这是好事还是坏事,但这似乎是TMTOWTDI的极端情况)
请注意,尽管有一个编译器,但是由于JavaScript的动态特性,您不会得到静态检查。如常见问题解答中所述:
静态分析
CoffeeScript使用直接的源到源编译器。不执行任何类型检查,即使变量不存在也无法确定。这意味着如果不进行昂贵的运行时检查,我们将无法实现其他语言可以在本机中构建的功能。结果,将不会考虑依赖于这种分析的任何功能。
IDE支持不如JavaScript成熟(Cloud9具有语法突出显示支持,但是Eclipse JSDT具有重构功能等等):https : //stackoverflow.com/questions/4084167/ide-or-its-add-in-for-coffescript -编程