CoffeeScript

维基百科,自由的百科全书
跳转到导航 跳转到搜索
CoffeeScript
File:CoffeeScript-logo.svg
编程范型编程范型基于原型函数式指令式脚本
设计者Jeremy Ashkenas
实现者Jeremy Ashkenas等数人
发行时间2009年,​17年前​(2009
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统跨平台
    许可证MIT许可证
    文件扩展名.coffee
    网站coffeescript.org
    受影响于
    Haskell[1]JavaScriptPerlPython[1]Ruby,[1]YAML[2]
    影响语言
    MoonScript[3], LiveScript, JavaScript

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

    CoffeeScript支持包含在了Ruby on Rails版本3.1[5]Play Framework[6]之中。在2011年,JavaScript主要创造者布兰登·艾克声称CoffeeScript影响了他对JavaScript未来的思考[7][8]

    历史[编辑]

    2009年12月3日,Jeremy Ashkenas英语Jeremy AshkenasGit上对CoffeeScript做出了第一笔提交:“神秘语言最初的提交。(initial commit of the mystery language.)”[9]当时的编译器由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也是当时此项目第一次发表的网站。[10][11]

    语法[编辑]

    许多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的环境中使用。[12]此外,可以使用Coffee Maven Plugin[13]作为Node.js之外的替代方案,这是Apache Maven建置工具的外挂,由Rhino JavaScript引擎并以Java语言写成。

    在CoffeeScript.org官方网站的菜单上有“Try CoffeeScript”按钮,可以让用户直接输入CoffeeScript代码并直接在浏览器上编译成JavaScript。另外一个网站“jscoffee[14]”提供双向转译的功能。

    引用资料[编辑]

    1. ^ 1.0 1.1 1.2 1.3 The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas页面存档备份,存于互联网档案馆), July 23, 2010
    2. ^ Heller, Martin. Turn up your nose at Dart and smell the CoffeeScript. JavaWorld (InfoWorld). 18 October 2011 [2012-02-09]. (原始内容存档于2012-02-10). 
    3. ^ MoonScript-A programmer friendly language that compiles to Lua. [2012-04-28]. (原始内容存档于2021-06-04). 
    4. ^ Read Write Hack. Interview with Jeremy Ashkenas页面存档备份,存于互联网档案馆), Jan 7, 2011
    5. ^ Josh Peek. Tweet by Rails Core Team Member. April 13, 2011 [2020-09-18]. (原始内容存档于2013-11-07). 
    6. ^ AssetsCoffeeScript - 2.5.x. www.playframework.com. [2016-10-31]. (原始内容存档于2017-09-09). 
    7. ^ Eich, Brendan. "Harmony of My Dreams页面存档备份,存于互联网档案馆)"
    8. ^ Eich, Brendan. "My JSConf.US Presentation页面存档备份,存于互联网档案馆)"
    9. ^ Github. 'initial commit of the mystery language'页面存档备份,存于互联网档案馆
    10. ^ Hacker News. CoffeeScript 1.0.0 announcement页面存档备份,存于互联网档案馆) posted by Jeremy Ashkenas on Dec 24, 2010
    11. ^ Hacker News. Original CoffeeScript announcement页面存档备份,存于互联网档案馆) posted by Jeremy Ashkenas on Dec 24, 2009
    12. ^ 存档副本. [2012-04-28]. (原始内容存档于2009-12-27). 
    13. ^ Coffee Maven Plugin. [2012-04-28]. (原始内容存档于2016-01-31). 
    14. ^ js2coffee/js2coffee: Compile JavaScript to CoffeeScript. GitHub. js2coffee. 2022-11-08 [2022-11-18]. (原始内容存档于2022-11-18). 

    外部链接[编辑]

    教学文件