CoffeeScript

出自Local Chinese Wikipedia
跳至導覽 跳至搜尋
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). 

    外部連結[編輯]

    教學檔案