CoffeeScript

CoffeeScript是一套JavaScript的轉譯語言。受到Ruby、Python與Haskell等語言的啟發，CoffeeScript增強了JavaScript的簡潔性與可讀性。此外，CoffeeScript也新增了更複雜的功能，例如列表推导式、并行赋值等。一般來說，CoffeeScript可以在不影響執行效能的情況下，縮短約三分之一的程式碼長度。

CoffeeScript支持包含在了Ruby on Rails版本3.1和Play Framework之中。在2011年，Brendan Eich声称CoffeeScript影响了他对JavaScript未来的思考。

歷史 
2009年12月3日，在Git上對CoffeeScript做出了第一筆提交「這是這個神秘語言最初的提交。（initial commit of the mystery language.）」當時的編譯器由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也是當時此專案第一次發表的網站。

語法 
許多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的環境中使用。此外，可以使用Coffee Maven Plugin作為Node.js之外的替代方案，這是Apache Maven建置工具的外掛，由Rhino JavaScript引擎並以Java語言寫成。

在CoffeeScript.org官方網站的選單上有「Try CoffeeScript」按鈕，可以讓使用者直接輸入CoffeeScript程式碼並直接在瀏覽器上編譯成JavaScript。另外一個網站「jscoffee」提供雙向轉譯的功能。

引用資料

外部連結 
 
 中国官网
 GitHub專案
教學文件
 中文文档
 CoffeeScript Cookbook
 The Little Book on CoffeeScript（簡體中文版）
 Smooth CoffeeScript

JavaScript
基于原型的编程语言
使用MIT许可证的软件
2009年建立的程式語言