CoffeeScript

CoffeeScript是一套JavaScript的转译语言。受到RubyPythonHaskell等语言的启发[3],CoffeeScript增强了JavaScript的简洁性与可读性。此外,CoffeeScript也添加了更复杂的功能,例如列表推导式并行赋值等。一般来说,CoffeeScript可以在不影响运行性能的情况下,缩短约三分之一的代码长度[6]

CoffeeScript
编程范型基于原型函数式指令式脚本
设计者Jeremy Ashkenas
实作者Jeremy Ashkenas等数人
2009年2009
当前版本
  • 2.7.0 (2022年4月24日;稳定版本)[1][2]
操作系统跨平台
许可证MIT许可证
文档扩展名.coffee
网站coffeescript.org
启发语言
Haskell[3]JavaScriptPerlPython[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 AshkenasGit上对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, switchfor等。这些控制陈述句也有后缀的版本。

CoffeeScript的一般原则,是可以省略许多不必要的括号和大括号,可以使用缩进来取代。可以以隐喻方式调用函数(在JavaScript中调用函数所需的括号可以被省略),对象文本通常可以自动侦测。

范例

一个使用jQuery的普通JavaScript代码如下:

$(document).ready(function() {
  // 这里是初始化的代码
});

或可以更省略:

$(function() {
  // 这里是初始化的代码
});

在CoffeeScript里,function关键字可用->符号来取代,结尾的分号也可用缩进来表示,如同PythonHaskell缩进语言越位规则一样。此外,大括号通常也可以省略。因此上述的代码在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]」提供双向转译的功能。

引用数据

  1. . 2022年4月24日 [2022年8月9日].
  2. https://registry.npmjs.com/coffeescript; 检索日期: 2023年3月1日.
  3. The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas 页面存档备份,存于, July 23, 2010
  4. Heller, Martin. . JavaWorld (InfoWorld). 18 October 2011 [2012-02-09]. (原始内容存档于2012-02-10).
  5. . [2012-04-28]. (原始内容存档于2021-06-04).
  6. Read Write Hack. Interview with Jeremy Ashkenas 页面存档备份,存于, Jan 7, 2011
  7. Josh Peek. . April 13, 2011 [2020-09-18]. (原始内容存档于2013-11-07).
  8. . www.playframework.com. [2016-10-31]. (原始内容存档于2017-09-09).
  9. Eich, Brendan. "Harmony of My Dreams 页面存档备份,存于"
  10. Eich, Brendan. "My JSConf.US Presentation 页面存档备份,存于"
  11. Github. 'initial commit of the mystery language' 页面存档备份,存于
  12. Hacker News. CoffeeScript 1.0.0 announcement 页面存档备份,存于 posted by Jeremy Ashkenas on Dec 24, 2010
  13. Hacker News. Original CoffeeScript announcement 页面存档备份,存于 posted by Jeremy Ashkenas on Dec 24, 2009
  14. . [2012-04-28]. (原始内容存档于2009-12-27).
  15. . [2012-04-28]. (原始内容存档于2016-01-31).
  16. . GitHub. js2coffee. 2022-11-08 [2022-11-18]. (原始内容存档于2022-11-18).

外部链接

教学文档

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.