The Little Book on CoffeeScript - 简介

公冶才
2023-12-01
本文译自The Little Book on CoffeeScript的第1章。该书是GitHub上的一个开源项目,采用MIT授权协议。遂将其翻译过来,以便方便更多人接触CoffeeScript,沿用MIT授权协议。译文有不妥之处,请指正。

CoffeeScirpt是什么?

CoffeeScript是一门小巧的语言,会编译为JavaScript。它的语法风格受到了Ruby和Python影响,很多特性都借鉴于这两种语言。我们写作本书的目的在于帮助你学习CoffeeScript,明白最佳实践是什么,以及帮助你开始创建有意思的客户端程序。这本书很小,仅仅只有五章,但是对与CoffeeScript这门小语言来说已足够。

这本书是完全开源的,作者是Alex MacCaw (或者 @maccman),David GriffithsSatoshi Murakami Jeremy Ashkenas也做了不小的贡献。

如果你有任何勘误和建议,千万别吝啬到本书的GitHub page发个ticket。或许你们还对我的另外一本书感JavaScript Web Applications by O'Reilly兴趣,我在该书中对富JavaScript应用以及如何把状态转移到客户端进行了探索。

好了,开始我们的CoffeeScript探索之旅吧。为什么CoffeeScript要比原生的JavaScript好?首先,能够少写代码——CoffeeScript非常简洁,充分地利用空格。以我的经验来看,比起纯JavaScript的话,它能减少三分之一到一半的代码量。还有,CoffeeScript开有一些优雅的特性,比方说列表解析、原型符号别名和类等等,能够有效的减少需要你的输入。

更重要的是,JavaScript有很多不为人知的 秘密,这些秘密往往让无经验的开发者摔跤。CoffeeScript有原则地选择了一些JavaScript的特性,巧妙地避开了这些不足,解决了该语言的怪癖。

CoffeeScript*不是*JavaScript的超集,因此尽管你可以在CoffeeScript中的使用外部的JavaScript类库,但是如果你在没有转化之前而直接编译当前的JavaScript的话,会出现语法错误。编译器会把CoffeeScript代码转化为相对于的JavaScript,这样在运行时就不需要解释了。

首先澄清一些误解。由于处理运行时错误需要JavaScript相关的知识,要写CoffeeScript就得了解JavaScript。但是话说回来,运行时错误通常比较明显,并且到目前位置,我没觉得从JavaScript映射到CoffeeSCript会有什么问题。第二个问题是我经常听到CoffeeScript相关的话题是速度。即,CoffScript编译后的JavaScript运行起来相比与之等价的纯JavaScript代码要慢。但实际情况证明并不是问题。CoffeeScript看起来与徒手写的JavaScript代码运行速度相当,甚至更快。

CoffeeScript的劣势是什么?是的,在你和JavaScript之间介多了编译这一步。CoffeeScript也在尝试尽力通过产生优雅的可读性强的JavaScript,以及在服务器端集成自动编译来弥补这个问题。另外一个缺陷是,作为一个新的语言,事实上现阶段社区也还比较小,想找个懂这门语言的合伙人会花费你的大量你的时间。当然,CoffeeScript发展迅猛,相关的IRC列表也是人才济济,如果你有什么问题的话,都会得到迅速的解答。

CoffeeScript的用途并不仅限于浏览器,把它用在JavaScript实现的服务端也非常不错,比方说在 Node.js上。还有,CoffeeScript越来越广泛,有更多的集成,比方说它已经是Rails3.1的标配。现在正是进入CoffeeScript学习的时机。你现在为学习这门语言付出的时间在以后会以为你节约大量的时间作为回报的。

初始化安装

一种尝试这个类库最简单的方式就是直接在浏览器中使用它,访问http://coffeescript.org,点击*Try CoffeeScript*标签。这个网站使用浏览器版的CoffeeScript编译器,把在左边面板任意输入的CoffeeScript代码编译为JavaScriprt后显示在右边的面板中。

你也可以使用coffee2js项目把JavaScript转变为CoffeeScirpt。这在把JavaScript项目迁移到CoffeeScript上时尤其有用。

实际上,你自己都可以使用基于浏览器的CoffeeScirpt编译器,只需要在页面中包含这个脚本,使用正确类型(type)的标标签记CoffeeScript脚本即可。

 



显然,在生产环境中,由于会减慢客户端的运行,所以没人愿意在运行时解释执行CoffeeScript。作为替代,CoffeeScript提供了一个Node.js版的编译器来对CoffeeScript文件进行预处理。

要安装该编译器,首先必须保证你已经有了稳定可用的Node.jsnpm(Node程序包管理工具)。然后你就可以使用npm来安装CoffeeScirpt了:

npm install -g coffee-script 

这同时还为你提供了一个coffee的可执行二进制程序,如果不用任何命令行参数而直接运行该程序,它会给你一个CoffeeScript的命令行,这个命令行你可以用来快速的运行一些CoffeeScript语句。要预处理文件的话,使用--compile参数:

coffee --compile my-script.coffee 

如果没有指定--output参数,CoffeeScript会直接将编译后的代码写入到一个同名的JavaScript文件中,本例中就是my-script.js。已存在该文件的话会被复写掉,因此要当心你的JavaScript文件被覆盖。使用--help参数可以看到一个完整的可用命令行参数列表。

就如你在之前看到的一样,CoffeeScirpt文件的默认扩展名是.coffee,除去其他原因之外,能让像TextMate这样的编译器能够辨认出文件中包含的是什么语言的代码从而是用相对应的高亮也是其中之一。TextMate并不包含对CoffeeScript的支持,但是你可以安装这个来提供支持。

编译看起来既不方便又很无聊。没办法,它就是这样。我们将会学习通过自动编译的方法来解决这个问题,不过首先我们先学习一下这门语言的语法。

 类似资料: