CoffeeScript
CoffeeScript是一套JavaScript的转译语言。受到Ruby、Python与Haskell等语言的启发[3],CoffeeScript增强了JavaScript的简洁性与可读性。此外,CoffeeScript也添加了更复杂的功能,例如列表推导式、并行赋值等。一般来说,CoffeeScript可以在不影响运行性能的情况下,缩短约三分之一的代码长度[6]。
![]() | |
编程范型:基于原型,函数式,指令式,脚本 | |
设计者 | Jeremy Ashkenas |
实作者 | Jeremy Ashkenas等数人 |
2009年 | |
当前版本 | |
操作系统 | 跨平台 |
许可证 | MIT许可证 |
文档扩展名 | .coffee |
网站 | coffeescript |
启发语言 | |
Haskell、[3]JavaScript、Perl、Python、[3]Ruby,[3]YAML[4] | |
影响语言 | |
MoonScript[5], LiveScript, JavaScript |
CoffeeScript支持包含在了Ruby on Rails版本3.1[7]和Play Framework[8]之中。在2011年,Brendan Eich声称CoffeeScript影响了他对JavaScript未来的思考[9][10]。
历史
2009年12月3日,Jeremy Ashkenas在Git上对CoffeeScript做出了第一笔提交「这是这个神秘语言最初的提交。(initial commit of the mystery language.)」[11]当时的编译器由Ruby语言所写成。在同年12月24日,Ashkenas做出了第一个上标签与归档的版本-0.1.0。2010年2月21日,他发布了0.5版,此版本将原先由Ruby撰写的编译器改写为纯CoffeeScript撰写。当时吸引了GitHub上的许多贡献者,每日约有300人次造访该项目的页面。2010年12月24日,Askenas发布了1.0.0稳定版本,并在Hacker News上发表。Hacker News也是当时此项目第一次发表的网站。[12][13]
语法
许多JavaScript的陈述句皆可在CoffeeScript中视为表达式。例如,if
, switch
与for
等。这些控制陈述句也有后缀的版本。
CoffeeScript的一般原则,是可以省略许多不必要的括号和大括号,可以使用缩进来取代。可以以隐喻方式调用函数(在JavaScript中调用函数所需的括号可以被省略),对象文本通常可以自动侦测。
范例
一个使用jQuery的普通JavaScript代码如下:
$(document).ready(function() {
// 这里是初始化的代码
});
或可以更省略:
$(function() {
// 这里是初始化的代码
});
在CoffeeScript里,function
关键字可用->
符号来取代,结尾的分号也可用缩进来表示,如同Python、Haskell等缩进语言的越位规则一样。此外,大括号通常也可以省略。因此上述的代码在CoffeeScript中可写成如下的形式。
$(document).ready ->
# 这里是初始化的代码
或
($ document).ready ->
# 这里是初始化的代码
又或者
$ ->
# 这里是初始化的代码
编译
CoffeeScript的编译器在0.5版本之后由CoffeeScript本身写成,为Node.js里的一个工具程序。但内核代码并不依赖Node.js,且可直接在任何支持JavaScript的环境中使用。[14]此外,可以使用Coffee Maven Plugin[15]作为Node.js之外的替代方案,这是Apache Maven建置工具的插件,由Rhino JavaScript引擎并以Java语言写成。
在CoffeeScript.org官方网站的菜单上有「Try CoffeeScript」按钮,可以让用户直接输入CoffeeScript代码并直接在浏览器上编译成JavaScript。另外一个网站「jscoffee[16]」提供双向转译的功能。
引用数据
- . 2022年4月24日 [2022年8月9日].
- https://registry.npmjs.com/coffeescript; 检索日期: 2023年3月1日.
- The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas (页面存档备份,存于), July 23, 2010
- Heller, Martin. . JavaWorld (InfoWorld). 18 October 2011 [2012-02-09]. (原始内容存档于2012-02-10).
- . [2012-04-28]. (原始内容存档于2021-06-04).
- Read Write Hack. Interview with Jeremy Ashkenas (页面存档备份,存于), Jan 7, 2011
- Josh Peek. . April 13, 2011 [2020-09-18]. (原始内容存档于2013-11-07).
- . www.playframework.com. [2016-10-31]. (原始内容存档于2017-09-09).
- Eich, Brendan. "Harmony of My Dreams (页面存档备份,存于)"
- Eich, Brendan. "My JSConf.US Presentation (页面存档备份,存于)"
- Github. 'initial commit of the mystery language' (页面存档备份,存于)
- Hacker News. CoffeeScript 1.0.0 announcement (页面存档备份,存于) posted by Jeremy Ashkenas on Dec 24, 2010
- Hacker News. Original CoffeeScript announcement (页面存档备份,存于) posted by Jeremy Ashkenas on Dec 24, 2009
- . [2012-04-28]. (原始内容存档于2009-12-27).
- . [2012-04-28]. (原始内容存档于2016-01-31).
- . GitHub. js2coffee. 2022-11-08 [2022-11-18]. (原始内容存档于2022-11-18).
外部链接
- 教学文档
- 中文文档(页面存档备份,存于)
- CoffeeScript Cookbook
- The Little Book on CoffeeScript(页面存档备份,存于)(简体中文版)
- Smooth CoffeeScript(页面存档备份,存于)