CoffeeScript
編程範型 | 編程範型:基於原型,函數式,指令式,指令碼 |
---|---|
設計者 | Jeremy Ashkenas |
實作者 | Jeremy Ashkenas等數人 |
釋出時間 | 2009年 |
目前版本 | |
作業系統 | 跨平台 |
特許條款 | MIT特許條款 |
副檔名 | .coffee |
網站 | coffeescript |
啟發語言 | |
Haskell、[3]JavaScript、Perl、Python、[3]Ruby,[3]YAML[4] | |
影響語言 | |
MoonScript[5], LiveScript, JavaScript |
CoffeeScript是一套JavaScript的轉譯語言。受到Ruby、Python與Haskell等語言的啟發[3],CoffeeScript增強了JavaScript的簡潔性與可讀性。此外,CoffeeScript也新增了更複雜的功能,例如列表推導式、並列賦值等。一般來說,CoffeeScript可以在不影響執行效能的情況下,縮短約三分之一的程式碼長度[6]。
CoffeeScript支援包含在了Ruby on Rails版本3.1[7]和Play Framework[8]之中。在2011年,JavaScript主要創造者布蘭登·艾克聲稱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]」提供雙向轉譯的功能。
參照資料
[編輯]- ^ 1.0 1.1 2.7.0. 2022年4月24日 [2022年8月9日].
- ^ https://registry.npmjs.com/coffeescript; 檢索日期: 2023年3月1日.
- ^ 3.0 3.1 3.2 3.3 The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas (頁面存檔備份,存於互聯網檔案館), July 23, 2010
- ^ Heller, Martin. Turn up your nose at Dart and smell the CoffeeScript. JavaWorld (InfoWorld). 18 October 2011 [2012-02-09]. (原始內容存檔於2012-02-10).
- ^ MoonScript-A programmer friendly language that compiles to Lua. [2012-04-28]. (原始內容存檔於2021-06-04).
- ^ Read Write Hack. Interview with Jeremy Ashkenas (頁面存檔備份,存於互聯網檔案館), Jan 7, 2011
- ^ Josh Peek. Tweet by Rails Core Team Member. April 13, 2011 [2020-09-18]. (原始內容存檔於2013-11-07).
- ^ AssetsCoffeeScript - 2.5.x. 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).
- ^ Coffee Maven Plugin. [2012-04-28]. (原始內容存檔於2016-01-31).
- ^ js2coffee/js2coffee: Compile JavaScript to CoffeeScript. GitHub. js2coffee. 2022-11-08 [2022-11-18]. (原始內容存檔於2022-11-18).
外部連結
[編輯]- 教學檔案