译 者 序 CoffeeScript金科玉律:“它只是JavaScript!” ——coffeescript.org CoffeeScript之父Jeremy Ashkenas在Twitter上有个很好笑的段子。 他说:“我非常想知道在GitHire上有多少人有5年CoffeeScript经验,很显然我有很多地方需要向他们请教。” 有人答道:“就是,这些人大概是在一边煮咖啡,一边写脚本。” 的确,与Python或Ruby相比,CoffeeScript非常年轻,到现在才两年出头的时间。 还清楚地记得,我是在了解Zombie.js时第一次接触到CoffeeScript。Zombie.js是一个用于客户端JavaScript测试的轻型框架,在查看Zombie.js的源码时(http://zombie.labnotes.org/source/),我就被CoffeeScript的优雅和对应的漂亮文档所吸引了。 谁说使用CoffeeScript不是如边煮咖啡边写脚本一样怡然自得呢?真的,这东西很酷! CoffeeScript之于JavaScript,就如Less或Sass之于CSS。它吸收了JavaScript语言的精华,并且添加了很多现代脚本语言(Python和Ruby等)所具有的特性,比如列表解析、字符串插值、参数列、吸收操作符等。我想CoffeeScript就是大师Douglas Crockford所想要的那种JavaScript子集(如他在《JavaScript语言精粹》的第10章中所说:“精简的JavaScript不是一个严格的子集,我添加了少许特性……”)。它能够减少三分之一以上的代码量,但由它得到的JavaScript代码去除了语言怪癖,能够兼容所有引擎环境!CoffeeScript编译生成的JavaScript代码可读性很强,而且优雅程度不亚于直接写出的JavaScript代码,你甚至能看到JavaScript在各方面的最佳实践。 虽然CoffeeScript非常年轻,但因为Rails 3.1的直接集成和在Node.js开发方面的天然优势,CoffeeScript在很多方面都有了应用,比方说之前提到的浏览器模拟器Zombie.js,还有基于Express的高级Node.js开发框架Zappa,甚至使用CoffeeScript写成的PSD文件解析器psd.js(http://meltingice. github.com/psd.js/)。 但无论CoffeeScript如何优秀和使用广泛,总之要记住它的金科玉律:“它只是JavaScript!” 这句话是本书的精髓。作者Trevor Burnham通过一个贯穿全书的5×5拼字游戏,从基础开始,将CoffeeScript各方面的知识讲解得通俗易懂,如何与jQuery这类非常流行的类库完美集成,如何游刃有余地结合Socket.IO实现Node.js双通道异步通信。JavaScript能做的事情,CoffeeScript也可以,而且做起来更快、更优雅! 想要站在JavaScript开发和Web开发的最前沿吗?这本书正好适合你! 感谢图灵公司引进本书,并给了我翻译的机会。感谢傅志红老师、李松峰老师和李鑫老师,在翻译过程中给予我诸多帮助和鼓励。感谢图灵社区的朋友,他们在阅读样章之后给了我很多反馈。感谢大众点评网尤其是前端团队在翻译过程中对我的理解和支持。感谢Jeremy Ashkenas设计了这门优雅的语言,还要感谢本书作者Trevor Burnham耐心为我解答原文中我不懂的地方。 最后还要感谢我的爸爸、妈妈和女友吴竞男,谢谢你们的支持和理解。尤其是小吴,算是我译稿的第一个读者,谢谢你的诸多批评和建议。 寸志 2012年2月27日